Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify Ash.Reactor endpoint accepting attacker-influenced input
-
DeliveryCraft payload to trigger exception in `where` guard validation
-
ExploitGuard raises, misclassified as unmet condition
-
ExecutionSecurity-relevant change silently skipped
-
ImpactRequest proceeds without enforced policy
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Fail-secure design
|
| Exploitation Conditions | Exploitation requires three concurrent conditions: (1) the target application uses Ash.Reactor with at least one change step gated by a |
| Impact | The CVSS 4.0 base score of 2.1 (AV:L/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N) reflects tightly scoped exploitation conditions: the AT:P metric confirms specific attack requirements must be present, meaning the attacker must supply input that causes a guard to raise rather than evaluate to false. The VI:L integrity impact represents a minimal floor, but the provided 'Authentication Bypass' tag signals that researchers consider security-sensitive changes to be plausibly in scope - if the bypassed change enforces authentication, authorization, or mandatory data policy, real-world impact could substantially exceed the base score. The AV:L metric in the provided vector appears conservative for a framework that primarily serves network-exposed web APIs; this warrants verification against specific deployment contexts. No EPSS data was provided; given the specificity of the required exploit path, opportunistic mass exploitation is unlikely. No confirmed active exploitation exists per CISA KEV. The tension between the low CVSS base score and the Authentication Bypass classification means Ash-using teams cannot dismiss this on score alone - they must audit their Ash.Reactor pipelines for any |
| Exploit ScenarioDerived | An attacker submits a crafted payload to a network-exposed Ash-backed API endpoint that passes an unexpected value - such as a nil or mistyped field - to a |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 01, 2026
Ash.Reactor's ChangeStep component in the Elixir Ash framework silently bypasses security-relevant change operations when a where guard raises an exception, instead of halting the step with an error. Applications built on ash versions 3.0.0-rc.17 through 3.32.1 that use Ash.Reactor pipelines with where-gated changes are affected. An attacker who can supply crafted input triggering a guard exception may cause the guarded change to be silently skipped, potentially circumventing authentication, authorization, or mandatory data transformations depending on what that change enforces. No public exploit has been identified and the vulnerability is not listed in CISA KEV.
RemediationAI
The primary fix is upgrading ash to version 3.32.2 or later, which incorporates commit 6d2eb86ea8d2ba5ffac89c1b8b9bf46e331feabc and changes exception handling in Ash.Reactor.ChangeStep to fail closed. The vendor advisory at https://github.com/ash-project/ash/security/advisories/GHSA-3xq4-m876-fr88 should be consulted for release details. If an immediate upgrade is not feasible, a targeted compensating control is to audit all Ash.Reactor pipelines and harden any where guard validation modules that protect security-critical changes so they return an explicit {:error, reason} tuple rather than raising on unexpected input, eliminating the triggerable exception path. This workaround requires application-level code changes and does not address the underlying framework behavior in other guards.
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:2.3:a:ash-project:ash) is an Elixir resource framework for building data-layer APIs and pipelines. The affected component is Ash.Reactor.ChangeStep in lib/ash/reactor/steps/change_step.ex, which orchestrates change operations within Ash.Reactor workflows. The where clause accepts Ash.Resource.Validation modules as guards; the step only applies its change if all guards evaluate to true. The root cause (CWE-636: Not Failing Securely / Failing Open) was in apply_where_clauses/3: the apply_validation helper rescued all exceptions with a generic error -> {:error, error} branch, and the calling reduce treated any {:error, _} tuple identically to a guard condition returning false - silently skipping the change rather than aborting. The fix in commit 6d2eb86ea8d2ba5ffac89c1b8b9bf46e331feabc introduces a {:raised, error} sentinel so that exceptions are now handled upstream as {:raised, error} -> {:halt, {:error, error}}, causing the step to halt with an error and fail closed.
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:L/VA:N/SC:N/SI:N/SA:N
Network vector because Ash applications typically expose network APIs; AC:H reflects the specific crafted input required to trigger a guard exception rather than a false return; no confidentiality or availability impact from a skipped change step.
Primary rating from Vendor (EEF).
CVSS VectorVendor: EEF
DescriptionCVE.org
Not Failing Securely (Failing Open) vulnerability in ash-project ash skips an Ash.Reactor change when the guard controlling it raises, so a change meant to run does not.
An Ash.Reactor change step can be gated by where validations that decide whether the change runs. Ash.Reactor.ChangeStep (lib/ash/reactor/steps/change_step.ex) evaluated those guards in apply_where_clauses/3, and apply_validation rescued any exception into {:error, error}. The reduce treated that identically to a guard whose condition was simply not met and bypassed the change. So when a guard raises (for example on attacker-influenced input), a change that enforces a security-relevant modification is skipped rather than failing the step. The fix distinguishes a raised exception (now {:raised, error}) and halts the step with an error, failing closed.
This issue affects ash: from 3.0.0-rc.17 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
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
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-68949
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB