Skip to main content

Erlang/OTP EUVDEUVD-2026-49326

| CVE-2026-54890 HIGH
Integer Underflow (CWE-191)
2026-07-27 6b3ad84c-e1a6-4bf7-a703-f496b71e49db
8.2
CVSS 4.0 · Vendor: 6b3ad84c-e1a6-4bf7-a703-f496b71e49db
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify endpoint decoding untrusted ETF
  2. Delivery
    Send crafted BIT_BINARY_EXT term (zero length/trailing-bits)
  3. Exploit
    Size computation underflows to ~2^64
  4. Execution
    Allocator aborts entire BEAM node
  5. Impact
    Uncatchable VM crash denies service

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Integer underflow checks
Exploitation Conditions

Exploitation requires that the target application decode Erlang External Term Format from an untrusted source via binary_to_term/1,2 or enif_binary_to_term() - this is the concrete gate (reflected as AT:P in the vendor vector). The [safe] option to binary_to_term/2 does NOT mitigate it, since [safe] only restricts atom creation and performs no structural validation of binary encodings. The Erlang distribution protocol traverses the same decoder, but per OTP Secure Coding Guideline DSG-011 distribution is expected to run only on trusted networks, so distribution-only exposure is not a realistic attack surface. Affected: OTP 27.0 up to (not including) 29.0.4, plus 28.5.0.4 and 27.3.4.15 (erts 15.0 up to 17.0.4, and 16.4.0.4 / 15.2.7.11). The limiting factor is application design: nodes that never pass untrusted bytes to term decoding are not exposed regardless of version.

Impact

This is a genuine but bounded availability risk, not a top-tier emergency. The vendor CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:N) with VA:H and VC:N/VI:N correctly scopes this as an availability-only, network-reachable, unauthenticated flaw whose only impact is a full VM abort of the Erlang node - there is no code execution or data disclosure despite the 'Forced Integer Overflow' framing. The AT:P (attack requirements present) metric is the pivotal honest signal: exploitation is not universal against a default install but requires an application that feeds attacker-controlled bytes into binary_to_term/1,2 or enif_binary_to_term(). All exploitation-maturity signals point away from urgency: EPSS is 0.32% (24th percentile), there is no CISA KEV listing, no public exploit code is referenced, and CISA SSVC records Exploitation:none / Automatable:no / Technical Impact:partial. These are internally consistent - a low-EPSS, non-KEV, non-automatable finding with partial technical impact. The severity driver is the un-catchable nature of the crash (it bypasses supervision trees, try/catch, and the [safe] option), which turns a single crafted term into an unrecoverable node kill for exposed services. Net: treat as a standard-priority patch for any service that decodes untrusted ETF; deprioritize for nodes that only decode ETF over trusted distribution links.

Exploit ScenarioDerived

An attacker identifies a service that deserializes external input with binary_to_term (e.g. a message queue, cache, session token, or custom protocol endpoint that accepts ETF), and sends the 7-byte crafted BIT_BINARY_EXT term <<131,77,0,0,0,0,0>> with both length and trailing-bits set to zero. The size computation underflows to ~2^64, the allocator refuses the impossible allocation, and the entire BEAM VM aborts - killing all processes on the node in one shot, uncatchable by supervision. No public exploit code is identified at time of analysis, but the trigger is trivially small and fully documented in the fix's test case.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 16, 2026

Erlang/OTP nodes that decode External Term Format (ETF) from untrusted sources can be aborted outright by a single malformed term, in versions from OTP 27.0 up to but not including the fixed releases OTP 29.0.4, 28.5.0.4 and 27.3.4.15 (erts 15.0 up to 17.0.4, 16.4.0.4 and 15.2.7.11). The BIT_BINARY_EXT tag (77) handler accepts an encoding with zero length and zero trailing bits, causing an unsigned underflow in the computed bitstring size; the resulting value near 2^64 is handed to the allocator, which terminates the entire VM with an abort rather than raising a catchable Erlang exception. The vulnerability is unauthenticated (CVSS 4.0 vector PR:N) but requires the target application to feed attacker-controlled bytes into binary_to_term/1,2 or enif_binary_to_term(), an application-design precondition reflected as AT:P in the vendor vector and assessed as AC:H in our CVSS 3.1 evaluation; impact is availability-only (C:N/I:N/A:H). There is no indication of active exploitation (not in CISA KEV; SSVC exploitation: none) and EPSS is low at 0.32% (24th percentile), and no public exploit code has been identified at time of analysis. Vendor-released patches are available.

RemediationAI

Vendor-released patches are available: upgrade to OTP 29.0.4, or to the branch backports 28.5.0.4 (OTP 28.x) or 27.3.4.15 (OTP 27.x), which ship erts 17.0.4, 16.4.0.4 and 15.2.7.11 respectively; the fix is upstream commit dc1bf9344c0ce62717cf60866590cea0242780fd, documented in GHSA-54pw-5645-jh86 and https://cna.erlef.org/cves/CVE-2026-54890.html, and Red Hat users should track RHSA-2026:47009 for backported packages. Because the crash is a VM-level abort, no in-VM mitigation is reliable: try/catch, supervision trees and the [safe] flag on binary_to_term/2 all fail to contain it, so patching is the only complete fix. Where immediate upgrade is not possible, treat ETF strictly as a trusted-boundary format: stop passing untrusted bytes to binary_to_term/1,2 or enif_binary_to_term() (for example, accept JSON, Protocol Buffers or another externally validated format from clients, or keep untrusted payloads as opaque binaries and never decode them in the exposed node) - the trade-off is application refactoring and possible loss of Erlang term fidelity; if decoding untrusted ETF is unavoidable, isolate it in a dedicated, disposable node that only speaks to untrusted peers and never holds state, so its abort does not take down the service tier - the trade-off is extra infrastructure, connection overhead and the need for a parent process (heart, systemd restart, or an external manager) to restart the sacrificial node; and confirm distribution is confined to trusted networks per OTP Secure Coding Guideline DSG-011, with TLS and cookie-based authentication on the distribution port and no distribution listener exposed to untrusted segments, which reduces but does not eliminate the risk for applications that legitimately decode untrusted ETF.

Affected VersionsENISA

otp 24ef4cbaeda9b9c26682cba75f2f15b0c58722aa <dc1bf9344c0ce62717cf60866590cea0242780fd
otp 15.0 <*
otp 27.0 <*

Affects your stack

Find out whether the stacks and servers you run are on an affected version.

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The External Term Format is Erlang's binary serialization protocol, decoded in the emulator by erts/emulator/beam/external.c and exposed to Erlang code through binary_to_term/1,2 and to NIFs through enif_binary_to_term(). The BIT_BINARY_EXT tag (77) encodes a bitstring as a byte length plus a trailing-bit count; a valid overlong zero-bit bitstring (encoded in the wild as 0 bytes with 0 trailing bits) should be normalized to an empty binary, but the original check only verified that the trailing-bit count and byte length were consistent and that trailing_bits did not exceed 8. By supplying length 0 and trailing bits 0, the subsequent size computation (roughly trailing_bits + 8*size, decremented and interpreted unsigned) underflows, yielding approximately 2^64, which is then passed as an allocation size and trips the allocator assertion, e.g. 'Cannot allocate 2305843009213693951 bytes of memory (of type binary)'. This is CWE-191 (Integer Underflow / Wrap or Wraparound) in the erts decode path, and the fix (upstream commit dc1bf9344c0ce62717cf60866590cea0242780fd) rewrites the guard to reject trailing_bits < 1, trailing_bits > 8, or size_in_bits < 8, with a regression test in erts/emulator/test/binary_SUITE.erl covering the overlong 0-bit bitstring <<131,77,0,0,0,0,0>>. Critically, this is a VM-level abort, not an Erlang-level exception: it cannot be trapped by try/catch or supervision trees, and the [safe] option to binary_to_term/2 does not help because [safe] only restricts atom creation and performs no structural validation of binary encodings. The Erlang distribution protocol traverses the same decoder, but per the OTP Secure Coding Guidelines (DSG-011) distribution is expected to run on trusted networks, so distribution-only exposure is not considered a realistic attack surface.

Know when Erlang Otp gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (6b3ad84c-e1a6-4bf7-a703-f496b71e49db) PRIMARY 8.2 HIGH
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
vuln.today AI 5.9 MEDIUM

Network-reachable and unauthenticated, but AC:H because it requires an application that feeds untrusted input to ETF decoding; impact is availability-only (uncatchable node abort), so C:N/I:N/A:H.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
SUSE 5.9 MEDIUM
AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
Red Hat 7.5 HIGH

Primary rating from Vendor (6b3ad84c-e1a6-4bf7-a703-f496b71e49db).

CVSS VectorVendor: 6b3ad84c-e1a6-4bf7-a703-f496b71e49db

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

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.

Executive ViewAI

Why It Matters

A remotely reachable input-validation flaw in Erlang/OTP can crash an entire node, taking down any service built on it - messaging platforms, telecom infrastructure, message brokers, and distributed databases. Although no public exploit code or active exploitation has been observed, the trigger is a single malicious byte sequence delivered to any endpoint that decodes External Term Format data from untrusted sources, making availability loss achievable with minimal attacker effort. Leadership should care because the failure mode is a full virtual machine abort rather than a contained error, so a single inbound packet can produce a complete service outage rather than a degraded one.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.3%
Top 76% exploitable
Prevalence
High
Erlang/OTP runtime underpins widely-deployed backend systems (RabbitMQ, Elixir/Phoenix, ejabberd)
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment Vendor GitHub

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

41
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +41
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Integer overflow occurs when an arithmetic operation produces a result that exceeds the maximum value a given integer type can store.

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

CVE-2025-32433 CRITICAL POC
10.0 Apr 16

Erlang/OTP SSH server allows unauthenticated remote code execution by exploiting a flaw in SSH protocol message handling

CVE-2017-1000385 MEDIUM POC
5.9 Dec 12

The Erlang otp TLS server answers with different TLS alerts to different error types in the RSA PKCS #1 1.5 padding. Rat

CVE-2023-48795 MEDIUM POC
5.9 Dec 18

The SSH transport protocol with certain OpenSSH extensions, found in OpenSSH before 9.6 and other products, allows remot

CVE-2014-1693 HIGH POC
7.5 Dec 08

Multiple CRLF injection vulnerabilities in the FTP module in Erlang/OTP R15B03 allow context-dependent attackers to inje

CVE-2021-29221 HIGH POC
7.0 Apr 09

A local privilege escalation vulnerability was discovered in Erlang/OTP prior to version 23.2.3. Rated high severity (CV

CVE-2016-10253 CRITICAL
9.8 Mar 18

An issue was discovered in Erlang/OTP 18.x. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitab

CVE-2022-37026 CRITICAL
9.8 Sep 21

In Erlang/OTP before 23.3.4.15, 24.x before 24.3.4.2, and 25.x before 25.0.2, there is a Client Authentication Bypass in

CVE-2026-59251 HIGH
8.7 Jul 27

Denial of service in Erlang/OTP's TLS handshake allows remote unauthenticated attackers to crash the BEAM VM by sending

CVE-2026-42790 HIGH
7.6 May 27

TLS server impersonation in Erlang/OTP's public_key library lets a name-constrained subordinate CA forge a trusted ident

CVE-2020-25623 HIGH
7.5 Oct 02

Erlang/OTP 22.3.x before 22.3.4.6 and 23.x before 23.1 allows Directory Traversal. Rated high severity (CVSS 7.5), this

CVE-2026-42789 HIGH
7.0 May 27

Certificate chain forgery in Erlang/OTP's public_key application (pubkey_cert module) lets a non-CA end-entity certifica

CVE-2026-42791 MEDIUM
6.3 May 27

OCSP responder certificate validity bypass in Erlang OTP's public_key library allows forged OCSP responses-signed with t

Vendor StatusVendor

SUSE

Severity: Moderate
Product Status
SUSE Linux Enterprise High Performance Computing 15 SP7 Not-Affected
SUSE Linux Enterprise High Performance Computing 15 SP7 Not-Affected
SUSE Linux Enterprise Module for Server Applications 15 SP7 Not-Affected
SUSE Linux Enterprise Module for Server Applications 15 SP7 Not-Affected
SUSE Linux Enterprise Server 15 SP7 Not-Affected

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy