Ash.Actions.Read.AsyncLimiter busy-spins a scheduler while awaiting slow async reads
## Summary 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.
describes (1)
Related CVEs.
| ID | severity | exploitable | ||
|---|---|---|---|---|
| CVE-2026-82743US | — | — | ||
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.… | ||||
references
External citations — patches, advisories, analysis.
Advisories like this name the exposed products attackers go after on your perimeter. See what is exposed on your perimeter with a free passive scan.
Free scan