Saltar a contenido

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 CBC en 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 RC4 como cifrado
  • Compatibilidad con suites de cifrado que ofrecen DES como cifrado
  • Compatibilidad con suites de cifrado que ofrecen MD5 como algoritmo de firma

Recomendación

La configuración recomendada de TLS debe aplicar las siguientes recomendaciones:

  • Restringir a TLSv1 y superior, prefiriendo TLS1.2
  • Si se requiere SSLv3, se aconseja implementar la característica TLS Fallback SCSV para prevenir ataques de degradación (downgrade) de protocolo
  • Deshabilitar Diffie-Hellman anónimo (ADH)
  • Deshabilitar las suites de cifrado aNULL y eNull
  • Deshabilitar las suites de intercambio de claves Export
  • Eliminar la compatibilidad con RC4
  • Eliminar la compatibilidad con DES
  • Eliminar la compatibilidad con MD5
  • Preferir SHA256 sobre SHA1
  • Preferir AES128 sobre AES256 ya 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

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