Vulnerability description

Uncontrolled Resource Consumption vulnerability in ericmj decimal allows unauthenticated remote Denial of Service.

The decimal library does not bound the exponent on parsed input. Storing a decimal with a very large exponent (e.g. Decimal.new("1e1000000000")) is accepted without error. Subsequent calls to arithmetic functions (Decimal.add/2, Decimal.sub/2, Decimal.div/2), Decimal.to_string/2 with :normal or :xsd format, Decimal.to_integer/1, Decimal.round/3, or Decimal.compare/3 with a threshold allocate memory proportional to the exponent value, which can exhaust available memory and crash the BEAM VM.

Any application that accepts user-supplied decimal input and subsequently performs arithmetic, rounding, conversion to integer, or string formatting on it is exposed. A single malicious request is sufficient to cause an out-of-memory crash.

This issue affects decimal: from 0.1.0 before 3.0.0.

Affected

pkg:hex/decimal

Status Type Version Changes / Fixed in
affected semver 0.1.0 < 3.0.0

pkg:github/ericmj/decimal

Module Source File Routine
Decimal lib/decimal.ex Decimal.new/1
Decimal.parse/1
Decimal.cast/1
Decimal.add/2
Decimal.sub/2
Decimal.div/2
Decimal.to_string/2
Decimal.to_integer/1
Decimal.round/3
Decimal.compare/3
Status Type Version Changes / Fixed in
affected git bc11f4a2b6 < 6a523f3a73

References

Credits

  • Finder: Peter Ullrich
  • Remediation developer: Eric Meadows-Jönsson
  • Remediation reviewer: José Valim
  • Remediation reviewer: Wojtek Mach
  • Analyst: Jonatan Männchen
  • Remediation reviewer: ruslandoga
  • Remediation reviewer: Matthew Johnston

CVE record as JSON:  GET /cves/CVE-2026-32686.json
OSV record as JSON:  GET /osv/EEF-CVE-2026-32686.json