| Kriptópolis alojado en |
| Zilos-Veloxia Network |
| Tu mejor defensa: |
| Bufet Almeida |
Chapuza criptográfica en Debian, Ubuntu y derivados
En septiembre de 2006 alguien en Debian decidió suprimir una línea de código molesta en el fichero md_rand.c de OpenSSL:
MD_Update(&m,buf,j); [ .. ] MD_Update(&m,buf,j); /* purify complains */
La decisión se tomó para suprimir los avisos sobre datos no inicializados que lanzaban herramientas de depuración de código como Valgrind y Purify.
La medida fue efectiva; desde luego desaparecieron los errores, pero -y aquí viene el problema- también desapareció la correcta siembra del generador pseudoaleatorio necesaria para producir claves de calidad, es decir, claves no predecibles. La siembra correcta requería hasta ese momento una mezcla de datos aleatorios, pero quedó de pronto reducida a la escasa aleatoriedad aportada por el identificador del proceso, que en Linux sólo puede llegar hasta el número 32.768. En consecuencia el espacio de claves se vio repentinamente reducido, de los previstos 2^1024 a 2^15, es decir, tan sólo 32.768 posibles claves...
En definitiva, esta chapuza afecta a muchos sistemas Debian y derivados como Ubuntu. Por supuesto la actualización de OpenSSL (que ya está disponible) es necesaria, pero no suficiente. En esta ocasión han de generarse además claves nuevas para todos aquellos casos en que hayamos utilizado OpenSSL, es decir, redes privadas virtuales, servidores seguros, certificados X.509, SSH, etc. En el caso de usuarios comunes, no obstante, el problema más frecuente puede radicar en tener que renovar las claves SSH utilizadas para acceder remotamente a servidores.
Moraleja: Si funciona, no lo toques. Si lo tocas, házlo bien.
Actualización (18:32): Parece que afortunadamente se despeja un poco otro aspecto muy preocupante del problema: ¿Qué hubiera ocurrido ahora si las principales autoridades de certificación hubieran expedido sus miles de certificados desde Debian-OpenSSL?
Actualización (18:25): Sin piedad. Visto en Metasploit.com:
Traducción: "Aquí tenemos nuestro generador de números aleatorios. Nueve, nueve, nueve, nueve, nueve, nueve, nueve, nueve. ¿Seguro que eso es aleatorio? Ése es el problema de la aleatoriedad; nunca puedes estar seguro."
Traducción: "Elegido tras una tirada limpia de dados. Aleatoriedad garantizada."
Actualización (17:43): Otros dos enlaces muy interesantes para entender mejor lo que ha ocurrido: el blog de Luciano Bello (descubridor del fallo) y Vitavonni (aclara por qué el borrado resultó catastrófico y carga bastante las tintas sobre OpenSSL).
Actualización (17:32): No os perdáis este esclarecedor post. Kurt Roeckx (presunto responsable en Debian de la supresión de código que ha generado la catástrofe) pregunta cuatro meses antes a los desarrolladores de OpenSSL qué ocurriría si suprimiese esas líneas, al tiempo que expresa su preocupación con respecto a una posible pérdida de aleatoriedad. El menda de OpenSSL le responde: "No creo que afecte mucho. Si ayuda a la depuración soy partidario de borrarlas".
Actualización (11:57): Peor todavía. Publican un exploit que realiza un ataque de fuerza bruta sobre las claves debilitadas y logra el login en SSH en sólo unos minutos. La parte buena es que también podemos utilizarlo para comprobar si nuestras claves y/o certificados son vulnerables. Y lo serán con toda probabilidad si fueron generadas(os) en Debian, Ubuntu o similar entre septiembre de 2006 y ayer mismo.
Referencias:
- DSA-1571-1 openssl -- predictable random number generator [Debian Security Advisory].
- OpenSSL PRNG Debian Toys [Metasploit].
- Debilidad criptográfica en los paquetes openssl de Debian [Discusión en Barrapunto].






Opinar