Am I affected?

type your ash version to check

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.

Weaknesses & attack patterns

Weakness

CWE-400 · Uncontrolled Resource Consumption in catalog → MITRE ↗

Attack patterns

CAPEC-227 · Sustained Client Engagement MITRE ↗

Affected — Hex / ash Hex.pm ↗ Repository ↗

2.19.0 < 3.32.2 affected
every other version: unaffected
cpe cpe:2.3:a:ash-project:ash:*:*:*:*:*:*:*:*
modules · source files · routines
modules 'Elixir.Ash.Actions.Read.AsyncLimiter'
source files lib/ash/actions/read/async_limiter.ex
routines 'Elixir.Ash.Actions.Read.AsyncLimiter':await_at_least_one/1

Affected — GitHub / ash-project/ash Repository ↗

c48cb08 < 0a5ecd2 affected
every other version: unaffected
cpe cpe:2.3:a:ash-project:ash:*:*:*:*:*:*:*:*
modules · source files · routines
modules 'Elixir.Ash.Actions.Read.AsyncLimiter'
source files lib/ash/actions/read/async_limiter.ex
routines 'Elixir.Ash.Actions.Read.AsyncLimiter':await_at_least_one/1

References

Credits

Zach Daniel / Ash Project Remediation developer
Peter Ullrich Reporter Finder
Jonatan Männchen / EEF Coordinator

CVSS breakdown

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
« All CVEs