Description
Uncontrolled Resource Consumption vulnerability in ash-project ash lets a slow asynchronous read spin a scheduler thread at full CPU while the framework waits for it.

Ash.Actions.Read.AsyncLimiter.await_at_least_one/1 (lib/ash/actions/read/async_limiter.ex) waited for concurrent async read tasks by polling each with Task.yield(task, 0) in a tight loop rather than blocking. While every outstanding task is still running (a slow related-data load or calculation), the loop returns immediately and repeats, busy-spinning and holding a BEAM scheduler at full CPU for the whole duration of the slow read; concurrent slow reads tie up further schedulers. The fix waits with Task.yield_many (a non-blocking sweep followed by a blocking wait with timeout: :infinity), so the process sleeps until a task completes instead of spinning.

This issue affects ash: from 2.19.0 before 3.32.2.
Published: 2026-09-01
Score: 2.1 Low
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

A busy‑spin loop in Ash.Actions.Read.AsyncLimiter causes a scheduler thread to consume all CPU cycles while awaiting slow asynchronous reads. The loop repeatedly polls each task with Task.yield(task, 0) in a tight cycle, holding the BEAM scheduler at full load for the entire duration of the slow read operation. This uncontrolled consumption of CPU resources can prevent the system from processing other requests, effectively denying service to legitimate users. The issue is identified as a Resource Exhaustion weakness (CWE‑400).

Affected Systems

The flaw affects all versions of the Ash framework from 2.19.0 up to, but not including, 3.32.2. Users operating within this version range are vulnerable if they invoke async reads that may complete slowly or involve large data loads.

Risk and Exploitability

The CVSS score of 2.1 indicates low overall severity, and the Exploit Prediction Scoring System shows no exploitation probability data. The vulnerability is not listed in the CISA Known Exploited Vulnerabilities catalog. Exploitation would require an attacker to trigger the slow asynchronous read path within the application, which is typically controlled by application logic. Because the failure mode only impacts CPU usage and does not expose data or allow code execution, the risk is limited to performance degradation and potential service disruption rather than confidentiality or integrity compromise.

Generated by OpenCVE AI on September 1, 2026 at 04:20 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Update ash to version 3.32.2 or later, which replaces the tight polling loop with Task.yield_many that blocks until completion, eliminating the busy‑spin.
  • If an update is not immediately possible, restrict the concurrency of async read operations or enforce a maximum timeout on all async tasks to prevent prolonged slow reads from starving the scheduler.
  • Monitor system CPU usage and scheduler activity for anomalous spikes that may indicate an exploitation attempt, and consider disabling or throttling slow read features in production until a patch can be applied.

Generated by OpenCVE AI on September 1, 2026 at 04:20 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Tue, 01 Sep 2026 03:45:00 +0000

Type Values Removed Values Added
Description Uncontrolled Resource Consumption vulnerability in ash-project ash lets a slow asynchronous read spin a scheduler thread at full CPU while the framework waits for it. Ash.Actions.Read.AsyncLimiter.await_at_least_one/1 (lib/ash/actions/read/async_limiter.ex) waited for concurrent async read tasks by polling each with Task.yield(task, 0) in a tight loop rather than blocking. While every outstanding task is still running (a slow related-data load or calculation), the loop returns immediately and repeats, busy-spinning and holding a BEAM scheduler at full CPU for the whole duration of the slow read; concurrent slow reads tie up further schedulers. The fix waits with Task.yield_many (a non-blocking sweep followed by a blocking wait with timeout: :infinity), so the process sleeps until a task completes instead of spinning. This issue affects ash: from 2.19.0 before 3.32.2.
Title Ash.Actions.Read.AsyncLimiter busy-spins a scheduler while awaiting slow async reads
First Time appeared Ash-project
Ash-project ash
Weaknesses CWE-400
CPEs cpe:2.3:a:ash-project:ash:*:*:*:*:*:*:*:*
Vendors & Products Ash-project
Ash-project ash
References
Metrics cvssV4_0

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


cve-icon MITRE

Status: PUBLISHED

Assigner: EEF

Published:

Updated: 2026-09-01T03:37:24.292Z

Reserved: 2026-08-31T01:00:09.774Z

Link: CVE-2026-82743

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-01T04:18:04.363

Modified: 2026-09-01T04:18:04.363

Link: CVE-2026-82743

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-01T04:30:03Z

Weaknesses
  • CWE-400

    Uncontrolled Resource Consumption