Filter expression injection via forged keyset pagination cursor in Ash
Key facts
- Attack vector
- Local
- Privileges required
- None
- User interaction
- None
- Attack complexity
- Low
- Attack requirements
- Present
- Impact type
- Code execution, SQL injection
- Confidentiality · integrity · availability
- High · High · High
- Fix status
- Fixed
Attack profile from CVSS 4.0 · CNA. Fix status from CNA. Impact type from CWE-502 and CWE-89.
Summary
Deserialization of Untrusted Data vulnerability in ash-project ash allows an unauthenticated attacker to inject a filter expression through a forged keyset pagination cursor, resulting in SQL injection or code execution depending on the data layer. Read actions with keyset pagination decode the client-supplied page[:after] or page[:before] cursor in decode_values/2 in lib/ash/page/keyset.ex using non_executable_binary_to_term/2 with [:safe]. That guard blocks new atoms, funs, and ports, but not a struct built from atoms already interned in a running Ash application, so a decoded %Ash.Query.Call{} expression survives and is spliced into the keyset filter as a comparison value in do_filters/4 and evaluated. Because the cursor bypasses the Ash.Expr macro, the runtime never applies the private?/public? gate that would otherwise reject it. On AshPostgres the injected fragment is inlined into the SQL query; on the ETS and Simple data layers it is evaluated in-process as an arbitrary function call. This issue affects ash: from 1.17.0 before 3.31.3.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- Poc
- Automatable
- No
- Technical impact
- Total
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| ash-project | ash | 1.17.0 to before 3.31.3 | 3.31.3 | Patch available | CNA |
- ash Vendorash-project Affected 1.17.0 to before 3.31.3 Fixed in 3.31.3 Patch available CNA
CPE configurations NVD · 1
| CPE | Versions | Role | Vendor |
|---|---|---|---|
| cpe:2.3:a:ash-hq:ash_framework:*:*:*:*:*:*:*:* | 1.17.0 to before 3.31.3 | Vulnerable | ash-project |
- cpe:2.3:a:ash-hq:ash_framework:*:*:*:*:*:*:*:* Versions 1.17.0 to before 3.31.3 Vulnerable ·ash-project
Remediation
- Fix · CNA ash (ash-project) Fixed in 3.31.3
Timeline
- 2026-10-02 Threatist record created from CVE-2026-67579
References
More ash-project Ash Framework vulnerabilities
- TI-2026-26840 Ash Framework: Ash.Type.Module.cast_input/2 atom exhaustion via unchecked Module.concat allows BEAM VM crash CVSS 4.0HIGH 8.2
- TI-2026-48952 Memory exhaustion via unbounded deserialization of keyset pagination cursors in Ash.Page.Keyset CVSS 4.0MEDIUM 5.9
Sources
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences