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.
Published: 2026-08-09
Score: 5.9 Medium
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The flaw is an uncontrolled resource consumption vulnerability that arises when Ash processes keyset pagination cursors. The cursor value is base64-decoded and then passed to :erlang.binary_to_term without any bounds checking. Because the Erlang external term format can decompress data without limits, a malicious cursor of a few kilobytes can inflate into tens of megabytes of heap in a single call, potentially exhausting the node’s memory and causing a crash.

Affected Systems

The vulnerable product is Ash by the Ash Project. All versions from 1.17.0 up to and including 3.31.0 are affected. Any deployment that relies on these releases and exposes keyset pagination endpoints can be impacted.

Risk and Exploitability

The CVSS score of 5.9 indicates a moderate severity risk. An unauthenticated attacker can exploit the flaw by sending a crafted cursor via an API request, as the deserialization step occurs before authentication. The EPSS score is not available and the vulnerability is not listed in CISA KEV, meaning no widespread exploitation is currently known, but the ability to trigger a node crash can lead to denial of service for the affected application.

Generated by OpenCVE AI on August 9, 2026 at 19:21 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Ash to version 3.31.1 or later to apply the vendor‑supplied fix that bounds cursor size.
  • If an upgrade is not immediately possible, modify the request handling to reject cursors exceeding a safe size before calling :erlang.binary_to_term.
  • Deploy resource isolation (e.g., Docker limits or cgroups) to constrain the memory available to the Ash service, limiting the impact of an exhausted heap.
  • Apply a rate limiter on pagination requests to reduce the probability of a burst of large cursors overwhelming the node.

Generated by OpenCVE AI on August 9, 2026 at 19:21 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

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

{'score': 5.9, 'vector': 'CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: EEF

Published:

Updated: 2026-08-09T18:01:32.896Z

Reserved: 2026-08-06T11:00:01.574Z

Link: CVE-2026-69659

cve-icon Vulnrichment

No data.

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-09T19:30:04Z

Weaknesses
  • CWE-502

    Deserialization of Untrusted Data