Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privilege actor with tool access
-
DeliveryIdentify restricted public field by name (e.g., salary, ssn)
-
ExploitInvoke ash_ai read tool with aggregate result_type (min or max) over target field
-
ExecutionTool skips field-policy check, computes aggregate via Ash.Query.Aggregate
-
ImpactReceive actual restricted field value in response
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V8 - Authorization Insufficient granularity of access control
|
| Exploitation Conditions | Two specific conditions must both be true: (1) the deployment uses ash_ai's read tool to expose at least one Ash resource to LLM tool calls (ash_ai 0.1.0-1.0.3 must be installed and the read tool must be wired up); and (2) Ash field policies must be configured to restrict specific fields for at least one actor role - the bypass only yields unauthorized data when a field policy would have redacted a value for the calling actor. The attacker must have low-privilege authenticated access sufficient to invoke the LLM tool (PR:L). The attack is limited to fields that are marked public? true but actor-restricted by policy; fully private fields (public? false) are rejected by the existing public-field check. No special network position is required beyond ability to send tool-call requests. |
| Impact | Real-world risk is moderate and tightly scoped. The CVSS 4.0 score of 6.0 with vector AV:N/AC:L/AT:P/PR:L reflects the key constraints: the attack requires low-privilege authenticated access (PR:L) and a specific deployment precondition (AT:P) - field policies must be configured to restrict particular fields for the calling actor, which is a non-default configuration requiring deliberate policy authorship. Without field policies, there is nothing to bypass. Confidentiality impact is high (VC:H) when conditions are met, since min/max aggregates return actual field values that would otherwise be redacted, making PII exfiltration realistic. No CISA KEV listing exists and no public exploit code has been identified, keeping practical exposure low for now. EPSS data was not provided. The affected library is niche (Elixir/LLM integrations), but deployments that do use ash_ai to expose sensitive Ash resources to LLM workflows while relying on field policies for data segregation should treat patching as urgent - those are exactly the high-value targets where the bypass matters most. |
| Exploit ScenarioDerived | An authenticated actor with restricted field policies - for example, a customer service agent whose field policy blocks access to the salary or ssn field - invokes the ash_ai LLM read tool requesting result_type aggregate with kind 'min' or 'max' over the restricted field name. The tool bypasses field-policy evaluation, computes and returns the actual field value from the database, and the actor receives sensitive PII they are not authorized to view. No exploit code has been publicly released, but the technique is straightforward for any caller aware of the aggregate API. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 08, 2026
Field policy bypass in ash_ai (versions 0.1.0 through < 1.0.3) allows authenticated, low-privilege actors to read per-actor-restricted fields - including sensitive PII - by invoking the aggregate result type (min, max, sum, avg) via the LLM read tool instead of direct record retrieval. Ash field policies redact forbidden fields on returned records by substituting %Ash.ForbiddenField{}, but this redaction mechanism was never applied to aggregate code paths; the tool's authorization check only tested field.public?, a static attribute orthogonal to per-actor policy evaluation. Patch version 1.0.3 is available via the vendor advisory; no CISA KEV listing or public exploit code has been identified at time of analysis.
RemediationAI
Upgrade ash_ai to version 1.0.3 or later, which incorporates the field-policy authorization check in the aggregate code path (patch commit 9c02de581625c342c9870a672830bff28c1d701e, advisory GHSA-v5rw-36x5-r5vx at https://github.com/ash-project/ash_ai/security/advisories/GHSA-v5rw-36x5-r5vx). If an immediate upgrade is not possible, a compensating control is to disable or restrict access to the aggregate result_type argument in the LLM tool configuration so that only run_query, count, or exists are permitted - this eliminates the min/max/sum/avg bypass paths without disabling the tool entirely, though it reduces LLM query capability. Alternatively, remove actor-sensitive resources from the ash_ai tool exposure surface until patched.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
ash_ai is an Elixir/OTP extension for the Ash resource framework (ash-project) that bridges Ash read actions to language-model tool calls. The affected CPE is cpe:2.3:a:ash-project:ash_ai:*:*:*:*:*:*:*:* for versions 0.1.0 through < 1.0.3. Ash implements per-actor field-level authorization through field policies; when a policy denies access, the field value on a returned record is replaced with %Ash.ForbiddenField{} rather than raising an error. The newly introduced aggregate result type (min, max, sum, avg, count) constructs an Ash.Query.Aggregate over a named field and returns its raw value via Ash.aggregate/2. Because this code path bypassed Ash's field-policy evaluation and only checked field.public?, a caller could extract actual field values - min and max of a restricted field are actual data values, not sanitized aggregates - for any field that is public but actor-restricted. CWE-1220 (Insufficient Granularity of Access Control) is the accurate root cause classification: authorization was present but operated on an insufficient control axis (publicity vs. per-actor policy). The fix, in commit 9c02de581625c342c9870a672830bff28c1d701e, authorizes the aggregated field against the resource's field policies before allowing the aggregate to proceed.
Know when Ash Ai gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
Requires field policies to be actively configured and actor authenticated; AC:H for deployment prerequisite; C:H for restricted-field value exposure; no integrity or availability impact.
Primary rating from Vendor (EEF).
CVSS VectorVendor: EEF
DescriptionCVE.org
AshAi exposes Ash read actions to language-model tool calls. The read tool accepts an aggregate result type (min, max, sum, avg) that builds an ad-hoc Ash.Query.Aggregate over a named field and returns its raw value.
Ash field policies redact forbidden fields on returned records (replacing them with %Ash.ForbiddenField{}), but that redaction does not apply to aggregate values. A tool caller could therefore read a field the calling actor's field policies forbid by requesting it as an aggregate; min/max in particular return an actual field value. This includes fields that are public? true but restricted per-actor by a field policy, such as sensitive PII. The tool's existing check only required the field to be public, which is a separate axis from per-actor field-policy authorization.
The fix authorizes the aggregated field against the resource's field policies, so aggregating over a field the actor may not see is refused or scoped to the rows where it is visible.
This issue affects ash_ai: from 0.1.0 before 1.0.3.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Remote code execution in ash_ai (versions 0.1.0 through pre-1.0.0) allows unauthenticated network attackers to execute a
DNS-rebinding protection in AshAi.Mcp.Server (ash_ai 0.8.0-0.x) is bypassable because the default origin check trusts th
Authorization bypass in AshAi (ash_ai) versions 0.6.0 through pre-1.0.0 allows any authenticated tool caller to update o
Credential leakage in ash_ai (versions 0.1.0 through before 1.0.0) exposes embedding provider API keys and request inter
Infinite-loop denial-of-service in ash_ai's ToolLoop component (versions 0.6.0 through <1.0.0) allows an attacker who ca
Unfiltered exception serialization in ash_ai 0.6.0-0.x leaks internal application details - database schema, raw SQL fra
EUVD-2026-72924
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB