OpenSSH 9.2 lanzado con solución para vulnerabilidad de autenticación previa

Se ha publicado el lanzamiento de OpenSSH 9.2, una implementación abierta de cliente y servidor para trabajar bajo los protocolos SSH 2.0 y SFTP. La nueva versión elimina una vulnerabilidad que provoca una doble liberación de memoria en la etapa de autenticación previa. Sólo la versión OpenSSH 9.1 se ve afectada; el problema no aparece en versiones anteriores.

Para crear las condiciones para la manifestación de una vulnerabilidad, basta con cambiar el banner del cliente SSH a "SSH-2.0-FuTTYSH_9.1p1" para configurar los indicadores "SSH_BUG_CURVE25519PAD" y "SSH_OLD_DHGEX", que dependen de la versión de SSH. cliente. Después de configurar estos indicadores, la memoria para el búfer “options.kex_algorithms” se libera dos veces: cuando se ejecuta la función do_ssh2_kex(), que llama a compat_kex_proposal(), y cuando se ejecuta la función do_authentication2(), que llama a input_userauth_request(), mm_getpwnamallow( ), copy_set_server_options() a lo largo de la cadena, ensamblar_algoritmos() y kex_assemble_names().

Se considera poco probable crear un exploit que funcione para la vulnerabilidad, ya que el proceso de explotación es demasiado complicado: las bibliotecas modernas de asignación de memoria brindan protección contra la doble liberación de memoria y el proceso de autenticación previa en el que está presente el error se ejecuta con privilegios reducidos en un entorno aislado. entorno de caja de arena.

Además de la vulnerabilidad señalada, la nueva versión también soluciona dos problemas de seguridad más:

  • Se produjo un error al procesar la configuración "PermitRemoteOpen", lo que provocó que se ignorara el primer argumento si difiere 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 controle el servidor DNS utilizado para resolver nombres puede lograr la sustitución de caracteres especiales (por ejemplo, "*") en archivosknown_hosts si las opciones CanonicalizeHostname y CanonicalizePermittedCNAMEs están habilitadas en la configuración y el sistema de resolución no verifica la exactitud de respuestas del servidor DNS. El ataque se considera poco probable porque los nombres devueltos deben coincidir con las condiciones especificadas a través de CanonicalizePermittedCNAMEs.

Otros cambios:

  • Se agregó una configuración EnableEscapeCommandline a ssh_config para que ssh controle si el procesamiento del lado del cliente de la secuencia de escape "~C" que proporciona la línea de comando está habilitado. De forma predeterminada, el manejo de "~C" ahora está deshabilitado para usar un aislamiento más estricto de la zona de pruebas, lo que podría dañar los sistemas que usan "~C" para el reenvío de puertos en tiempo de ejecución.
  • La directiva ChannelTimeout se agregó a sshd_config para que sshd establezca el tiempo de espera de inactividad del canal (los canales en los que no se registra tráfico durante el tiempo especificado en la directiva se cerrarán automáticamente). Se pueden configurar diferentes tiempos de espera para sesión, X11, agente y redirección de tráfico.
  • La directiva UnusedConnectionTimeout se agregó a sshd_config para sshd, lo que le permite establecer un tiempo de espera para finalizar las conexiones de clientes que han estado sin canales activos durante un tiempo determinado.
  • La opción "-V" se agregó a sshd para mostrar la versión, similar a la opción similar en el cliente ssh.
  • Se agregó la línea "Host" a la salida de "ssh -G", reflejando el valor del argumento del nombre de host.
  • La opción "-X" se ha agregado a scp y sftp para controlar los parámetros del protocolo SFTP, como el tamaño del búfer de copia y el número de solicitudes pendientes.
  • ssh-keyscan permite escanear rangos completos de direcciones CIDR, por ejemplo "ssh-keyscan 192.168.0.0/24".

Fuente: opennet.ru

Añadir un comentario