Am I affected?

type your ash_oban version to check

Description

Uncontrolled Recursion vulnerability in ash-project ash_oban allows a user who can drive a trigger's on_error action to fail on the final attempt to exhaust worker CPU and memory, denying service.

The generated worker's atomic handle_error/4 runs the trigger's on_error action on a job's final attempt inside a rescue that, when the action itself raises, calls handle_error/4 again with the same job. The job's attempt still equals max_attempts, so it re-enters the same clause and re-runs the failing action, with no exit. Any deterministic on_error failure (a data-layer outage, a misconfigured action, or a record the action rejects) loops forever; because the recursive call is not in tail position, each iteration retains a formatted stacktrace and the process heap grows without bound while the failing statement is re-issued against the data layer until the runtime kills the worker.

This issue affects ash_oban: from 0.8.0-rc.1 before 0.8.14.

Weaknesses & attack patterns

Weakness

CWE-674 · Uncontrolled Recursion in catalog → MITRE ↗

Attack patterns

CAPEC-130 · Excessive Allocation MITRE ↗

Affected — Hex / ash_oban Hex.pm ↗ Repository ↗

0.8.0-rc.1 < 0.8.14 affected
every other version: unaffected
cpe cpe:2.3:a:ash-project:ash_oban:*:*:*:*:*:*:*:*
modules · source files · routines
modules 'Elixir.AshOban.Transformers.DefineSchedulers'
source files lib/transformers/define_schedulers.ex
routines 'Elixir.AshOban.Transformers.DefineSchedulers':handle_error/4

Affected — GitHub / ash-project/ash_oban Repository ↗

5d117ed < 851cd0e affected
every other version: unaffected
cpe cpe:2.3:a:ash-project:ash_oban:*:*:*:*:*:*:*:*
modules · source files · routines
modules 'Elixir.AshOban.Transformers.DefineSchedulers'
source files lib/transformers/define_schedulers.ex
routines 'Elixir.AshOban.Transformers.DefineSchedulers':handle_error/4

Configurations

A trigger must declare an on_error action and run through the atomic worker branch. An attacker needs only to drive that on_error action into a deterministic failure (for example by pushing the record into a state the action rejects) and let the job reach its final attempt.

References

Credits

Peter Ullrich Finder Reporter
Zach Daniel / Ash Project Remediation developer
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:H/SC:N/SI:N/SA:N
« All CVEs