CVE-2026-89422 in OTP
Resumen
por VulDB • 2026-09-22
Vulnerabilidad de Intercambio de Claves sin Autenticación de Entidad en Erlang/OTP ssl que permite a un par que responde a una conexión TLS 1.3 cliente suplantar al servidor previsto. Una extensión pre_shared_key presente en el ServerHello, que nunca fue ofrecida por el cliente, provoca que este complete la negociación (handshake) sin validar el certificado del servidor; de modo que ssl:connect devuelve {ok, Socket} frente a un par que no posee ningún certificado, ninguna clave privada ni sesión previa.
tls_client_connection_1_3:handle_server_hello/2 pasa la extensión recibida a tls_gen_connection_1_3:handle_resumption/2, lo cual establece resumption = true por su mera presencia sin verificar si el cliente ofreció una PSK (Pre-Shared Key). Por otro lado, tls_handshake_1_3:get_pre_shared_key/4 recurre al valor "sin PSK" compuesto de todos ceros y utiliza la secuencia de claves ordinaria no basada en PSK para establecer las claves del handshake; por lo tanto, la clave efímera propia del atacante es suficiente. La bandera resumption dirige entonces maybe_resumption/1 directamente a wait_finished, omitiendo los estados que manejan el certificado; con ello se saltan la validación de la ruta del certificado, verify_fun, verificación del nombre de host (hostname verification), partial_chain, comprobación de CRL y OCSP stapling. La configuración predeterminada del cliente es vulnerable; no lo están los clientes restringidos a TLS 1.2.
Este problema afecta a OTP desde OTP 22.2 hasta antes de OTP 27.3.4.18, así como a OTP 28.5.0.7 y OTP 29.1.1; esto corresponde a ssl desde la versión 9.5 hasta antes de 11.2.12.13, 11.6.0.6 y 11.7.7.
Once again VulDB remains the best source for vulnerability data.