Uncontrolled Resource Consumption vulnerability in ash-project ash allows an attacker to exhaust the memory of the node via a crafted keyset pagination cursor.
Read actions with keyset pagination deserialize the client-supplied page[:after] or page[:before] cursor in decode_values/2 in lib/ash/page/keyset.ex, which base64-decodes the value and passes it to :erlang.binary_to_term/2 without bounding its size. The Erlang external term format supports zlib-compressed payloads, which the decoder inflates transparently, so a cursor of a few kilobytes can allocate tens of megabytes of heap in a single call. Ash itself only ever encodes cursors uncompressed, so the decoder accepts a term shape its encoder never produces. Concurrent requests aggregate these allocations and can terminate the node.
This issue affects ash: from 1.17.0 before 3.31.1.
Metrics
Affected Vendors & Products
References
History
Tue, 18 Aug 2026 15:45:00 +0000
| Type | Values Removed | Values Added |
|---|---|---|
| First Time appeared |
Ash-hq
Ash-hq ash Framework |
|
| CPEs | cpe:2.3:a:ash-hq:ash_framework:*:*:*:*:*:*:*:* | |
| Vendors & Products |
Ash-hq
Ash-hq ash Framework |
|
| Metrics |
cvssV3_1
|
Mon, 10 Aug 2026 18:30:00 +0000
| Type | Values Removed | Values Added |
|---|---|---|
| Metrics |
ssvc
|
Sun, 09 Aug 2026 18:15:00 +0000
| Type | Values Removed | Values Added |
|---|---|---|
| Description | Uncontrolled Resource Consumption vulnerability in ash-project ash allows an attacker to exhaust the memory of the node via a crafted keyset pagination cursor. Read actions with keyset pagination deserialize the client-supplied page[:after] or page[:before] cursor in decode_values/2 in lib/ash/page/keyset.ex, which base64-decodes the value and passes it to :erlang.binary_to_term/2 without bounding its size. The Erlang external term format supports zlib-compressed payloads, which the decoder inflates transparently, so a cursor of a few kilobytes can allocate tens of megabytes of heap in a single call. Ash itself only ever encodes cursors uncompressed, so the decoder accepts a term shape its encoder never produces. Concurrent requests aggregate these allocations and can terminate the node. This issue affects ash: from 1.17.0 before 3.31.1. | |
| Title | Memory exhaustion via unbounded deserialization of keyset pagination cursors in Ash.Page.Keyset | |
| First Time appeared |
Ash-project
Ash-project ash |
|
| Weaknesses | CWE-502 | |
| CPEs | cpe:2.3:a:ash-project:ash:*:*:*:*:*:*:*:* | |
| Vendors & Products |
Ash-project
Ash-project ash |
|
| References |
| |
| Metrics |
cvssV4_0
|
Status: PUBLISHED
Assigner: EEF
Published: 2026-08-09T18:01:32.896Z
Updated: 2026-08-10T17:24:04.995Z
Reserved: 2026-08-06T11:00:01.574Z
Link: CVE-2026-69659
Updated: 2026-08-10T17:23:43.963Z
Status : Analyzed
Published: 2026-08-09T18:16:43.627
Modified: 2026-08-18T15:38:34.223
Link: CVE-2026-69659
No data.