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.
Published: 2026-08-31
Score: 7.1 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The vulnerability arises because the identity tool filter in AshAi.Tool.Execution constructs the filter directly from raw tool arguments as [{key, Map.get(arguments, to_string(key))}]. When a caller supplies a map value as a predicate expression rather than a literal—e.g. {"public_ref": {"not_eq": "<own-ref>"}}—the system interprets it as a filter condition. By combining this with Ash.Query.limit(1) and bulk update or destroy operations, an attacker can target a record they never identified, including any arbitrary row where the key is null or the value does not match. This allows unauthorized modification or deletion of data, leading to loss of data integrity and potential data loss. The weakness is identified as CWE‑639, an Authorization Bypass Through User‑Controlled Key.

Affected Systems

The vulnerability affects the ash-project ash_ai software. Affected releases include all versions from 0.6.0 up to, but not including, 1.0.0.

Risk and Exploitability

The CVSS score of 7.1 indicates a high severity vulnerability. EPSS data is not available, but the lack of a KEV listing means no known large‑scale exploitation has been documented yet. The likely attack vector is through any interface that allows a caller to supply tool arguments—the attacker can craft operator maps that are interpreted as filter predicates. Successful exploitation requires the attacker to invoke the identity‑configured tool with appropriate privileges, but because the vulnerability lies in the filter construction, it does not require elevated permissions beyond the tool’s normal execution rights. Once the filter is manipulated, the attacker can perform bulk updates or deletes against arbitrary records. Mitigation through patching is strongly recommended to eliminate this authorization bypass.

Generated by OpenCVE AI on August 31, 2026 at 02:22 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade ash‑ai to version 1.0.0 or later, which casts identity values to the field type and rejects non‑scalar inputs.
  • If immediate upgrade is not possible, restrict the arguments passed to identity‑configured tools to scalar values only and disallow operator map syntax.
  • Limit exposure of identity‑configured tool execution to trusted users and implement least‑privilege controls so that only authorized personnel can invoke bulk update or delete operations.

Generated by OpenCVE AI on August 31, 2026 at 02:22 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Mon, 31 Aug 2026 01:45:00 +0000

Type Values Removed Values Added
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.
Title Identity tool filter in AshAi accepts operator maps, allowing update or destroy of unidentified records
First Time appeared Ash-project
Ash-project ash Ai
Weaknesses CWE-639
CPEs cpe:2.3:a:ash-project:ash_ai:*:*:*:*:*:*:*:*
Vendors & Products Ash-project
Ash-project ash Ai
References
Metrics cvssV4_0

{'score': 7.1, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:H/VA:N/SC:N/SI:N/SA:N'}


Subscriptions

Ash-project Ash Ai
cve-icon MITRE

Status: PUBLISHED

Assigner: EEF

Published:

Updated: 2026-08-31T01:06:00.526Z

Reserved: 2026-08-30T20:00:01.856Z

Link: CVE-2026-82564

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-08-31T02:17:02.103

Modified: 2026-08-31T02:17:02.103

Link: CVE-2026-82564

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-31T02:30:18Z

Weaknesses
  • CWE-639

    Authorization Bypass Through User-Controlled Key