CVE-2026-55737: Heap pointer corruption via signed/unsigned mismatch in LARGE_TUPLE_EXT decoding in erts external term format decoder
Heap pointer corruption via signed/unsigned mismatch in LARGETUPLEEXT decoding in erts external term format decoder
Other sources
Signed to Unsigned Conversion Error and Out-of-bounds Write vulnerability in Erlang OTP erts allows an attacker who can supply a crafted Erlang external term format (ETF) binary to binarytoterm/1 to corrupt the BEAM heap pointer and crash the virtual machine.
When decoding a LARGETUPLEEXT term, the validation pass decodedsize() in erts/emulator/beam/external.c reads the 32-bit arity field as unsigned (getuint32()), while the decode pass decterm() reads the same field as a signed 32-bit integer (getint32()) into an int. An arity wire value of 0x80000000 passes validation as 2147483648 but decodes as -2147483648, so the subsequent hp += n moves the heap allocation pointer backward. Neither pass enforces the runtime tuple-arity limit MAXARITYVAL. The result is an out-of-bounds heap write; in practice the VM detects an impossible heap size and aborts, denying service. The required padding is large when uncompressed but the compressed-ETF envelope shrinks it to a small payload on the wire.
This issue affects OTP from OTP 25.0 before OTP 29.0.4, OTP 28.5.0.4 and OTP 27.3.4.15, corresponding to erts from 13.0 before 17.0.4, 16.4.0.4 and 15.2.7.11.
— MITRE
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 26.2.5.21-3 - Upgrade
Upgrade
Erlang OTP erts (external term format decoder)to a version that resolves this vulnerability.Fixed in 29.0.4 - Upgrade
Upgrade
Erlang OTP erts (external term format decoder)to a version that resolves this vulnerability.Fixed in 28.5.0.4 - Upgrade
Upgrade
Erlang OTP erts (external term format decoder)to a version that resolves this vulnerability.Fixed in 27.3.4.15 - Upgrade
Upgrade
erts (Erlang OTP)to a version that resolves this vulnerability.Fixed in 17.0.4 - Upgrade
Upgrade
erts (Erlang OTP)to a version that resolves this vulnerability.Fixed in 16.4.0.4 - Upgrade
Upgrade
erts (Erlang OTP)to a version that resolves this vulnerability.Fixed in 15.2.7.11 - Compensating control
If you accept untrusted inputs, ensure attackers cannot reach binary_to_term/1 with crafted Erlang external term format (ETF) binaries (e.g., restrict where binary_to_term/1 is called to trusted data paths).
Event History
Frequently Asked Questions
What is the severity of CVE-2026-55737?
The severity of CVE-2026-55737 is rated at 62.
How do I fix CVE-2026-55737?
To mitigate CVE-2026-55737, update your Erlang OTP to the latest version that contains the security patch.
What software is affected by CVE-2026-55737?
CVE-2026-55737 affects Erlang OTP, specifically the erts component.
What kind of attack does CVE-2026-55737 exploit?
CVE-2026-55737 can be exploited by supplying a crafted Erlang external term format binary to binary_to_term/1.
What is the impact of CVE-2026-55737?
The impact of CVE-2026-55737 is a potential crash of the BEAM virtual machine due to heap pointer corruption.