CVE-2026-82564
Description
Authorization Bypass Through User-Controlled Key vulnerability in ash-project ash_ai allows a caller of an identity-configured tool to update or destroy records it never identified, including every row in the table. In AshAi.Tool.Execution, identity_filter/3 built the update/destroy filter directly from the raw tool arguments as [{key, Map.get(arguments, to_string(key))}] and passed it to Ash.Query.do_filter/2. A map value is parsed as a predicate expression rather than a literal, so a caller can send {"public_ref": {"not_eq": "<own-ref>"}} and, combined with Ash.Query.limit(1) and Ash.bulk_update!/Ash.bulk_destroy!, retarget the write at a record it never identified; an omitted key yields an IS NULL filter that matches an arbitrary row. The fix casts each identity value to the field type, rejecting non-scalar inputs. This issue affects ash_ai: from 0.6.0 before 1.0.0.
How to fix
- ash-project ash_ai1.0.0, 87f616d5bfbf7af43346f0701ae17f853789a602 or later
Affected products
| Product | Affected versions | Fixed in |
|---|---|---|
| ash-project ash_ai | 0.6.0 ≤ v < 1.0.0, bc2122f78fca6c11d8ec2b9ac53148ec17476460 ≤ v < 87f616d5bfbf7af43346f0701ae17f853789a602 | 1.0.0, 87f616d5bfbf7af43346f0701ae17f853789a602 |
Check your version
Choose the product and enter the version you run to see whether it falls in the affected range.
Attack Surface Management
See the assets tied to your domains, the technologies they run and known vulnerabilities in one list.