Impact
A deserialization flaw in the Ash framework allows an unauthenticated attacker to supply a forged keyset pagination cursor. The cursor is decoded by a routine that uses a safe binary‑to‑term conversion, but it fails to reject a struct that has already been interned in the running application. The attacker can embed a "%Ash.Query.Call{}" expression that is subsequently incorporated into the filter used for pagination. Depending on the underlying data layer, the embedded expression is either inlined into an SQL statement or evaluated by the application, leading to either SQL injection or arbitrary function execution. The primary impact is that the attacker can read, modify, or delete data, and in the worst case can execute native code on the host.
Affected Systems
The vulnerability affects every installation of ash-project's Ash package from version 1.17.0 up to (but excluding) 3.31.3. Any service that uses Ash for its data access layer—be it PostgreSQL, ETS, or a simple in‑memory layer—may be susceptible if keyset pagination is enabled.
Risk and Exploitability
The CVSS score of 7.5 indicates a high severity. Although the EPSS score is not available, the flaw is unauthenticated and allows direct injection via client requests, meaning the potential for exploitation is significant. The vulnerability is not listed in the CISA KEV catalog, but because it permits arbitrary SQL or code execution, it should be treated with priority. An attacker only needs to send a crafted page[:after] or page[:before] cursor in a request to a supported endpoint; no additional privileges are required.
OpenCVE Enrichment