Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify ETS/Mnesia-backed resource with user-supplied primary key
-
DeliveryObtain or predict victim record's primary key
-
ExploitCraft create request with colliding primary key
-
ExecutionSubmit via application create endpoint
-
PersistData layer performs unconditional keyed write
-
ImpactVictim record silently overwritten bypassing update policies
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Access control enforcement
MITRE ATT&CK
1 technique across 1 tactic: Defense Evasion The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires all three of the following conditions simultaneously: (1) the targeted Ash resource must use the ETS (Ash.DataLayer.Ets) or Mnesia (Ash.DataLayer.Mnesia) data layer - resources backed by SQL data layers are entirely unaffected; (2) the resource's create action must accept actor-supplied values for one or more primary key attributes (e.g., an id field marked public?: true with create permissions) - resources where the primary key is exclusively auto-generated server-side without user input cannot be exploited because the attacker cannot choose a colliding key; and (3) the attacker must be able to invoke the create action at whatever privilege level the application's own authorization rules require. Keyless resources (those with no defined primary key) are also exempt because the fix explicitly allows synthetic-key creation for them using make_ref(). |
| Impact | The CVSS 4.0 score of 5.9 (Medium) reflects high integrity impact tempered by the AT:P attack requirement - exploitation depends on the attacker controlling a user-supplied primary key value, which is a non-default configuration in many Ash applications. The AV:L designation in the vendor-provided CVSS 4.0 vector characterizes this as a local application-layer concern, though Ash is commonly deployed as a network-accessible web or API server, making AV:N a plausible alternative framing for affected deployments; this discrepancy should be verified against the specific deployment topology. No CISA KEV listing and no public exploit code mean current real-world risk is limited to informed, targeted attackers who understand the affected application's data model. Applications using SQL data layers such as AshPostgres are entirely unaffected regardless of version. EPSS score was not provided in the input data. |
| Exploit ScenarioDerived | An attacker with access to a create endpoint for an ETS-backed Ash resource - for example, a GraphQL mutation or REST API call that accepts a user-supplied string ID - submits a create request using the known or predicted primary key of a victim record; because the ETS data layer performed an unconditional keyed write (ETS.Set.put), the victim's record is silently replaced with the attacker's payload, bypassing all update action authorization policies. No public exploit code has been identified; the scenario is inferred directly from the vulnerability description and the reviewed commit diff. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 01, 2026
Silent record overwrite in Ash's ETS and Mnesia data layers allows any actor who can supply a primary key on a create action to replace an existing record without triggering update action authorization policies. Versions 0.4.0 through 3.32.1 are affected; only deployments using the ETS or Mnesia data layer - not SQL-backed layers - are vulnerable. No public exploit code has been identified and the vulnerability is not listed in CISA KEV, but the integrity impact is high for applications that expose user-controlled primary key creation.
RemediationAI
Upgrade Ash to version 3.32.2 or later, where the ETS data layer uses :ets.insert_new to atomically reject duplicate primary keys and the Mnesia data layer wraps writes in a read-check-write transaction; the patch is available at https://github.com/ash-project/ash/commit/912e243196017c2a812c25905c2b1cc3bbb843fc. If an immediate upgrade is not feasible, audit all ETS- and Mnesia-backed resources and restrict create actions so that primary key fields cannot be supplied by actors - for example, by removing public?: true or excluding primary key fields from the create action's accept list, forcing server-side key generation (e.g., auto-UUID). This workaround prevents attackers from crafting colliding keys but does not fix the underlying uniqueness enforcement gap and must be re-evaluated whenever new resources or create actions are added.
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 (ash-project/ash, cpe:2.3:a:ash-project:ash:*:*:*:*:*:*:*:*) is an Elixir resource framework providing declarative data modeling and action-based authorization. The root cause (CWE-284: Improper Access Control) lies in how the ETS and Mnesia data layers implemented the create action: ETS used ETS.Set.put (which unconditionally overwrites any existing entry at the same key) and Mnesia used Mnesia.write (which likewise replaces without checking existence), as visible in lib/ash/data_layer/ets/ets.ex and lib/ash/data_layer/mnesia/mnesia.ex. SQL data layers avoid this entirely by relying on database-level unique constraints that reject duplicate primary keys. The fix committed at 912e243196017c2a812c25905c2b1cc3bbb843fc replaces ETS.Set.put with :ets.insert_new (an atomic compare-and-insert that fails if the key already exists) and wraps the Mnesia write in a read-check-write transaction, returning a pkey_already_taken_error for both. Resources with no defined primary key are explicitly permitted to continue creating synthetic keyless records using make_ref().
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:H/VA:N/SC:N/SI:N/SA:N
Network vector reflects common web API deployment of Ash; AC:H captures the specific prerequisite of attacker-controlled primary key input; integrity-only impact from silent record overwrite with no confidentiality or availability loss.
Primary rating from Vendor (EEF).
CVSS VectorVendor: EEF
DescriptionCVE.org
Improper Access Control vulnerability in ash-project ash lets a create action overwrite an existing record when the ETS or Mnesia data layer is used, because neither enforced primary-key uniqueness on insert.
Unlike a SQL data layer, whose unique primary-key constraint rejects a duplicate, the ETS and Mnesia data layers implemented create as a keyed insert that replaces any existing entry with the same primary key (lib/ash/data_layer/ets/ets.ex, lib/ash/data_layer/mnesia/mnesia.ex). An actor who can set the primary key on a create (for example a user-supplied string or integer key) can submit a create whose key matches an existing record and silently overwrite it, destroying and replacing another entity's data without going through the update action or its policies. The fix rejects a create whose primary key already exists with an already-taken error, and only allows duplicates for keyless resources.
This issue affects ash: from 0.4.0 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
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-68950
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB