Se ha publicado la versión OpenSSH 9.8, una implementación abierta del cliente y servidor para trabajar con los protocolos SSH 2.0 y SFTP. Además de corregir una vulnerabilidad crítica anunciada por separado (CVE-2024-6387), que permite la ejecución remota de código con privilegios de root antes de la autenticación, en la nueva versión se ha solucionado otra vulnerabilidad menos grave y se han propuesto varios cambios significativos dirigidos a mejorar la seguridad.
La segunda vulnerabilidad permite eludir la protección añadida en la versión OpenSSH 9.5 contra ataques a través de canales laterales, que analizan los retrasos entre las pulsaciones de teclas en el teclado para recrear la entrada. Esta vulnerabilidad permite distinguir los paquetes que generan actividad en segundo plano mediante la simulación de pulsaciones ficticias de teclas, de aquellos paquetes que se envían al presionar teclas reales, lo que reduce la efectividad del mecanismo de ocultación de las características de la entrada interactiva en el tráfico SSH. Los datos sobre las pulsaciones permiten usar ataques que recrean la entrada basándose en el análisis de los retrasos entre las pulsaciones al teclear, que dependen de la disposición de las teclas en el teclado (por ejemplo, la reacción al introducir la letra 'F' es más rápida que al introducir 'Q' o 'X', ya que se requieren menos movimientos de los dedos para presionar).
Además, se ha descubierto que el algoritmo implementado para el envío de paquetes con pulsaciones reales y ficticias disminuía la fiabilidad de otro método de defensa contra ataques a través de canales laterales. Desde el lanzamiento de
OpenSSH 2.9.9 servidor enviaba paquetes con pulsaciones ficticias para la entrada de consola en modo echo-off, que se utiliza, por ejemplo, al introducir contraseñas en su o sudo. La nueva lógica de envío de paquetes ficticios permitía, en el análisis pasivo del tráfico, destacar los paquetes con pulsaciones reales en modo echo-off para su análisis separado. Sin embargo, la precisión de los datos sobre el tiempo de las pulsaciones está limitada, ya que después de la entrada, los paquetes no se envían de inmediato, sino a través de intervalos de tiempo fijos (por defecto, 20 ms).
Otros cambios en OpenSSH 9.8:
- En la etapa de ensamblaje, la compatibilidad con firmas digitales basadas en el algoritmo DSA está desactivada por defecto. A principios de 2025, la implementación de DSA será eliminada del código fuente. La razón dada para la eliminación es que el nivel de seguridad en DSA no cumple con los requisitos modernos. Los costos de continuar el soporte de un algoritmo inseguro como DSA no se justifican, y su eliminación permitirá fomentar la interrupción del soporte de DSA en otras implementaciones de SSH y bibliotecas criptográficas.
- Para una protección adicional contra métodos de explotación de vulnerabilidades que requieren establecer un gran número de conexiones a sshd, se ha implementado y habilitado por defecto un nuevo modo de protección, que también ayuda a bloquear ataques automatizados de fuerza bruta, en los que los bots intentan adivinar la contraseña del usuario probando diversas combinaciones típicas. La protección se implementa mediante el bloqueo direcciones IP, de aquellas que registran un gran número de intentos de conexión fallidos. El sshd rastrea el estado de finalización de los procesos secundarios, identificando situaciones en las que la autenticación ha fallado o cuando el proceso se ha cerrado inesperadamente debido a un fallo, y al superar un determinado umbral comienza a bloquear solicitudes desde IP problemáticas o subredes. Para configurar el umbral de activación del bloqueo, la máscara de la subred bloqueada y la lista de excepciones se han propuesto los parámetros PerSourcePenalties, PerSourceNetBlockSize y PerSourcePenaltyExemptList.
- Se ha realizado una separación del sshd en varios archivos ejecutables independientes. Se ha extraído el proceso sshd-session, que se encarga de las tareas relacionadas con el manejo de sesiones. En el proceso sshd se han dejado las funciones responsables de aceptar conexiones de red, verificar la configuración, cargar las claves del host y gestionar los procesos en ejecución de acuerdo con el parámetro MaxStartups. De este modo, el archivo ejecutable sshd ahora contiene la funcionalidad mínima necesaria para aceptar una nueva conexión de red y lanzar sshd-session para manejar la sesión.
- Se ha modificado el texto de algunos mensajes de error que se registran en el log. En particular, varios mensajes ahora son enviados en nombre del proceso «sshd-session», y no del «sshd».
- En la utilidad ssh-keyscan, la información sobre la versión del protocolo y el nombre del host ahora se envía al flujo estándar, y no a STDERR. Se ha propuesto la opción «-q» para desactivar esta salida.
- En ssh se ha implementado la posibilidad de desactivar, a través de la directiva HostkeyAlgorithms, la utilización de certificados de clave de host, volviendo al uso de claves de host simples.
- En la versión portátil de sshd se ha dejado de usar el valor argv[0] para determinar el nombre del servicio PAM. Se ha añadido una nueva directiva en sshd_config llamada "PAMServiceName" para establecer el nombre del servicio PAM, que por defecto se establece en "sshd".
- En la versión portátil de sshd se ha asegurado la conservación de archivos generados automáticamente (como el script configure, config.h.in, etc.) en la rama Git con lanzamientos (por ejemplo, V_9_8), lo que ha permitido sincronizar el contenido de los archivos tar archivados con firma digital y las ramas en Git.
- En la versión portátil de ssh y ssh-agent se ha implementado la configuración del modo
SSH_ASKPASS en presencia de la variable de entorno WAYLAND_DISPLAY, de manera similar a como se hacía para X11 en presencia de la variable de entorno DISPLAY. - En la versión portátil de sshd se ha añadido soporte para enviar notificaciones a systemd al crear un socket de red de escucha o reiniciarlo, utilizando un código separado que no interactúa con la biblioteca libsystemd.
Fuente: opennet.ru
