Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify API endpoint accepting multi-relationship Ash filter input
-
DeliveryCraft filter spanning two or more to-many relationship paths
-
ExploitSubmit request against resource with large related datasets
-
ExecutionTrigger eager Cartesian expansion in flatten_relationships/2
-
PersistExhaust Elixir node heap memory
-
ImpactApplication availability lost (DoS)
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK
1 technique across 1 tactic: Impact The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires that untrusted input reaches |
| Impact | The vendor CVSS 4.0 score of 5.9 Medium reflects a required attack condition (AT:P) - the presence of multiple to-many relationships with sizeable datasets - which materially limits the exploitable attack surface compared to an unconditional DoS. Availability impact is High (VA:H) with no confidentiality or integrity exposure. EPSS data was not provided, and the vulnerability is not listed in CISA KEV, meaning no confirmed active exploitation is known at time of analysis. Real-world risk is strongly deployment-dependent: applications that expose Ash filter parameters to untrusted API consumers face a practical DoS vector requiring minimal attacker sophistication, while those constructing filters solely from trusted internal logic are at substantially lower risk. The vendor's AV:L vector choice suggests the primary threat model is a developer or operator misusing the API rather than a remote end user, though this distinction collapses when filter parameters are passed unsanitized from HTTP requests. Overall, this is a genuine availability risk in affected deployments but not a broad, indiscriminate threat. |
| Exploit ScenarioDerived | An attacker identifies a web API endpoint that passes user-supplied filter parameters to Ash's in-memory filter evaluation and crafts a request filtering on two or more to-many relationships - for example, posts filtered simultaneously by tags and comments - against a resource holding hundreds of rows per relationship. Submitting this request triggers eager Cartesian product materialization in |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 01, 2026
Memory exhaustion in Ash Framework's runtime filter engine allows an attacker controlling filter inputs to crash an Elixir node by submitting a query that spans multiple to-many relationships against large in-memory datasets. The vulnerable flatten_relationships/2 function in lib/ash/filter/runtime.ex (versions 1.29.0-rc0 through 3.32.2) eagerly materializes the full Cartesian product of related rows before evaluating any predicate, producing O(M^K) intermediate records for K relationships with M rows each. No public exploit has been identified at time of analysis; a vendor-released patch is available in version 3.32.2.
RemediationAI
Upgrade Ash to version 3.32.2 or later, which resolves the issue by replacing eager Cartesian product expansion with lazy streaming evaluation; the patch is documented at https://github.com/ash-project/ash/security/advisories/GHSA-mgwj-c69v-6f83 and commit https://github.com/ash-project/ash/commit/da07f009e889819ec410fa1f0f12534bfb9e21dd. If immediate upgrade is not feasible, restrict user-controlled filter inputs by allowlisting filterable relationship paths in public-facing API handlers to prevent multi-to-many relationship filter combinations from reaching Ash.Filter.Runtime.filter_matches/3; this reduces query expressiveness as a trade-off. Applications that delegate all filtering to the database via Ecto queries and never invoke in-memory filter evaluation are not exposed to this codepath and require no immediate action.
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 (CPE: cpe:2.3:a:ash-project:ash) is an Elixir resource framework for data modeling and querying. The vulnerable codepath is Ash.Filter.Runtime.filter_matches/3, which evaluates filter predicates against records held in application memory rather than delegating to a database. The root cause (CWE-400: Uncontrolled Resource Consumption) is the eager Cartesian product expansion in flatten_relationships/2: for a record with K to-many relationships each containing M rows, the function allocated O(M^K) intermediate combinations before checking any predicate - an exponential blowup that rapidly exhausts Elixir node heap. The patch (commit da07f009e889819ec410fa1f0f12534bfb9e21dd) replaces Enum.flat_map with Stream.flat_map, making the expansion lazy and short-circuiting on the first matching scenario, bounding memory to O(M) per relationship path. A new regression test (test/filter/runtime_flatten_test.exs) confirms that 300-row dual-relationship post fixtures complete under 1,000,000 reductions.
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:L/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Network vector assigned because Ash filters are typically exposed through web API endpoints; AC:H reflects the required multi-to-many relationship configuration with large datasets; no confidentiality or integrity impact.
Primary rating from Vendor (EEF).
CVSS VectorVendor: EEF
DescriptionCVE.org
Uncontrolled Resource Consumption vulnerability in ash-project ash lets an attacker exhaust node memory by matching a filter that spans multiple to-many relationships in memory.
Ash.Filter.Runtime matches a filter against an in-memory record by first expanding the record into combinations of its related rows. flatten_relationships/2 (lib/ash/filter/runtime.ex) eagerly built the full Cartesian product across the filter's to-many relationship paths, so a record with K to-many relationships of M rows each materialized on the order of M^K scenarios before any predicate was checked. A filter or dataset that reaches several sizeable to-many relationships therefore allocates memory combinatorially and can exhaust the node. The fix streams the expansion lazily and short-circuits on the first matching scenario, bounding the work.
This issue affects ash: from 1.29.0-rc0 before 3.32.2.
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
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
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
An incorrect authorization flaw in the Elixir Ash framework (versions 3.24.0 up to but not including 3.37.1) lets an aut
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_
EUVD-2026-68947
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB