lunes, mayo 26, 2008

Lecciones del fiasco de Debian y Openssl

Hace algún tiempo saltó la noticia de la Debilidad criptográfica de las claves ssh generadas por la distribución Debian (y distribuciones derivadas). Esto se debe a una modificación del código del paquete OpenSSL para evitar una advertencia de uso de memoria no inicializada, dejando como única fuente de datos aleatorios para iniciar el generador de números seudoaletarios el PID del proceso. Esto causa que sólo haya 2^15 claves posibles (por ejemplo, HD Moore, creador de Metaexploit las ha calculado).

Aparte de tener que regenerar claves ssh y certificados, hay lecciones que aprender, según Russ Cox de este tipo de fallos, en especial de la cascada de que ha llevado a este problema. Russ los resume de la siguiente manera:

  • Los códigos excesivamente inteligentes son difíciles de mantener y si no se entiende la magia negra que hay detrás ,una modificación puede tener consecuencias catastróficas (en este caso, es usar memoria no inicializada para obtener entropía para el PNRG)
  • Falta de organización del código OpenSSL.
  • La comunicación entre el mantenedor de Debian y el equipo de OpenSSL no ha sido de lo más clara posible (en especial por no aportar bastante información de contexto sobre la advertencia de la herramienta usada para detectar la memoria no inicializada). Pueden verse alguno de los mails en el post de Russ.
Me quedo del artículo con dos puntos:
  • Mejor código claro y comprensible, que facilite la revisión por terceros y que no utilice magia negra para implementar según que optimización o funcionalidad.
  • En las listas de correos, hay que exponer claramente los problemas que se detectan, a ser posible explicando las diferencias en el código fuente.

No hay comentarios: