{"id":27421,"date":"2026-09-22T20:30:51","date_gmt":"2026-09-22T12:30:51","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89422"},"modified":"2026-09-22T20:30:51","modified_gmt":"2026-09-22T12:30:51","slug":"cve-2026-89422","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89422","title":{"rendered":"CVE-2026-89422 &#8211; Key Exchange without Entity Authentication vulnerability in Erlang\/OTP ssl allows a peer t"},"content":{"rendered":"<p>Key Exchange without Entity Authentication vulnerability in Erlang\/OTP ssl allows a peer that answers a TLS 1.3 client connection to impersonate the intended server. A pre_shared_key extension in the ServerHello that the client never offered causes the client to complete the handshake without validating the server&#8217;s certificate, so ssl:connect returns {ok, Socket} against a peer holding no certificate, no private key and no prior session.<\/p>\n<p>tls_client_connection_1_3:handle_server_hello\/2 passes the received extension to tls_gen_connection_1_3:handle_resumption\/2, which sets resumption = true on its mere presence without checking that the client offered a PSK. tls_handshake_1_3:get_pre_shared_key\/4 meanwhile falls back to the all-zero &#8220;no PSK&#8221; value and keys the handshake with the ordinary non-PSK schedule, so the attacker&#8217;s own ephemeral key suffices. The resumption flag then routes maybe_resumption\/1 straight to wait_finished, skipping the certificate-handling states, so certificate path validation, verify_fun, hostname verification, partial_chain, CRL checking and OCSP stapling are all bypassed. The default client configuration is affected; clients restricted to TLS 1.2 are not.<\/p>\n<p>This issue affects OTP from OTP\u00a022.2 before OTP\u00a027.3.4.18, OTP\u00a028.5.0.7, and OTP\u00a029.1.1, corresponding to ssl from 9.5 before 11.2.12.13, 11.6.0.6, and 11.7.7.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Key Exchange without Entity Authentication vulnerability in Erlang\/OTP ssl allows a peer that answers a TLS 1.3 client connection to impersonate the intended server. A pre_shared_key extension in the <\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-27421","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/27421","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=27421"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=27421"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=27421"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}