CVE-2026-67579

Filter expression injection via forged keyset pagination cursor in Ash

HIGH
7.4
CVSS Score
Published: August 12, 2026 at 08:04 PM UTC
Updated: October 24, 2026 at 04:10 PM UTC
2 products affected across 2 vendorsAshAsh Framework

Using ash by ash-project?

Get instant alerts when new vulnerabilities affect ash - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
HIGH7.4
Exploit prediction
EPSS 0.6%
SSVC
PoC

Description

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.

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

95%
All versions1.17.0f8fadc67e67c955bb68b3a8d642be13e2b7e8ca9
Vendor states this is fixed in 91874dd5435bc0ffebd8a254acfa573b39b74520 (fixed)
Affected range stops below 3.31.3, so it looks safe — our inference, not a vendor statement
1.17.0 ≤ v < 3.31.3
Affected range stops below 3.31.3, so it looks safe — our inference, not a vendor statement

References (4)

Vendor AdvisoryRelatedExploitPatch
Source: cverecord
https://github.com/ash-project/ash/security/advisories/GHSA-3gq3-9xm3-c8v3
RelatedThird Party AdvisoryPatch
Source: cverecord
https://cna.erlef.org/cves/CVE-2026-67579.html
RelatedThird Party AdvisoryPatch
Source: cverecord
https://osv.dev/vulnerability/EEF-CVE-2026-67579

SSVC — Action Prioritization

SSVCPoCNot automatableTotal impact

SSVC signals action urgency (what to patch first), separate from CVSS which measures severity.

CVSS

Attack Vector
LOCAL
Complexity
HIGH
Privileges
NONE
User Interaction
NONE
Scope
UNCHANGED
Confidentiality
HIGH
Integrity
HIGH
Availability
HIGH
Vector?

Quick Info

StatusANALYZED
CWE
CWE-502CWE-89

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card