martes, 17 de diciembre de 2002

Múltiples vulnerabilidades en diversas implementaciones de SSH

Se ha descubierto la existencia de diversos problemas de seguridad en
varias implementaciones de SSH. Algunas de estas vulnerabilidades pueden
ser utilizadas para la ejecución de código arbitrario con los
privilegios del proceso SSH. Las vulnerabilidades afectan tanto a
clientes como servidores.

SSH, Secure Shell, es un protocolo cliente/servidor que permite el
establecimiento de conexiones entre dos sistemas, cifrando todo el
transporte de datos. Si bien SSH se utiliza habitualmente como un
sustituto de Telnet cuando la conexión debe pasar por redes hostiles
(como Internet), SSH ofrece muchas más posibilidades. Así, es posible la
transferencia segura de archivos, la ejecución remota de órdenes y el
redireccionamiento de puertos. Además, con SSH se pueden establecer
mecanismos fuertes de autenticación de usuarios y sistemas, mediante la
utilización de certificados digitales.

SSH fue inicialmente desarrollado en 1995 por Tatu Ylönen, de la
universidad de Helsinki (Finlandia) con el objetivo de impedir la
intercepción de las contraseñas que circulaban en claro en la red. A lo
largo de los años, SSH ha ido evolucionando hasta el punto de
convertirse en una propuesta de protocolo estándar.

A partir de la implementación original de SSH, hoy totalmente desfasada,
han surgido un gran número de implementaciones desarrolladas por la
empresa SSH Communications Security, así como por otras empresas.
Destaca, especialmente, la implementación de código abierto desarrollada
dentro del proyecto OpenSSH.

Se ha anunciado la existencia de diversas vulnerabilidades en algunas
implementaciones de SSH, que pueden provocar el desbordamiento de búfer
y, en algunos casos, la ejecución de código arbitrario con los
privilegios del proceso SSH vulnerable. Estas vulnerabilidades pueden
ser utilizadas indistintamente contra un servidor SSH como contra un
cliente SSH.

Las vulnerabilidades se encuentran en un tratamiento incorrecto de
paquetes que tienen diversos campos con una longitud no válida, vacíos,
con separadores o bien utilizando cadenas de texto conteniendo
únicamente caracteres NULL. Estas vulnerabilidades se encuentran en el
código responsable de la inicialización de las comunicaciones y en el
intercambio de claves.

Las implementaciones de SSH que parecen ser vulnerables son las
realizadas por Pragma Systems (Pragma SecureShell 2.0), PuTTY (versiones
anteriores a la 0.53b), F-Secure (servidores y clientes para Unix,
versiones anteriores a la 3.1.0 build 11), F- Secure para Windows
(versiones anteriores a la 5.2), SSH para Windows y Unix (versiones
anteriores a la 3.2.2), FiSSH 1.0A y anteriores, SecureNetTerm v5.4.1 y
anteriores, ShellGuard 3.4.6 y anteriores y WinSCP v2.0 y anteriores.

No obstante, debemos indicar que existe una disparidad en las
informaciones publicadas. Así, el aviso publicado por Rapid 7 indica los
productos que indicamos en el párrafo anterior, mientras que en el aviso
publicado por el CERT únicamente se reconocen como vulnerables Pragma
SecureShell, F-Secure y PuTTY.

Rapid 7 ha publicado un banco de pruebas, denominado SSHredder, que
permite comprobar si una implementación es vulnerable a los ataques. Se
trata de diversos paquetes que deben enviarse al cliente o servidor SSH,
utilizando netcat o una herramienta equivalente.


Xavier Caballé
xavi@hispasec.com