Se ha publicado la versión OpenSSH 10.0, una implementación abierta de cliente y servidor para trabajar con los protocolos SSH 2.0 y SFTP. Principales cambios:
- Se ha eliminado el soporte para firmas digitales basadas en el algoritmo DSA, cuyo nivel de protección no cumple con los requisitos modernos. Los costos de continuar el mantenimiento de un algoritmo DSA inseguro no se justifican, y su eliminación incentivará el cese del soporte de DSA en otras implementaciones de SSH y bibliotecas criptográficas. De forma predeterminada, el uso de claves DSA se interrumpió en 2015.
- Se ha continuado con la separación de sshd en varios archivos ejecutables individuales. En OpenSSH 9.8, se aisló el proceso sshd-session, que se encarga de las tareas relacionadas con el manejo de sesiones. En OpenSSH 10.0, el código que realiza la autenticación se ha trasladado del proceso sshd-session a un proceso separado denominado sshd-auth. El proceso sshd-auth permite aislar los datos relacionados con la autenticación en el espacio de direcciones de un proceso distinto, lo que impide el acceso a estos datos en memoria en caso de ataques al código utilizado para manejar las etapas de conexión antes de completar la autenticación. Además, este cambio reduce ligeramente el consumo de memoria, ya que el código relacionado con la autenticación ahora solo se mantiene en memoria durante la autenticación y se descarga al finalizar el proceso sshd-auth.
- En SSH, se utiliza por defecto un algoritmo híbrido de intercambio de claves «mlkem768x25519-sha256», resistente a ataques en computadoras cuánticas, que es una combinación de X25519 ECDH y el algoritmo ML-KEM (CRYSTALS-Kyber), estandarizado por el Instituto Nacional de Estándares y Tecnología de EE. UU. (NIST). ML-KEM utiliza métodos criptográficos basados en la resolución de problemas de teoría de retículas, cuyo tiempo de resolución no varía entre computadoras clásicas y cuánticas.
- En ssh_config, se ha añadido soporte para la sustitución «%-token» en las directivas SetEnv y User, así como para la expansión de variables de entorno.
- Se ha incorporado en ssh_config y sshd_config el soporte para la expresión «Match version», que permite aplicar configuraciones según la versión de OpenSSH disponible; por ejemplo, para fijar a OpenSSH 10, se puede especificar «Match version OpenSSH_10.*».
- Se ha añadido soporte para expresiones en ssh_config:
- «Match sessiontype», que permite aplicar configuraciones dependiendo del tipo de sesión solicitada: «shell» para sesiones interactivas, «exec» para ejecutar comandos, «subsystem» para sftp y «none» para túneles y redirección de tráfico.
- «Match command» para vincular acciones a comandos especificados en la línea de comando para su ejecución a través de ssh.
- ‘Match tagged «»‘ y ‘Match command «»‘ para vincular a etiquetas vacías y ejecutar ssh sin especificar el comando a ejecutar.
- En sshd_config se permite el uso de máscaras en las rutas de archivos especificadas en las directivas AuthorizedKeysFile y AuthorizedPrincipalsFile.
- En el cliente ssh se ha añadido soporte para la opción «VersionAddendum» para agregar texto arbitrario a la cadena de número de versión (anteriormente esta opción solo estaba disponible para servidores sshd).
- En las utilidades scp y sftp se asegura la transmisión de la configuración «ControlMaster no» para prohibir el uso de conexiones existentes al reconectar con el host.
- En sshd, por defecto, se desactiva el soporte para la implementación del algoritmo de Diffie-Hellman en campo finito, lo que ha llevado a la eliminación de los métodos «diffie-hellman-group*» y «diffie-hellman-group-exchange-*» de la lista KEXAlgorithms. En comparación con el algoritmo de Diffie-Hellman basado en curvas elípticas, la implementación remota es más lenta y requiere recursos computacionales adicionales con el mismo nivel de seguridad.
- En ssh, al elegir el cifrado para la conexión, el modo AES-GCM ahora es más preferible que AES-CTR. Por defecto, se establece una lista de prioridades al seleccionar cifrados: Chacha20/Poly1305, AES-GCM (128/256) y AES-CTR (128/192/256).
- En ssh-agent se implementa la eliminación de todas las claves cargadas al recibir la señal SIGUSR1.
- En ssh-keygen se ha añadido soporte para tokens FIDO que no devuelven datos de atestación, como WinHello.
- En ssh-agent se añadió la opción «-Owebsafe-allow=…» para redefinir la lista blanca de aplicaciones FIDO.
- Se ha añadido una utilidad experimental regress/misc/ssh-verify-attestation para verificar los datos de atestación FIDO, generados opcionalmente por ssh-keygen al registrar claves FIDO.
- En ssh-keygen se permite usar «-» en lugar del nombre de archivo.
- En ssh-agent y la versión portátil de OpenSSH se ha añadido soporte para la activación por socket al estilo systemd, implementado utilizando el mecanismo LISTEN_PID/LISTEN_FDS.
- En la versión portátil:
- Se ha implementado el soporte para la biblioteca criptográfica AWS-LC (AWS libcrypto).
- En sshd se ha añadido soporte para wtmpdb, un análogo de wtmp, que no está sujeto al problema de 2038.
- Se ha añadido la opción «—with-linux-memlock-onfault» a sshd para fijar sshd en la memoria (prohibiendo el intercambio en la partición de intercambio).
- Se ha añadido la opción «—with-security-key-standalone» para compilar una biblioteca independiente sk-libfido2.
- Se han eliminado las configuraciones de compilación de la especificación del paquete RPM para RHEL 6.
- Cambio en sshd relacionado con la seguridad: la directiva DisableForwarding no prohibía adecuadamente el redireccionamiento del protocolo X11 y las solicitudes al ssh-agent. El redireccionamiento de X11 está desactivado por defecto en el servidor, y el redireccionamiento de ssh-agent en el cliente.
Fuente: opennet.ru
