openSSL, Debian y la línea comentada de md_rand.c

Correción del fallo de la llamada al aleatorizador "bueno" de openSSL

El Error de openSSL en Debian subsanado dos años después

Menuda que se ha montado con el fallo detectado en el empaquetado del paquete openssl para distribuciones Debian y derivados, como Ubuntu. Al parecer tuvieron a bien comentar una inocente línea de código hace dos años que les daba unos errores molestos en código “no relacionado”, como bien comenta uno de los empaquetadores en el cambio en abril de 2006…

openssl (0.9.8a-9) unstable; urgency=low
[…]
* Don’t add uninitialised data to the random number generator. This stop
valgrind from giving error messages in unrelated code.
(Closes: #363516)

— Kurt Roeckx Thu, 6 Apr 2006 20:34:07 +0200

Esta cosa tan inocente consistía en comentar una llamada a una función de código que al parecer les daba un mensaje de error en alguna otra parte de código “no relacionado.” El caso es que justamente esta llamada es necesaria para que el proceso interno de generación de números aleatorios en la creación de claves asimétricas tipo RSA sea realmente aleatorio.

La línea 271 maldita comentada

La línea 271 maldita comentada

La consecuencia de ello es que al no llamarse a esta función, la generación supuestamente pseudo-aleatoria de claves acaba siendo más predecible que el resultado de la selección española de fútbol en los mundiales y por tanto casi todas las parejas de claves públicas y privadas generadas por esta versión de openssl se pueden obtener por fuerza bruta. De hecho, desde debian.org se puede descargar un programa en perl, dowkd.pl.gz, de menos de 10 megas que contiene la lista de todas las claves que se han podido generar en estos dos años por este error y resulta trivial y rapidísimo buscar las claves de tu servidor SSH o del certificado del Apache. Para llorar un rato largo.

Por ahora, la lista de componentes, servicios y aplicaciones afectadas por este fallo es la siguiente,

  • openssh, tanto usuarios como servidores
  • OpenVPN
  • DNSSEC
  • material para claves para X.509
  • encfs
  • Tor
  • postfix, exim4, sendmail y otras MTAs con SSL/TLS
  • cyrus imapd
  • courier imap/pop3
  • dovecot con soporte imaps/pops
  • apache2 (ssl certs)
  • dropbear
  • cfengine
  • puppet
  • xrdp
  • tinc
  • Certificados vsftpd SSL para FTPS
  • Certificados proftpd SSL/TLS para FTPS
  • DomainKeys (DK) y DKIM

Seguramente seguirá creciendo.

De la lista anterior, tenemos un servidor web, Apache, varios servidores de correo, tanto las MTAs que hablan SMTP como los servidores de acceso a los buzones de correo, servidores de ficheros TFP, protocolos de actualización de DNS y hasta el servicio tor de proxies anónimos de navegación.

A mi lo que me preocupa no es que los servidores de acceso remoto SSH se vean afectados, tanto en temas de posibles ataques de Man in the Middle o suplantación de partes. Lo que puede ser delicado es el asunto de los certificados digitales generados para servicios web o idenficar usuarios que se hayan creado a partir de openssl. Ya sean autofirmados o simplemente se haya creado una solicitud de certificado para ser firmada por una PKI externa, las parejas de claves van a estar comprometidas y puede desembocar esto en una oleada de revocaciones de certificados.

Por suerte tiro de EJBCA para jugar a las PKIs y no parece que Java o BouncyCastle hayan caído en la misma tentación simplificadora. Tan sólo se han visto afectados los servicios de openSSH y aparentemente los sensores y agentes del IDS Prelude la generación de las claves RSA la hacen a partir de /dev/random y están salvados.

Para la gente de Debian les ha supuesto de entrada deshabilitar el acceso por SSH y tirar todas las contraseñas de los usuarios actuales. A ver cuántos certificados digitales de servidores web caen por el camino, son revocados y renovados y sobre todo, a ver si se hace rápidamente.

Más de un administrador se lo debe de estar pasando en grande…

2 thoughts on openSSL, Debian y la línea comentada de md_rand.c

  1. Pingback Cómo identificar claves privadas generadas por openSSL comprometidas » Lost in delta quadrant
  2. Qué dolor.

    Dicen las malas lenguas que los matasuegras y los *pop* de los corchos de botellas chez M$ no dejan dormir a los vecinos.

Deja un comentario