Skip to content
Fencer Intel
high 7.5

CVE-2026-54890 json

BEAM VM crash via integer underflow in binary_to_term BIT_BINARY_EXT decoding

published 3mo ago modified 9h ago also EUVD-2026-49326 , GHSA-54pw-5645-jh86

Unreviewed: the maintainers' own advisory

Published by the maintainers on their GitHub repository erlang/otp. GitHub has not reviewed it into the GitHub Advisory Database, so the affected packages and versions are the maintainers' word. Read the full advisory on GitHub.

cvss
7.5
version 3.1, NVD
cisa kev
Not listed
not in CISA's catalog
epss
0.4%
EPSS 0.4% chance of exploitation in 30 days, percentile 36%
public exploits
0
none known

Summary

Integer Underflow (Wrap or Wraparound) vulnerability in erlang otp erlang/otp (erts modules), erlang otp erts (erts modules) allows Forced Integer Overflow, Excessive Allocation. This vulnerability is associated with program files erts/emulator/beam/external.c, emulator/beam/external.c.

The BIT_BINARY_EXT tag (77) handler in the External Term Format (ETF) decoder accepts an encoding with both length and trailing-bits fields set to zero. The subsequent computation of the bitstring size underflows an unsigned integer, producing a value of roughly 2^64 that is then passed as a memory allocation size. The allocator aborts the entire node with a message such as Cannot allocate 2305843009213693951 bytes of memory (of type "binary").

The crash is a VM-level abort, not an Erlang-level exception. It cannot be intercepted by supervision trees, by try/catch, or by passing the [safe] option to binary_to_term/2 (which only restricts atom creation and does not perform structural validation of binary encodings).

Any application that decodes ETF from untrusted sources via binary_to_term/1,2 or enif_binary_to_term() is exposed. The Erlang distribution protocol also decodes incoming terms through the same code path, but distribution is expected to run on trusted networks per the OTP Secure Coding Guidelines (DSG-011).

This issue affects OTP from OTP 27.0 before OTP 27.3.4.15, OTP 28.5.0.4, and OTP 29.0.4, corresponding to erts from 15.0 before 15.2.7.11, 16.4.0.4, and 17.0.4.

Patch / fix

  • Erlang OTP 15.2.7.11, 16.4.0.4, 17.0.4, 27.3.4.15, 28.5.0.4, 29.0.4
  • erlang Debian 13 1:27.3.4.1+dfsg-1+deb13u3
  • erlang Debian 14 1:29.0.4+dfsg-1

debian advisories DEBIAN-CVE-2026-54890

  • erlang Ubuntu 26.04 LTS 1:27.3.4.6+dfsg-1ubuntu0.1

ubuntu advisories UBUNTU-CVE-2026-54890

Ubuntu security data © Canonical Ltd., from https://github.com/canonical/ubuntu-security-notices via OSV; changed: normalised to fixed package versions per release. CC BY-SA 4.0

  • erlang27 hummingbird 1 27.3.4.15-0.1.hum1
  • erlang27-et hummingbird 1 27.3.4.15-0.1.hum1
  • erlang27-wx hummingbird 1 27.3.4.15-0.1.hum1
  • erlang27-ftp hummingbird 1 27.3.4.15-0.1.hum1
  • erlang27-ssh hummingbird 1 27.3.4.15-0.1.hum1
  • erlang27-ssl hummingbird 1 27.3.4.15-0.1.hum1
  • erlang27-asn1 hummingbird 1 27.3.4.15-0.1.hum1
  • erlang27-edoc hummingbird 1 27.3.4.15-0.1.hum1

red hat advisories RHSA-2026:47009

  • erlang openSUSE Tumbleweed 28.5.0.4-1.1
  • erlang27 openSUSE Tumbleweed 27.1.3-3.1

opensuse advisories openSUSE-SU-2026:11559-1openSUSE-SU-2026:11560-1

Is CVE-2026-54890 in your stack? Fencer shows which of your repositories are affected as soon as an advisory lands, and opens the fix as a pull request.

Check with Fencer

Vendor advisories

What the vendors themselves say about their products: affected, fixed or not affected, and what to do.

red hat product security vex CVE-2026-54890 updated cvss 7.5

erlang/otp: erts: otp: Erlang/OTP: Denial of Service via integer underflow in ETF decoding

  • Red Hat Hardened Images erlang27 27.3.4.15-0.1.hum1
    fixed: vendor fix RHSA-2026:47009

Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf

CISA SSVC

Exploitation
none
Automatable
no
Technical impact
partial
Assessed
3mo ago

Exploit prediction

0.42% chance of exploitation in the next 30 days, higher than 36% of all scored CVEs (FIRST EPSS, 2026-11-11).

CVSS scores

assigned by version score vector
CNA 4.0 8.2 CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
CNA 4.0 8.2 CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
NVD 3.1 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Affected products

  • Erlang OTP

Classification

Weakness
  • CWE-191 Integer Underflow (Wrap or Wraparound)
  • CWE-789 Memory Allocation with Excessive Size Value
  • CWE-1284 Improper Validation of Specified Quantity in Input

References

Sources

Fencer Intel keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.

The maintainers of erlang/otp published their own advisory on GitHub. Reviewed sources take precedence over it.

CPEs and fixed versions use Anchore's correction of NVD's data: Added CPE configurations because not yet analyzed by NVD.