CVE-2026-82743

Ash.Actions.Read.AsyncLimiter busy-spins a scheduler while awaiting slow async reads

Published Sep 1, 2026 CVSS 4.0 · 2.1 Low EPSS < 1% KEV · Not listed
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.

Analysis

AI-generated

Technical 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.

Remediation

No solution or workaround provided in the CVE record.

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 available
History
Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}

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'}

Weaknesses
  • CWE-400

    Uncontrolled Resource Consumption

Sources

Status
PUBLISHED
Assigner
EEF
Published
Updated
Sep 1, 2026, 12:40 PM
Reserved
Aug 31, 2026, 1:00 AM
Status
Deferred
Published
Sep 1, 2026, 4:18 AM
Modified
Sep 1, 2026, 9:15 PM