Logjam: dejando al desnudo a tu conexión

Los fallos de seguridad están que no paran desde que Heartbleed alcanzó nuestras conexiones, tenemos que enfrentarnos a otra vulnerabilidad en el SSL, nuestro nuevo amigo Logjam, que nos puede desnudar nuestra conexión rompiendo su seguridad.

candado_roto

 

El problema de Logjam reside en el protocolo criptográfico llamado Diffie-Hellman que permite negociar una clave compartida para generar una conexión segura, para cada conexión.

El ataque permite bajar el cifrado a 512-bits, haciendo que sea fácil de romper comparado a 2048-bits, por lo que se puede realizar un ataque MITM.

Los navegadores ya están trabajando en parchear el problema, pero también se tiene que poner las pilas los Sysadmin, para ellos tenemos que seguir los siguientes pasos:

Lo primero reconstruimos nuestro grupo único de Diffie-Hellman, los navegadores recomienda 1024-bits, los investigadores 2048-bits pues que nos ponemos yo los he pasado a 4096-bits, veremos quien rompe eso 😉

openssl dhparam -out dhparams.pem 4096

Una vez creado nuestro nuevo DH vamos a reconfigurar nuestros protocolos y cifrados.

Desactivando SSLv2 y SSLv3

Apache:

SSLProtocol             all -SSLv2 -SSLv3

Nginx:

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

 

Y priorizando el orden de carga de los cifrados, cargando del mas robusto al menor.

Apache:

SSLCipherSuite          ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA

SSLHonorCipherOrder     on

Nginx:

ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';

ssl_prefer_server_ciphers on;

 

Ahora para acabar nos queda reconfigurar donde esta nuestro nuevo archivo HD
Apache:

SSLOpenSSLConfCmd DHParameters "{path to dhparams.pem}"

Nginx:

ssl_dhparam {path to dhparams.pem}

Después de reconfigurar nuestro servidor, tenemos que reiniciar el servicio para cargar los nuevos parámetros y comprobar que ya somos seguros, para ello disponemos de esta web para realizar los test.

https://weakdh.org/sysadmin.html

Durante unos días hasta que todo el mundo realice el parche y actualice sus navegadores hay que extremar las precauciones con las conexiones que realizamos.

Y este problema nos vuelve a surgir por en Estados Unidos en la década de 1990 que como vemos en el informe original en la era Clinton, donde se limita el tamaño de DH a los primeros 512-bits primos para que fueran fáciles de romper para las agencias americanas.

To comply with 1990s-era US export restrictions on cryptography, SSL 3.0 and TLS 1.0 supported reduced-strength DHE_EXPORT cipher suites that were restricted to primes no longer than 512 bits.
Lo grave es además de afectar a HTTPS, afecta también a SMTP+StartTLS, POP3S, IMAPS y de estos afecta al 8.4% según los investigadores de las páginas que están en el top 1 millón, no quiero saber cómo afectará a las medianas y pequeñas…
procentajevulnerablelogjam
Así que ya sabes si no te fías de si la página a la que estás conectada ha corregido el problema primero compruébalo con este test y si no te queda otra que conectarte antes de que se repare el problema y no estas en una conexión que consideres segura es mejor que uses una VPN para poder salir por un sitio más seguro.