DROWN, un nuevo ataque que intenta ahogar la criptografía

junto con la publicación de una nueva versión de OpenSSL,
saltó a la luz una nueva vulnerabilidad de esas que van a dar que
hablar durante mucho tiempo. Se suma a las ya vistas en el 2014 e
igualmente importantes en OpenSSL como Heartbleed y POODLE. Esta
nueva vulnerabilidad podría permitir a un atacante descifrar
comunicaciones seguras con relativa sencillez.

Sin ninguna duda esta vulnerabilidad es de gran importancia, según las
estimaciones un 33% de los sitios son vulnerables a este ataque. Y como
no podía ser de otra forma, la vulnerabilidad viene con nombre, logo y
hasta página web (https://drownattack.com/); ha quedado bautizada como
DROWN (Decrypting RSA with Obsolete and Weakened eNcryption).

La vulnerabilidad es grave en cierto contexto, podría permitir descifrar
sesiones TLS si el servidor soporta SSL versión 2 o suites de cifrado
marcadas como EXPORT. El problema, con identificador CVE-2016-0800, es
una nueva forma de ataque de protocolo cruzado, similar o inspirado en
el Padding Oracle Attack de años atrás, debido al uso que hace de un
protocolo obsoleto, como SSL versión 2, mientras que la víctima sigue
usando TLS, un protocolo actualmente seguro, sin percatarse del ataque.

La misma página web del problema dispone de un test
(https://test.drownattack.com/) que permite comprobar, con la simple
introducción de un dominio (o dirección IP), ver todos los dominios y
certificados vulnerables. Huelga decir que no se trata de un test «en
directo» sino de una consulta a una base de datos que han hecho pública.
No obstante se ha hecho pública de una herramienta que permite
comprobarlo en local.

Los servidores y clientes actuales emplean TLS como protocolo de
cifrado. Sin embargo, debido a errores o descuidos de configuración,
muchos servidores todavía siguen soportando SSLv2. Este soporte, incluso
en algunos casos se apoya debido a que algunos clientes sin actualizar
todavía utilizan SSLv2. Por lo tanto, a pesar de que SSLv2 se sabe que
es inseguro hasta el tuétano, soportar SSLv2 no se consideraba, en
ciertos ambientes, un problema de seguridad grave por el reducido parque
de clientes anticuados que lo usan.

DROWN muestra que simplemente el soporte de SSLv2 representa un riego
para los servidores y clientes; ya que puede permitir descifrar las
conexiones TLS entre servidor y cliente mediante el envío de sondas a un
servidor que soporte SSLv2 y utilice la misma clave privada. El ataque
en sí, a grandes rasgos, se basa en la posibilidad de obtención de la
clave privada de la sesión segura gracias a SSL versión 2. Es decir,
mientras que el cliente se conecta al servidor por TLS, el atacante hace
hombre en el medio entre los dos e inyecta peticiones SSL. Debido a las
vulnerabilidades de SSL es capaz de obtener la clave privada de esa
sesión (ojo, no la clave privada del servidor como hemos escuchado por
ahí) y posteriormente utilizarla para descifrar el tráfico capturado.

Como proteger un servidor ante DROWN

Para OpenSSL la forma más sencilla y recomendable es que se actualice a
la versión OpenSSL 1.0.2g o OpenSSL 1.0.1s.

Para Microsoft IIS (Windows Server) las versiones de IIS 7.0 y superiors
deben tener SSLv2 desactivado por defecto. Los usuarios que hayan
activado SSLv2 de forma manual deberán tomar los pasos para desactivarlo
de nuevo. De todas formas se recomienda comprobar si su clave privada
está expuesta en otro lugar. Las versiones de IIS inferiores a 7.0 ya no
están soportadas por Microsoft y deberían actualizarse a las versiones
soportadas.

Para Network Security Services (NSS), librería criptográfica incluida en
múltiples productos de servidor, las versiones 3.13 (publicada en 2012)
y superiores deben tener SSLv2 desactivado por defecto. Los usuarios que
hayan activado SSLv2 de forma manual deberán tomar los pasos para
desactivarlo de Nuevo. Usuarios de versiones anteriores deberían
actualizarse a una versión más reciente. De igual forma se recomienda
comprobar si su clave privada está expuesta en otro lugar.

Hay que señalar que DROWN puede empeorar debido a otras vulnerabilidades
(con CVE-2016-0703 y CVE-2016-0704) en OpenSSL, que afectan a versiones
de OpenSSL anteriores a marzo de 2015, momento en el cual el código fue
rediseñado para hacer frente a la vulnerabilidad CVE-2015-0293. Estas
vulnerabilidades afectan a OpenSSL versiones 1.0.2, 1.0.1l, 1.0.0q,
0.9.8ze y anteriores. Fueron corregidas en OpenSSL 1.0.2a, 1.0.1m,
1.0.0r y 0.9.8zf. Estos problemas podrían permitir ataques de DROWN
mucho más eficientes, incluso eficaces contra conjuntos de cifrado que
no sean de exportación, y sin necesidad de requerir un cálculo
significativo.

Y con CVE-2015-3197 un problema que afecta a OpenSSL versiones
anteriores a 1.0.2f y 1.0.1r, permite a un atacante emplear DROWN para
conectar a un servidor con SSLv2 desactivado, si el soporte para SSLv2
todavía se encuentra habilitado.

Fuente: hispasec.com