Impact
The Erlang/OTP SSL client for TLS 1.2 and earlier does not verify that the cipher suite selected by the server during the handshake was among the suites offered by the client. An on‑path attacker can inject a ServerHello that selects an anonymous key‑exchange suite such as TLS_DH_anon_* or TLS_ECDH_anon_*. Because these suites do not require a server certificate, the usual peer verification and hostname checks are bypassed. The client accepts the connection and returns {ok, Socket}, treating it as authenticated. Consequently, an attacker can read and modify the entire application traffic. The defect affects OTP R13B03 releases before OTP 27.3.4.15, OTP 28.0 before OTP 28.5.0.4, and OTP 29.0 before OTP 29.0.4 (corresponding to ssl versions 3.10.7 before 11.2.12.11, 11.3 before 11.6.0.4, and 11.7 before 11.7.4).
Affected Systems
The flaw exists in Erlang/OTP releases from OTP R13B03 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 versions 3.10.7 before 11.2.12.11, 11.3 before 11.6.0.4, and 11.7 before 11.7.4. The status of OTP releases before OTP R13B03 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