La nueva versión de OpenSSH 9.8 ya fue liberada y en esta nueva versión que se presenta no solo corrige una vulnerabilidad crítica regreSSHion (CVE-2024-6387), sino que también aborda otra vulnerabilidad menos grave y propone varios cambios significativos para mejorar la seguridad.
Entre los cambios más importantes que se destacan de la nueva versión, se encuentra por ejemplo la eliminación de DSA. La compatibilidad con firmas digitales basadas en el algoritmo DSA, no es algo propio de la nueva versión, pero como tal ya estaba planeado que fuera deshabilitada de forma predeterminada en esta versión. El plan de eliminar la implementación de DSA del código base, será de forma escalonada a principios de 2025 debido a su nivel de seguridad insuficiente para cumplir con los estándares modernos. Esta medida fomentará la desaprobación del soporte DSA en otras implementaciones SSH y bibliotecas criptográficas.
Otro de los cambios que presenta OpenSSH 9.8, es la protección contra ataques automatizados, ya que se ha implementado y activado un nuevo modo de protección por defecto para mitigar métodos de explotación que intentan establecer múltiples conexiones a sshd. Este modo también ayuda a bloquear ataques automatizados de adivinación de contraseñas, monitorizando los intentos fallidos de autenticación y finalización anormal de procesos secundarios. Se pueden configurar parámetros como PerSourcePenalties, PerSourceNetBlockSize y PerSourcePenaltyExemptList para ajustar el umbral de bloqueo, la máscara de subred bloqueada y la lista de excepciones.
Ademas de ello, sshd se ha dividido en varios ejecutables independientes. El proceso sshd-session ahora se separa de sshd para manejar tareas específicas relacionadas con el procesamiento de la sesión, mientras que sshd conserva funciones para aceptar conexiones de red, verificar configuraciones, cargar claves de host y gestionar procesos de inicio según el parámetro MaxStartups.
En la versión portátil de sshd, se ha optimizado el manejo de archivos generados automáticamente y se asegura que se guarden en una rama de Git con versiones específicas (por ejemplo, V_9_8), facilitando la sincronización con la composición del tar firmado digitalmente y las ramas en Git.
En cuanto a la segunda vulnerabilidad que aborda OpenSSH 9.8, se menciona que esta permitía eludir la protección implementada en OpenSSH 9.5 contra ataques de canal lateral que analizan los tiempos entre pulsaciones de teclas en el teclado para reconstruir la entrada. Esta vulnerabilidad permite distinguir entre paquetes que generan actividad en segundo plano al simular pulsaciones de teclas ficticias y paquetes enviados cuando se presionan teclas reales, reduciendo así la efectividad del mecanismo para ocultar características de entrada interactiva en el tráfico SSH.
Los datos de pulsaciones de teclas pueden ser utilizados en ataques que reconstruyen la entrada al analizar los tiempos entre pulsaciones de teclas, que varían según la disposición del teclado (por ejemplo, la respuesta al escribir la letra «F» es más rápida que al escribir «Q» o «X», debido a la ubicación de las teclas y el movimiento de los dedos).
Además, se descubrió que el algoritmo utilizado para enviar paquetes con pulsaciones de teclas reales y ficticias comprometía la fiabilidad de otro método de protección contra ataques de canal lateral. Desde el lanzamiento de OpenSSH 2.9.9, el servidor ha enviado paquetes con pulsaciones de teclas ficticias para la entrada de la consola en modo de apagado de eco, utilizado por ejemplo al ingresar contraseñas en SUDO.
La nueva lógica para enviar paquetes ficticios permitía, durante el análisis de tráfico pasivo, seleccionar paquetes con pulsaciones de teclas reales en modo de apagado de eco para su análisis separado. Sin embargo, la precisión de la información sobre los tiempos entre pulsaciones es limitada, ya que los paquetes no se envían inmediatamente después de escribir, sino a intervalos fijos (por defecto, 20 ms).
De los demás cambios que se implementaron en OpenSSH 9.8, podremos encontrar lo siguiente:
- Se ha actualizado el texto de algunos mensajes de error en los registros. Ahora se utilizan nombres de proceso como «sshd-session» en lugar de «sshd» para una mejor claridad y seguimiento.
- La utilidad ssh-keyscan ahora genera información de versión del protocolo y nombre de host en una secuencia estándar en lugar de STDERR. Se puede deshabilitar la salida utilizando la opción «-q».
- En ssh, es posible desactivar la reversión del uso de un certificado de clave de host a claves de host simples mediante la directiva HostkeyAlgorithms.
- La versión portátil de sshd ahora soporta enviar notificaciones a systemd al crear o reiniciar un socket de red de escucha, utilizando código independiente que no depende de la biblioteca libsystemd.
Finalmente, si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.