Summary
CVE-2026-65634 is a denial-of-service vulnerability in the ASN.1 OBJECT IDENTIFIER (OID) decoder shipped with Erlang/OTP’s asn1 module. The decoder uses an algorithm with quadratic time complexity when parsing a single very large base-128 subidentifier, allowing a remote, unauthenticated attacker to exhaust CPU on a target by sending a crafted OID — most notably inside an X.509 certificate presented during a TLS handshake. The issue carries a CVSS score of 8.2 (High).
Technical details
- Root cause: The decoder routines
asn1rtt_ber:dec_subidentifiers/3(BER),asn1rtt_per_common:dec_subidentifiers/3(PER), andasn1rtt_jer:json2oid/1(JER) accumulate each base-128 continuation byte into an unbounded integer via repeated bit-shift-and-add operations. Because each operation’s cost grows with the number of bits already accumulated, decoding a single long subidentifier is quadratic in its length rather than linear. - Trigger conditions: A DER/PER-encoded OBJECT IDENTIFIER containing one abnormally large arc (encoded as a long run of base-128 continuation bytes, roughly 262 KB) triggers the excessive computation; on typical hardware this can consume on the order of 13 seconds of CPU per decode.
- Attack vector: Network. The generated OID decoder is embedded in every ASN.1 module that includes an OBJECT IDENTIFIER, including
OTP-PUB-KEY, which is used during X.509 certificate parsing (public_key:pkix_decode_cert/2). This code path executes before signature or trust-chain verification, so any Erlang process that parses a peer’s TLS certificate — TLS clients by default, and mutual-TLS servers with peer verification enabled — can be forced to decode an attacker-supplied malicious certificate. - Impact: Repeated requests containing crafted OIDs/certificates can exhaust server CPU, degrading or denying service for the affected Erlang node and any application built on it (e.g., messaging brokers, XMPP servers) that terminates TLS with peer certificate verification.
Affected software
- Erlang/OTP 17.0 up to (but not including) 27.3.4.18
- Erlang/OTP 28.0 up to (but not including) 28.5.0.7
- Erlang/OTP 29.0 up to (but not including) 29.1.1
asn1module 3.0 up to (but not including) 5.3.4.3, 5.4.3.1, or 5.5.2 respectively
Severity
CVSS v4.0 Base Score: 8.2 (High)
Vector: 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
Mitigation and recommended actions
- Immediate: Upgrade Erlang/OTP to 27.3.4.18, 28.5.0.7, or 29.1.1 (or update the standalone
asn1module to 5.3.4.3, 5.4.3.1, or 5.5.2, matching your OTP release line). - If patching is not immediately possible: No workaround exists that fully eliminates the exposure. Since the vulnerable code path is only reached when a peer certificate is decoded, limiting exposure to untrusted TLS peers (e.g., restricting which clients can complete a TLS handshake with
verify_peerenabled, or placing the service behind network-level filtering) can reduce risk until the upgrade is applied.

