Ayer,
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;
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 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.
Más información:
una-al-dia (02/03/2016) OpenSSL soluciona ocho
vulnerabilidades
OpenSSL
Security Advisory [1st March 2016]
The DROWN
Attack
Test DWOWN
Attack
Full technical paper
DROWN: Breaking TLS using SSLv2 [PDF]
una-al-dia (20/03/2015) OpenSSL soluciona 13
vulnerabilidades
una-al-dia (08/04/2014) OpenSSL afectada por una
vulnerabilidad apodada Heartbleed
una-al-dia (15/10/2014) SSL tocado y hundido
Antonio Ropero
Twitter: @aropero
No hay comentarios:
Publicar un comentario