Hace unos días os hablábamos del fallo goto fail en la librería de SSL de OS X e iOS. Y, casualidades de la vida, hoy ha aparecido otro similar en GnuTLS, una librería de SSL para Linux, con consecuencias muy similares. Un atacante con conocimiento del fallo podría crear certificados que siempre serían aceptados como válidos por la librería, y espiar así comunicaciones aparentemente seguras.
En realidad, el fallo no tiene prácticamente que ver con criptografía. En la función encargada de verificar la validez de certificados X.509 tipo ASN.1, el desarrollador se equivocó al programar y no se interpretó bien el código de salida. Así, un código de retorno negativo que indica un error se convertía en un código de retorno distinto de 0 que indica que todo ha ido bien. Este esquema de @0xabad1dea lo explica con más claridad para los que sepáis programación.
*: Podéis ver qué aplicaciones dependen de GnuTLS ejecutando apt-cache rdepends libgnutls26 en Debian y derivados. Es posible que no todas las aplicaciones utilicen siempre GnuTLS sino que sólo lo tengan como opción.
Este fallo tan estúpido habría sido introducido hace 10 años. Es muy grave. La librería GnuTLS es ampliamente usada en Linux por varios programas para establecer conexiones seguras por SSL, y todas ellas se ven afectadas por la vulnerabilidad. Por ejemplo, aplicaciones* como Chromium, el servidor Apache en ciertas configuraciones, Filezilla u OpenOffice usarían GnuTLS para establecer sus conexiones seguras. Alguien con conocimiento del fallo podría haber interceptado las comunicaciones usando un certificado inválido pero que no haría saltar ninguna alarma. Eso sí, es improbable que alguien haya tenido acceso a ese fallo.
Por suerte, el parche ya está disponible y muchas distribuciones lo tienen ya listo para que podáis actualizar.
Software libre, seguridad y casualidades
El primer tema que se nos viene a la cabeza con este fallo es el del software libre y la seguridad. Uno podría pensar que es muy curioso el hecho de que nadie haya visto el fallo (estúpido aunque no del todo obvio) en 10 años a pesar de que el código esté disponible para que cualquier lo mire. Por otra parte, también podríamos pensar que quizás si no hubiese sido software libre, la auditoría de RedHat no habría encontrado el fallo. ¿O quizás sí?
Este fallo cuestiona el mantra muchas veces repetido de "el software libre es más seguro porque hay más ojos para detectar bugs". La criptografía es un tema muy, muy complejo y lo que se necesitan no son muchos ojos inexpertos mirando por encima, sino sólo unos pocos expertos en el tema y con la motivación para hacer una auditoría a fondo, explorando y entendiendo el código.
Por otra parte, también resulta muy casual que se descubra ahora este fallo, tan cercano en el tiempo al de Apple y además muy similar. Uno podría especular con la relación de la NSA con este fallo, aunque por otra parte tampoco parece muy probable: por ejemplo, se pueden encontrar por Internet hilos de correo discutiendo el poco cuidado de los desarrolladores de GnuTLS. Como siempre, no hay nada seguro, aunque tampoco alimentaría paranoias de este tipo.
Vía | Ars Technica
Ver 89 comentarios