CVE-2026-54890
Received Received - Intake

Integer Underflow in Erlang/OTP ETF Decoder

Vulnerability report for CVE-2026-54890, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-07-27

Last updated on: 2026-07-27

Assigner: EEF

Description

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Β 29.0.4, OTPΒ 28.5.0.4 and OTPΒ 27.3.4.15, corresponding to erts from 15.0 before 17.0.4, 16.4.0.4 and 15.2.7.11.

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-07-27
Last Modified
2026-07-27
Generated
2026-07-27
AI Q&A
2026-07-27
EPSS Evaluated
N/A
NVD
EUVD

Affected Vendors & Products

Showing 17 associated CPEs
Vendor Product Version / Range
erlang otp to 27.3.4.15 (exc)
erlang otp to 28.5.0.4 (exc)
erlang otp to 29.0.4 (exc)
erlang otp From 27.0 (inc) to 29.0.4 (exc)
erlang otp From 28.5.0.4 (inc)
erlang otp From 27.3.4.15 (inc)
erlang erts From 15.0 (inc) to 17.0.4 (exc)
erlang erts From 16.4.0.4 (inc)
erlang erts From 15.2.7.11 (inc)
erlang otp From 27.3.4.15 (exc) to 29.0.4 (exc)
erlang otp 27.3.4.15
erlang otp 28.5.0.4
erlang otp 29.0.4
erlang erts From 15.2.7.11 (exc) to 17.0.4 (exc)
erlang erts 15.2.7.11
erlang erts 16.4.0.4
erlang erts 17.0.4

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-191 The product subtracts one value from another, such that the result is less than the minimum allowable integer value, which produces a value that is not equal to the correct result.
CWE-789 The product allocates memory based on an untrusted, large size value, but it does not ensure that the size is within expected limits, allowing arbitrary amounts of memory to be allocated.
CWE-1284 The product receives input that is expected to specify a quantity (such as size or length), but it does not validate or incorrectly validates that the quantity has the required properties.

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

This is an Integer Underflow vulnerability in Erlang/OTP where a specific tag handler in the External Term Format decoder miscalculates memory allocation size when both length and trailing-bits fields are zero. This causes a forced integer overflow, leading to an attempt to allocate an extremely large amount of memory (around 2^64 bytes), which crashes the Erlang VM entirely.

Detection Guidance

Detecting this vulnerability requires checking the Erlang/OTP version on your system. Run 'erl -version' or 'erl --version' to see the installed version. If it is OTP 27.0 before 29.0.4, OTP 28.5.0.4, or OTP 27.3.4.15, or corresponding erts versions before 17.0.4, 16.4.0.4, or 15.2.7.11, the system is vulnerable.

Impact Analysis

If you decode untrusted External Term Format data using functions like binary_to_term/1,2 or enif_binary_to_term(), your Erlang VM may crash due to memory allocation failure. This is a VM-level crash that cannot be caught or handled by normal Erlang supervision or exception mechanisms.

Compliance Impact

This vulnerability could impact compliance with GDPR and HIPAA by causing system crashes when processing untrusted data, leading to potential data processing interruptions or unavailability. GDPR requires systems to ensure availability of processing services, while HIPAA mandates reliable access to protected health information. A VM crash may violate these requirements by disrupting service continuity.

Mitigation Strategies

Upgrade to a patched version of Erlang/OTP: OTP 29.0.4 or later, OTP 28.5.0.4 or later, or OTP 27.3.4.15 or later. For erts, upgrade to 17.0.4 or later, 16.4.0.4 or later, or 15.2.7.11 or later. Avoid decoding ETF from untrusted sources until patched.

Chat Assistant

Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-54890. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70

EPSS Chart