martes, 13 de mayo de 2008

Vulnerabilidad en openssh - como arreglarla

Aviso importante para los que usan Debian y sus derivados (entre ellos Ubuntu)!

Para el que todavía no se enteró, esta mañana se reportó una falla grave de seguridad en el OpenSSH para Debian y Ubuntu. Resumiendo, las claves generadas después del 2006 son potencialmente vulnerables dado que las función que genera números aleatorios en openssl era predecible.

Gracias a la velocidad de respuesta del software libre, ya están disponibles los paquetes de actualización para Debian y Ubuntu. Supongo que otras distribuciones pueden tener el mismo problema, pero no lo comprobé.

Para solucionar el problema de seguridad hay que seguir los siguientes pasos.

En primer lugar, actualicen sus sitemas:

$ sudo apt-get update
$ sudo apt-get upgrade

Con esto se arreglan los problemas de las futuras claves que se generen.

Para validar las claves actuales, los desarrolladores de Debian subieron un script para validar las claves personales y de host

$ wget -c http://security.debian.org/project/extra/dowkd/dowkd.pl.gz
$ gunzip dowkd.pl.gz
$ chmod u+x dowkd.pl
$ ./dowkd.pl user
$ ./dowkd.pl host hostname

Si al script le pasamos el argumento user, chequea las claves del usuario. Con el argumento host, se puede indicar un nombre de host al cual se le quiere hacer el testeo.

Si las claves fueron generadas con esta versión defectuosa del openssl, seguro el script va a dar algun mensaje diciendo que la clave es débil. En este caso hay que regenerar las claves del usuario y del host.

Para regenerar las claves de usuario:

$ ssh-keygen -t dsa -b

Para regenerar las claves del host:

$ sudo rm /etc/ssh/ssh_host_{dsa,rsa}_key*
$ sudo dpkg-reconfigure -plow openssh-server

Recuerden que deben limpiar el archivo ~/.ssh/known_hosts y volver a transmitir su clave pública a sus servidores, o es posible que no puedan volver a entrar ;)

2 comentarios:

Marcelo Fernández dijo...

Bien Gabi, sólo comento 3 cosas:

1 - "Supongo que otras distribuciones pueden tener el mismo problema, pero no lo comprobé." Es un error en el empaquetamiento de ssl en Debian (y por transitividad, Ubuntu), por lo que otras distros no están afectadas.

2 - Todos los paquetes basados en SSL, como OpenSSL (Certificados Apache), y OpenVPN también están afectados, además de SSH.

3 - En ambas distros, al bajar las actualizaciones, se instala un programa llamado "ssh-vulnkey" para comprobar automáticamente las firmas vulnerables. Un "sudo ssh-vulnkey -a" lo hace para todos los usuarios del sistema.

Saludos!
Marcelo

Gabriel dijo...

Gracias por las aclaraciones, Licenciado ;)

Sobre el 3, lo leí justo después de mandar el post, y me dio fiaca modificarlo.