Skip to main content

ash_ai CVE-2026-78230

| EUVDEUVD-2026-72924 MEDIUM
Insufficient Granularity of Access Control (CWE-1220)
2026-09-08 EEF
6.0
CVSS 4.0 · Vendor: EEF
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate as low-privilege actor with tool access
  2. Delivery
    Identify restricted public field by name (e.g., salary, ssn)
  3. Exploit
    Invoke ash_ai read tool with aggregate result_type (min or max) over target field
  4. Execution
    Tool skips field-policy check, computes aggregate via Ash.Query.Aggregate
  5. Impact
    Receive 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

ash_ai 0.1.0 <1.0.3
ash_ai 2ba234b50946a3b8116190c8467f9f4dfa5edce7 <9c02de581625c342c9870a672830bff28c1d701e

Affected Packages

euvd ash_ai fix: 1.0.3

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

Vendor (EEF) PRIMARY 6.0 MEDIUM
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
vuln.today AI 5.3 MEDIUM

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.

3.1 AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N
4.0 AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (EEF).

CVSS VectorVendor: EEF

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

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

EPSS Score
0.2%
Top 84% exploitable
Prevalence
Rare
niche Elixir LLM-integration library, minimal enterprise footprint
Data Quality
4 sources
Confidence: Medium

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

30
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +30
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy