OpenSSH 9.2 llega corrigiendo 3 vulnerabilidades y con algunas mejoras
Se dio a conocer el lanzamiento de la nueva versión de la implementación abierta de cliente y servidor para trabajar con los protocolos SSH 2.0 y SFTP, «OpenSSH 9.2».
La nueva versión corrige una vulnerabilidad, que conduce a la doble liberación de un área de memoria en la etapa anterior a la autenticación. La vulnerabilidad afecta únicamente al lanzamiento de OpenSSH 9.1, en versiones anteriores no aparece el problema.
Para crear condiciones para la manifestación de una vulnerabilidad, basta cambiar el banner del cliente SSH a «SSH-2.0-FuTTYSH_9.1p1» para lograr la configuración de los flags «SSH_BUG_CURVE25519PAD» y «SSH_OLD_DHGEX», según la versión del cliente SSH.
Después de configurar estos indicadores, la memoria para el búfer «options.kex_algorithms» se libera dos veces: al ejecutar la función do_ssh2_kex(), que llama a compat_kex_proposal(), y al ejecutar la función do_authentication2(), que llama a input_userauth_request(), mm_getpwnamallow( ), copy_set_server_options() a lo largo de la cadena, ensemble_algorithms() y kex_assemble_names().
Se considera improbable crear un exploit funcional para la vulnerabilidad, ya que el proceso de explotación es demasiado complicado: las bibliotecas de asignación de memoria modernas brindan protección contra la liberación doble de memoria, y el proceso de autenticación previa, en el que hay un error, se ejecuta con privilegios reducidos en un sandbox.
Además de la vulnerabilidad mencionada, la nueva versión también corrige dos problemas de seguridad más:
- Ocurrió un error al procesar la configuración » PermitRemoteOpen «, lo que provocó que se ignorara el primer argumento si es diferente de los valores «cualquiera» y «ninguno». El problema aparece en versiones posteriores a OpenSSH 8.7 y hace que se omita la verificación cuando solo se especifica un permiso.
- Un atacante que controla el servidor DNS utilizado para resolver nombres puede lograr la sustitución de caracteres especiales (por ejemplo, «*») en archivos de hosts conocidos si las opciones CanonicalizeHostname y CanonicalizePermittedCNAMEs están habilitadas en la configuración y el sistema de resolución no verifica la corrección de respuestas del servidor DNS. Se considera poco probable que se lleve a cabo el ataque, ya que los nombres devueltos deben coincidir con las condiciones especificadas a través de CanonicalizePermittedCNAME.
Novedades de OpenSSH 9.2
De los cambios que se realizaron en OpenSSH 9.2 se destaca que se agregó una configuración EnableEscapeCommandline a ssh_config para controlar si el procesamiento del lado del cliente de la secuencia de escape «~C» siempre que la línea de comando esté habilitada. De forma predeterminada, el procesamiento «~C» ahora está deshabilitado para permitir un sandboxing más estricto, lo que podría romper los sistemas que usan «~C» para el reenvío de puertos en tiempo de ejecución
Se ha agregado la directiva ChannelTimeout a sshd_config para que sshd establezca el tiempo de espera de inactividad del canal (los canales en los que no se haya detectado tráfico durante el tiempo especificado en la directiva se cerrarán automáticamente). El tráfico de sesión, X11, agente y redireccionamiento puede tener diferentes tiempos de espera.
De los demas cambios:
- Se agregó una directiva UnusedConnectionTimeout a sshd_config para sshd, que le permite establecer un tiempo de espera para finalizar las conexiones de clientes que han estado sin canales activos durante un tiempo determinado.
- Se agregó la opción «-V» a sshd para mostrar una versión similar a la opción de cliente ssh.
- Se agregó la cadena «Host» a la salida de «ssh -G» para reflejar el valor del argumento del nombre de host.
- Se agregó la opción «-X» a scp y sftp para controlar los parámetros de SFTP, como el tamaño del búfer de copia y la cantidad de solicitudes pendientes.
- ssh-keyscan permite escanear rangos completos de direcciones CIDR, por ejemplo, «ssh-keyscan 192.168.0.0/24».
Finalmente si estás interesado en conocer más al respecto sobre esta nueva versión, puedes consultar los detalles dirigiéndote al siguiente enlace.
¿Como instalar OpenSSH 9.2 en Linux?
Para quienes estén interesados en poder instalar esta nueva versión de OpenSSH en sus sistemas, de momento podrán hacerlo descargando el código fuente de este y realizando la compilación en sus equipos.
Esto es debido a que la nueva versión aún no se ha incluido dentro de los repositorios de las principales distribuciones de Linux. Para obtener el código fuente, puedes hacer desde el siguiente enlace.
Hecha la descarga, ahora vamos a descomprimir el paquete con el siguiente comando:
tar -xvf openssh-9.2.tar.gz
Entramos al directorio creado:
cd openssh-9.2
Y podremos realizar la compilación con los siguientes comandos:
./configure --prefix=/opt --sysconfdir=/etc/ssh make make install