DROWN: vulnerabilidad crítica en sitios HTTPS con soporte a SSLv2


DROWN (Decrypting RSA with Obsolete and Weakened eNcryption) es una vulnerabilidad grave que afecta a HTTPS y otros servicios que dependen de los protocolos SSLv2 y TLS. DROWN, identificada como CVE-2016-0800, permite a los atacantes romper el cifrado, leer y robar comunicaciones sensibles, incluyendo contraseñas, números de tarjeta de crédito, secretos comerciales o información financiera.

DROWN permite a un atacante descifrar conexiones TLS, mediante el uso de un servidor que soporte SSLv2 y suites de cifrado
de categoría EXPORT, interceptadas mediante conexiones específicamente creadas a un servidor SSLv2 que use la misma clave privada. Según las mediciones actuales, 33% de todos los servidores HTTPS son vulnerable a este nuevo ataque.

DROWN empeora si además el servidor tiene dos vulnerabilidades adicionales de OpenSSL: CVE-2015-3197, que afecta a las versiones de OpenSSL anteriores a 1.0.2f y 1.0.1r y; CVE-2016-0703, que afecta a versiones de OpenSSL anteriores a 1.0.2a, 1.0.1m, 1.0.0r y 0.9.8zf.

Estas dos vulnerabilidades reducen considerablemente el tiempo y costo de llevar a cabo el ataque DROWN. Los 15 investigadores a cargo del descubrimiento han sido capaces de ejecutar el ataque en menos de un minuto usando un solo ordenador. Incluso para los servidores que no tienen estos errores particulares, una variante general del ataque, que funciona contra cualquier servidor SSLv2, puede realizarse en menos de 8 horas a un costo total de U$S 440.

Actualmente hay alrededor de 11,5 millones de sitios web vulnerables y los administradores de estos servidores deben tomar acciones inmediatas. Los clientes no pueden ni deben hacer nada.

Los servidores modernos utilizan el protocolo de cifrado de TLS pero, debido a configuraciones incorrectas, muchos servidores todavía podrían soportar SSLv2, un protocolo de 1995 y que los clientes actuales ya no usan.

Aunque SSLv2 es conocido por ser muy inseguro, hasta ahora no importaba y no era considerado un problema de seguridad porque los clientes nunca los utilizan. Ahora, DROWN demuestra que sólo el brindar soporte a SSLv2 es una amenaza para los clientes y servidores porque permite a un atacante descifrar conexiones TLS enviando "pruebas" a través del protocolo SSLv2 y utilizando la misma clave privada.

En términos técnicos, DROWN es una variante del ataque cross-platform Bleichenbacher Padding Oracle que potencialmente permite interceptar y descifrar conexiones TLS creando conexiones especialmente diseñadas a un servidor de SSLv2 que utiliza la misma clave privada. Este tipo de ataque hace uso de bugs en la implementación de un protocolo (SSLv2 en este caso) para atacar la seguridad de las conexiones realizadas bajo un protocolo totalmente diferente (TLS). Más concretamente, DROWN se basa en la observación de que SSLv2 y TLS soportan el protocolo RSA y, mientras que TLS se protege contra ciertos ataques bien conocidos, las suites de exportación SSLv2 no lo hacen.

Un servidor es vulnerable a DROWN si:
  • Permite conexiones SSLv2. Esto es sorprendentemente común, debido a la mala configuración. Las mediciones muestran que el 17% de los servidores HTTPS todavía permiten este tipo de conexiones SSLv2.
  • La clave privada se utiliza en cualquier otro server que permite conexiones SSLv2, incluso para otro protocolo. Muchas empresas reutilizan el mismo certificado y la clave en sus servidores web y correo electrónico, por ejemplo. En este caso, si el servidor de correo soporta SSLv2 y, aunque el servidor web no lo haga, un atacante puede aprovechar el servicio de correo para romper las conexiones TLS del servidor web. Esto pone en peligro el 33% de los servidores HTTPS.

No hay comentarios:

Publicar un comentario