Se ha lanzado una versión corregida de OpenSSH 9.9p2, en la que se han solucionado dos vulnerabilidades identificadas por Qualys. Se ha demostrado un ejemplo de uso de estas vulnerabilidades para llevar a cabo un ataque MITM, permitiendo redirigir el tráfico a un servidor falso al intentar que un cliente se conecte a un servidor SSH, eludiendo la verificación de las claves del host y creando la ilusión de que el cliente se conecta al servidor deseado (el cliente SSH aceptará la clave del host del servidor falso en lugar de la clave del servidor legítimo).
La primera vulnerabilidad (CVE-2025-26465) se debe a un error lógico en la utilidad ssh, que permite eludir la verificación de la identidad del servidor y llevar a cabo un ataque MITM. El problema se presenta a partir de la versión OpenSSH 6.8p1 (diciembre de 2014) en configuraciones con la opción VerifyHostKeyDNS habilitada. En la instalación base de OpenSSH, esta opción está desactivada por defecto, pero estuvo habilitada en la configuración de ssh en FreeBSD hasta marzo de 2023.
El problema radica en que en el código de la función verify_host_key_callback() al invocar la función verify_host_key() solo se verifica el código de error "-1", mientras que otros códigos, como "-2", se ignoran. Como resultado, la función verify_host_key_callback() puede devolver un código de éxito "0", a pesar de que la función verify_host_key() haya devuelto un error "-2". El código de error "-2" se devuelve por la función verify_host_key() cuando hay falta de memoria. Si se crean condiciones que impidan la asignación de memoria en la función verify_host_key(), SSH asumirá que la clave del host ha sido verificada con éxito. Para crear tales condiciones, el servidor SSH falso del atacante, al que el cliente es redirigido, devuelve la clave del host de tamaño máximo posible (256KB), mientras que simultáneamente se explota una fuga de memoria en el lado del cliente ssh.
Las condiciones para crear una fuga de memoria se logran gracias a la segunda vulnerabilidad (CVE-2025-26466), que afecta tanto al cliente ssh como al servidor sshd, y explotado sin autenticación. La vulnerabilidad permite agotar la memoria disponible del proceso y crear una alta carga en la CPU al enviar una gran cantidad de paquetes SSH2_MSG_PING. En el manejador de paquetes SSH2_MSG_PING hay una fuga de memoria que se manifiesta desde la versión OpenSSH 9.5p1 (agosto de 2023). La fuga ocurre porque a cada paquete PING de 16 bytes se le asigna un búfer de 256 bytes para formar una respuesta, pero este búfer solo se libera después de completar la negociación de claves. Como solución de protección, se sugiere configurar restricciones usando las directivas LoginGraceTime, MaxStartups y PerSourcePenalties.
Fuente: opennet.ru
