Insecure TLS Ciphers supported
Suites de cifrado TLS inseguras admitidas
Descripción
Transport Layer Security (TLS) comienza cuando el cliente solicita una conexión segura y presenta una lista de las suites de cifrado (cipher suites) compatibles.
Una suite de cifrado es una lista de algoritmos de autenticación, cifrado, código de autenticación de mensajes (MAC) e intercambio de claves. Cada algoritmo cumple una función específica durante la negociación del protocolo. Por ejemplo, usar un algoritmo débil puede afectar críticamente la seguridad de todo el canal.
Se identificó que el punto de conexión (endpoint) admite una combinación de suites de cifrado y protocolos Secure Sockets Layer / Transport Layer Security (SSL/TLS) que sufren de debilidades criptográficas conocidas. Por lo tanto, no se debe confiar en ellos para proporcionar una seguridad efectiva en la capa de transporte. Un atacante que pueda interceptar la conexión podría influir o descifrar el tráfico que pasa por ella.
Se han demostrado debilidades criptográficas para todas las siguientes configuraciones:
- Compatibilidad con protocolos SSL obsoletos (v2 o v3)
- Compatibilidad con suites de cifrado que ofrecen claves menores a 128 bits
- Compatibilidad con suites de cifrado que ofrecen el modo
CBCen combinación con un protocolo TLS inferior a la versión 1.1, vulnerable al ataque BEAST - Uso de compresión dentro de TLS, vulnerable al ataque CRIME
- Compatibilidad con suites de cifrado que ofrecen
RC4como cifrado - Compatibilidad con suites de cifrado que ofrecen
DEScomo cifrado - Compatibilidad con suites de cifrado que ofrecen
MD5como algoritmo de firma
Recomendación
La configuración recomendada de TLS debe aplicar las siguientes recomendaciones:
- Restringir a
TLSv1y superior, prefiriendoTLS1.2 - Si se requiere
SSLv3, se aconseja implementar la característicaTLS Fallback SCSVpara prevenir ataques de degradación (downgrade) de protocolo - Deshabilitar Diffie-Hellman anónimo (
ADH) - Deshabilitar las suites de cifrado
aNULLyeNull - Deshabilitar las suites de intercambio de claves Export
- Eliminar la compatibilidad con
RC4 - Eliminar la compatibilidad con
DES - Eliminar la compatibilidad con
MD5 - Preferir
SHA256sobreSHA1 - Preferir
AES128sobreAES256ya que 256 ofrece pocas ventajas de seguridad y es menos robusto a ataques de sincronización (timing attacks) - Deshabilitar la renegociación iniciada por el cliente
- Deshabilitar la compresión TLS
- Ofrecer solo cifrados con una longitud de clave superior a 128 bits
- Ofrecer suites de cifrado con propiedades de protocolo de secreto perfecto hacia adelante (Perfect-Forward Secrecy) (
DHE,ECDHE) - Usar un grupo Diffie-Hellman personalizado para protegerse contra el ataque Logjam
- Implementar el campo de encabezado HTTP Strict Transport Security (HSTS)
- Implementar el grapado OCSP (
OSCP stapling)
Ejemplo de una configuración segura de TLS para Nginx generada con Mozilla SSL Configuration Generator
server {
listen 443 ssl;
# Los certificados enviados al cliente en SERVER HELLO están concatenados en ssl_certificate
ssl_certificate /path/to/signed_cert_plus_intermediates;
ssl_certificate_key /path/to/private_key;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
# Parámetro Diffie-Hellman para conjuntos de cifrado DHE, recomendado 2048 bits
ssl_dhparam /path/to/dhparam.pem;
# Configuración moderna. Ajuste según sus necesidades.
ssl_protocols TLSv1.1 TLSv1.2;
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:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK';
ssl_prefer_server_ciphers on;
# HSTS (se requiere ngx_http_headers_module) (15768000 segundos = 6 meses)
add_header Strict-Transport-Security max-age=15768000;
# OCSP Stapling ---
# Obtener registros OCSP de la URL en ssl_certificate y almacenarlos en caché
ssl_stapling on;
ssl_stapling_verify on;
## Verificar cadena de confianza de respuesta OCSP usando CA raíz y certificados intermedios
ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;
resolver <IP DNS resolver>;
....
}
Enlaces
- Hoja de trucos sobre protección de la capa de transporte (OWASP)
- Mejores prácticas de implementación de SSL/TLS (SSLabs)
- Configuración segura de TLS/SSL de Mozilla
Estándares
- OWASP_ASVS_L2:
- V6_2_3
- OWASP_ASVS_L3:
- V6_2_3
- PCI_STANDARDS:
- REQ_2_2
- REQ_4_2
- REQ_6_2
- REQ_6_3
- REQ_6_4
- REQ_11_3
- SOC2_CONTROLS:
- CC_2_1
- CC_4_1
- CC_6_7
- CC_7_1
- CC_7_2
- CC_7_4
- CC_7_5
- HIPAA_CONTROLS:
- SECURITY252
- SECURITY212
- SECURITY213