Impact
The Erlang/OTP ssl TLS 1.2 (and earlier) and DTLS client does not verify that the cipher suite chosen by the server in ServerHello belongs to the set of suites offered in ClientHello. The client’s handshake handler validates only the protocol version and downgrade sentinel, then installs the server‑selected suite without a membership check. As a result, an on‑path attacker can send a ServerHello that picks an anonymous key‑exchange suite such as TLS_DH_anon_* or TLS_ECDH_anon_* that the client never offered. These anonymous suites bypass the requirement for a server certificate, so configuration options verify_peer and cacerts are ineffective; the attacker completes the handshake with its own parameters, receives an {ok, Socket} response, and can read and modify all subsequent traffic. This flaw affects OTP releases 17.0 before 27.3.4.15, 28.0 before 28.5.0.4, and 29.0 before 29.0.4, corresponding to ssl versions 5.3.4 before 11.2.12.11, 11.3 before 11.6.0.4, and 11.7 before 11.7.4. Whether OTP releases before 17.0, corresponding to ssl before 5.3.4, is affected is unknown.
Affected Systems
The flaw exists in Erlang/OTP releases from OTP 17.0 before OTP 27.3.4.15, from OTP 28.0 before OTP 28.5.0.4, and from OTP 29.0 before OTP 29.0.4, corresponding to ssl from 5.3.4 before 11.2.12.11, from 11.3 before 11.6.0.4, and from 11.7 before 11.7.4. Whether OTP releases before OTP 17.0, corresponding to ssl before 5.3.4, is affected is unknown. Any Erlang/OTP image built with these releases that uses TLS 1.2 or DTLS in client mode is vulnerable. Upgrading to OTP 29.0.4 or later (or any build that includes the patches in commits 064e2364, 0a82596d, e6ff9381) removes the defect.
Risk and Exploitability
The vulnerability carries a CVSS score of 9.1, placing it in the high‑severity category. The EPSS score is < 1%, indicating a low probability of exploitation, but the defect still allows an on‑path attacker to achieve full traffic disclosure and tampering without any credentials. The attacker can choose any anonymous cipher suite, bypassing cryptographic verification. The TLS 1.3 client path is not affected because it performs the required membership check. The flaw is not listed in CISA KEV, yet organizations that use older OTP releases should treat the risk as high and remediate promptly. A temporary mitigation is to restrict clients to TLS 1.3 only by setting the ssl option versions to ['tlsv1.3'], which forces the proper check; this step can be taken until an upgrade can be applied.
OpenCVE Enrichment
Debian DSA