Saltar a contenido

LOGJAM Attack on Diffie-Hellman

Ataque LOGJAM en Diffie-Hellman

Descripción

Esta vulnerabilidad indica que el servidor es susceptible a ataques LOGJAM, los cuales explotan parámetros Diffie-Hellman débiles para forzar una degradación (downgrade) de las conexiones TLS a una criptografía de nivel de exportación que puede ser vulnerada.

LOGJAM ocurre cuando los servidores TLS soportan suites de cifrado DHE_EXPORT o utilizan parámetros Diffie-Hellman débiles de 512 bits. Los atacantes de intermediario (man-in-the-middle) pueden obligar a los clientes a degradar desde un intercambio de claves DHE fuerte a un DHE de nivel de exportación débil, haciendo que el cifrado sea vulnerable a análisis criptográficos fuera de línea.

Cómo funciona:

  1. El atacante intercepta el protocolo de enlace TLS (handshake) entre el cliente y el servidor.
  2. Fuerza la degradación desde cifrados DHE fuertes a DHE_EXPORT débil (512 bits).
  3. Captura la conexión degradada con parámetros DH débiles.
  4. Utiliza tablas de logaritmos discretos precalculadas para vulnerar el DH de 512 bits fuera de línea.
  5. Recupera las claves de sesión y descifra todo el tráfico capturado.

Requisitos:

  • El servidor soporta suites de cifrado DHE_EXPORT o parámetros DH débiles.
  • Posición de red de intermediario (man-in-the-middle) para forzar la degradación.
  • Tablas precalculadas de criba del cuerpo de números (number field sieve) para números primos DH comunes.
  • Cliente vulnerable a ataques de degradación de protocolo.

Escenario de ejemplo: Un servidor VPN corporativo soporta cifrados heredados DHE_EXPORT por compatibilidad. Un atacante en la red intercepta las conexiones de los empleados y fuerza la degradación a parámetros DH de 512 bits. Utilizando tablas criptográficas precalculadas (con un coste de generación de ~$18.000), el atacante vulnera el intercambio DH débil en cuestión de horas y descifra todo el tráfico VPN, exponiendo credenciales corporativas y datos sensibles.

El ataque explota las mismas restricciones de exportación de la década de 1990 que FREAK, demostrando cómo el debilitamiento criptográfico impuesto por los gobiernos creó vulnerabilidades duraderas en el protocolo de intercambio de claves Diffie-Hellman utilizado por millones de servidores en todo el mundo.

Recomendación

Para mitigar los ataques LOGJAM:

Defensa principal - Desactivar los cifrados DH de exportación:

# Apache - deshabilitar cifrados de exportación DH
SSLCipherSuite HIGH:!aNULL:!MD5:!EXP:!DHE

# Mejor: usar ECDHE en lugar de DHE
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:!DHE
# Nginx - deshabilitar cifrados DH débiles
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:!DHE:!EXPORT:!DES:!RC4:!MD5;

Utilizar parámetros DH fuertes:

Si es necesario el uso de DHE, genere parámetros personalizados de 2048 bits o superiores:

# Generar parámetros DH robustos
openssl dhparam -out dhparams.pem 2048

# Apache: usar parámetros DH personalizados
SSLOpenSSLConfCmd DHParameters /path/to/dhparams.pem

# Nginx: especificar parámetros DH personalizados
ssl_dhparam /path/to/dhparams.pem;

Priorizar ECDHE sobre DHE:

ECDHE proporciona un mejor rendimiento y mayor seguridad:

# Priorizar conjuntos de cifrado ECDHE
ECDHE-ECDSA-AES256-GCM-SHA384
ECDHE-RSA-AES256-GCM-SHA384
ECDHE-ECDSA-CHACHA20-POLY1305
ECDHE-RSA-CHACHA20-POLY1305

Protección del lado del cliente:

// Java - disable weak DH
System.setProperty("jdk.tls.disabledAlgorithms", "DH keySize < 1024");

Pruebas para LOGJAM:

# Prueba de soporte para DHE_EXPORT
nmap --script ssl-enum-ciphers -p 443 example.com | grep DHE_EXPORT

# Debería mostrar que no hay cifrados DHE_EXPORT disponibles
openssl s_client -connect example.com:443 -cipher DHE-EXPORT

Mitigaciones adicionales:

  • Utilizar TLS 1.3 que elimina el soporte para parámetros DH débiles.
  • Implementar el secreto perfecto hacia adelante (perfect forward secrecy) con el intercambio de claves ECDHE.
  • Monitorizar patrones inusuales de negociación de cifrado.
  • Auditar regularmente las configuraciones de TLS en busca de parámetros débiles.

La solución fundamental consiste en dejar de usar DHE y pasar a ECDHE, que proporciona una seguridad equivalente con mejor rendimiento y sin vulnerabilidades de grado de exportación.

Enlaces

Estándares

  • SOC2_CONTROLS:
    • CC_6_7
    • CC_7_1
  • CCPA:
    • CCPA_1798_150
  • GDPR:
    • ART_32
  • PCI_STANDARDS:
    • REQ_4_1
    • REQ_6_2
    • REQ_11_3
  • HIPAA_CONTROLS:
    • SECURITY252
    • SECURITY212
    • SECURITY213