PT-2026-71309 · Ash · Ash

·

CVE-2026-67579

·

Published

2026-08-12

·

Updated

2026-08-12

CVSS v4.0

7.5

High

VectorAV: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 👾

Weakness Enumeration

Related Identifiers

CVE-2026-67579
GHSA-3GQ3-9XM3-C8V3

Affected Products

Ash