Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate to AshGraphql-exposed API
-
ExploitQuery through-relationship field with limit:1
-
ExecutionIncrement offset to skip source-link filter
-
ImpactRead and enumerate unauthorized destination records
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization logic validation
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires the affected resource to declare a |
| Impact | This is a medium-severity authorization flaw (CVSS 4.0 base 6.0). The CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:N/VA:N) describes a network-reachable, low-complexity information-disclosure issue that requires low privileges (PR:L - an authenticated client) and carries an attack requirement (AT:P) reflecting the specific through-relationship configuration and caller-controlled limit:1 path needed to trigger it. Impact is confidentiality-only; there is no integrity or availability effect (VI:N/VA:N). No EPSS score was supplied, the CVE is not listed in CISA KEV, and no public exploit identified at time of analysis (references are the vendor advisory and patch commits, not exploit code). The vuln.today decision label is 'this_month', consistent with a real but non-emergency fix priority rather than act_now/emergency. Net read: a legitimate authorization-bypass that an authenticated, API-enabled client can abuse for bounded data enumeration, but it is gated behind a non-default resource/policy configuration and requires an existing authenticated session - so it is a scheduled-remediation item, not a drop-everything issue. Note the signals are internally consistent (no KEV/EPSS conflict), but EPSS is simply absent rather than low. |
| Exploit ScenarioDerived | An authenticated client with access to a GraphQL field backed by a |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 25, 2026
An incorrect authorization flaw in the Elixir Ash framework (versions 3.24.0 up to but not including 3.37.1) lets an authenticated client read destination records that are unrelated to the source record when a through relationship is loaded for a single record with a caller-controlled limit: 1 and optional offset. The vulnerable path in lateral_join?/4 skips the filter that ties the destination back to the source, so a client paging a field such as teachers(limit: 1, offset: n) through AshGraphql can walk through destination records that the destination's policies only permit when reached via that relationship. Exploitation requires an authenticated session and a deployment that exposes such a through relationship to caller-controlled paging while relying on accessing_from in destination read policies; no public exploit was identified at time of analysis, and the vendor has released a fix in 3.37.1.
RemediationAI
Upgrade the ash dependency to 3.37.1, the version in which this is fixed per the vendor advisory (https://github.com/ash-project/ash/security/advisories/GHSA-g2h4-xp57-q863); the fix is carried in the upstream commits https://github.com/ash-project/ash/commit/e37463307304b26bc8fd606322e5c4d8f7f060e5 (patch) and https://github.com/ash-project/ash/commit/24f41e23dcbd9d07cde270a8141490e8f79251f5. Where an immediate upgrade is not possible, the exposure described in the advisory can be narrowed by removing caller control over limit/offset on through relationship fields (for example relationship arguments surfaced by AshGraphql), so that a through relationship is no longer loaded for a single record with an attacker-chosen limit of 1 or offset; the trade-off is loss of client-side paging on those fields. Alternatively, review destination resource read policies so that access does not depend on the relationship being reached via accessing_from (or is not otherwise open to the caller) for any resource that is the destination of a through relationship, noting that this changes authorization semantics for legitimate relationship-based reads and must be tested per policy.
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 is an Elixir application framework that models resources and their relationships, with authorization expressed as policies over reads, writes and relationship traversal. A through: relationship (for example through: [:classrooms, :teachers]) is a convenience declaration that transparently traverses intermediate relationships to reach a destination resource. This issue is CWE-863 (Incorrect Authorization): in lib/ash/actions/read/relationships.ex, the lateral_join?/4 decision could, for a has_many through relationship loaded on a single record with limit: 1, or an unsorted has_one through relationship loaded with limit: 1, select the code path that reads the destination resource without any filter linking it to the source record. The read still executes the destination resource's policies, but it carries the relationship as accessing_from - the mechanism policies use to widen or narrow access when a record is reached through a relationship. Consequently, any data a client pages via a relationship argument such as limit: 1, offset: n (as exposed by AshGraphql relationship field arguments) is authorized as though it were reached through the source record, allowing enumeration of destination records the source does not actually own or link to. The accompanying upstream change also reworks authorization filter path expansion in lib/ash/actions/read/read.ex (expand_path_with_through/2), expanding through relationships into their concrete component paths so authorization filters are applied at the correct relationship path. The trigger conditions beyond the limit: 1 load are not further described in the available sources.
Know when Ash 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
Network API reachable by an authenticated low-privilege client (PR:L), low complexity once the vulnerable through-relationship field is exposed; confidentiality-only enumeration (C:H) with no integrity or availability impact and no scope change.
Primary rating from Vendor (EEF).
CVSS VectorVendor: EEF
DescriptionCVE.org
Incorrect Authorization vulnerability in ash-project ash allows a client to read destination records unrelated to the source record through a through relationship.
When a has_many relationship declared with through: was loaded for a single record with a limit of 1, or an unsorted has_one through relationship was loaded with a limit of 1, lateral_join?/4 in lib/ash/actions/read/relationships.ex chose the path that reads the destination without any filter linking it to the source. The load returned the first destination record by sort, or any other record with an offset. The read still runs the destination's policies but carries the relationship as accessing_from, so a client paging such a field (for example teachers(limit: 1, offset: n) through AshGraphql) can enumerate destination records that policies allow only when reached through that relationship.
This issue affects ash: from 3.24.0 before 3.37.1.
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Private argument injection in the Ash Elixir framework (versions 3.0.0 through 3.29.2) allows end users to set action ar
An issue was discovered in the ash crate before 0.33.1 for Rust. Rated critical severity (CVSS 9.8), this vulnerability
Atom table exhaustion in the Ash framework (Elixir) allows an unauthenticated remote attacker to crash a BEAM node by su
Cross-tenant record takeover in the Ash framework (Elixir) for versions 1.22.0 up to 3.37.2: when a resource uses attrib
An authorization bypass in the Ash framework (Elixir) lets authenticated, lower-privileged actors recover values they ar
Information disclosure in the Ash framework for Elixir (versions 2.6.0 up to but not including 3.34.6) lets an authentic
Persistent record-level denial of service in the ash Elixir resource framework (versions 3.6.3-3.32.1) lets any actor wh
Integer overflow in Ash Framework's vector encoding corrupts stored vectors in any Elixir application using Ash versions
CPU exhaustion in Ash Framework's string type constraint handler allows denial of service against Elixir applications th
Memory exhaustion via decompression bomb in Ash Framework's keyset pagination can terminate Erlang nodes running version
Unbounded string storage in Ash Framework versions 0.10.0 through 3.32.x allows unauthenticated attackers to bypass max_
Memory exhaustion in Ash Framework's runtime filter engine allows an attacker controlling filter inputs to crash an Elix
EUVD-2026-109567
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB