PT-2026-71309
CVE-2026-67579
·
Published
2026-08-12
·
Updated
2026-08-12
Description by
CVSS 4.0
7.5
HighMetricsAV:L/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Name of the Vulnerable Software and Affected Versions
ash versions 1.17.0 through 3.31.2
Description
An unauthenticated attacker can inject a filter expression using a forged keyset pagination cursor. This occurs because read actions with keyset pagination decode client-supplied
page[:after] or page[:before] cursors in the decode values/2 function within lib/ash/page/keyset.ex using non executable binary to term/2 with [:safe]. While this guard blocks new atoms, funs, and ports, it does not block structs built from atoms already interned in a running application. Consequently, a decoded %Ash.Query.Call{} expression can be spliced into the keyset filter as a comparison value in do filters/4 and evaluated. Since the cursor bypasses the Ash.Expr macro, the runtime fails to apply the private?/public? gate. The impact varies by data layer: AshPostgres allows SQL injection, while ETS and Simple data layers allow the expression to be evaluated in-process as an arbitrary function call.Recommendations
Update ash to version 3.31.3 or later.
Exploitability
Exploit
Fix
Impacts
Vendors
Affected products
Found an issue in the description? Have something to add? Feel free to write us 👾