PT-2026-71309 · Ash · Ash
CVSS v4.0
7.5
High
| Vector | AV: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.
Exploit
Fix
SQL injection
Deserialization of Untrusted Data
Found an issue in the description? Have something to add? Feel free to write us 👾
Related Identifiers
Affected Products
Ash