Friday, May 16, 2008

Random made in Debian

Es curioso como es posible meter la pata hasta el fondo con la mejor de las intenciones.

Allá por mayo del 2006 alguien decidió limpiar un poco la biblioteca openssl, usada para casi cualquier cosa relacionada con la seguridad en un sistema Linux. Pero aparte de la llamada que era errónea, se cargó también otra que era vital para la inicialización del generador de numeros pseudoaleatorios (PRNG). El proceso fue en resumidas cuentas, tal como:
  • Versión principal usa ingeniosas chapuzas usando memoria no inicializada para obtener aleatoriedad.
  • Versión principal usa el mismo código y los mismos nombres de variables para hacer otras cosas.
  • Versión principal no usa comentarios para distinguir entre ambos.
  • Responsable de mantenimiento pregunta en la lista de openssl-dev y obtiene una respuesta algo ambigua.
  • Responsable de mantenimiento generaliza en exceso el cambio (y se carga ambas llamadas).
  • El bug se le escapa a todos en el proceso de revisión.
Y tenemos cachondeo para rato. La parte seria del asunto es MUY seria, dado que las claves "aleatorias" que genera obtienen su aleatoriedad de uan sola fuente, el identificador de proceso. Y ya que generalmente esto son 15 bits (32k posibilidades) tenemos que en unos 20 minutos se puede adivinar la clave generada. Accesos SSH con claves de usuario generadas en sistemas vulnerables, certificados SSL, VPN's con secretos compartidos... todos ellos con un nivel de entropia de 15 bits. Terrorífico. Por suerte las sesiones SSL de los navegadores no se han visto afectadas, supongo que porque usaran GNUTLS o alguna otra biblioteca para generar las claves de sesion.

Para más info mirar en el DSA de debian o en el blog de Luciano Bello, el que descubrió el bug.

Para arreglar el problema basta con el clásico apt-get update && apt-get upgrade, que actualizará openssl a una versión parcheada y openssh invalidará las claves vulnerables y generará otras seguras. En la wiki de debian se puede consultar sobre la actualización de las claves de otros programas y leer algo sobre testeo y resumen técnico.

Y ya que hemos hablado de la parte seria, (y antes de eso, actualizado el server debian con acceso ssh) ahora toca el cachondeo:


Meta-incertidumbre


Incertidumbre certificada

Si no os habeis actualizado ya, ¡¿a qué esperais?!

No comments: