Aller au contenu

Insecure TLS Ciphers supported

Suites de chiffrement TLS non sécurisées prises en charge

Description

Le protocole Transport Layer Security (TLS) commence par une demande de connexion sécurisée du client, qui présente une liste des suites de chiffrement (cipher suites) prises en charge.

Une suite de chiffrement est une liste d'algorithmes d'authentification, de chiffrement, de code d'authentification de message (MAC) et d'échange de clés. Chaque algorithme a un rôle spécifique lors de la négociation du protocole. Par exemple, l'utilisation d'un algorithme faible peut avoir un impact critique sur la sécurité de l'ensemble du canal.

Il a été identifié que le point de terminaison prend en charge une combinaison de suites de chiffrement et de protocoles Secure Sockets Layer / Transport Layer Security (SSL/TLS) qui souffrent de faiblesses cryptographiques connues. Par conséquent, il ne faut pas s'y fier pour assurer une sécurité efficace de la couche de transport. Un attaquant capable d'écouter la connexion pourrait influencer ou déchiffrer le trafic transitant.

Des faiblesses cryptographiques ont été démontrées pour toutes les configurations suivantes :

  • Prise en charge du protocole SSL obsolète (v2 ou v3)
  • Prise en charge de suites de chiffrement offrant des clés inférieures à 128 bits
  • Prise en charge de suites de chiffrement offrant le mode CBC en combinaison avec un protocole TLS inférieur à la version 1.1, vulnérable à l'attaque BEAST
  • Utilisation de la compression dans TLS vulnérable à l'attaque CRIME
  • Prise en charge de suites de chiffrement offrant RC4 comme chiffrement
  • Prise en charge de suites de chiffrement offrant DES comme chiffrement
  • Prise en charge de suites de chiffrement offrant MD5 comme algorithme de signature

Recommandation

La configuration TLS recommandée doit appliquer les recommandations suivantes :

  • Se restreindre à TLSv1 et supérieur, en privilégiant TLS1.2
  • Si SSLv3 est requis, il est conseillé de mettre en œuvre la fonctionnalité TLS Fallback SCSV pour empêcher les attaques par repli (downgrade) de protocole
  • Désactiver Diffie-Hellman anonyme (ADH)
  • Désactiver les suites de chiffrement aNULL et eNull
  • Désactiver les suites d'échange de clés Export
  • Supprimer la prise en charge de RC4
  • Supprimer la prise en charge de DES
  • Supprimer la prise en charge de MD5
  • Préférer SHA256 à SHA1
  • Préférer AES128 à AES256 car 256 offre peu d'avantages en matière de sécurité et est moins robuste aux attaques temporelles (timing attacks)
  • Désactiver la renégociation initiée par le client
  • Désactiver la compression TLS
  • N'offrir que des chiffrements avec une longueur de clé supérieure à 128 bits
  • Offrir des suites de chiffrement avec des propriétés de protocole de confidentialité persistante (Perfect-Forward Secrecy) (DHE, ECDHE)
  • Utiliser un groupe Diffie-Hellman personnalisé pour se protéger contre l'attaque Logjam
  • Implémenter le champ d'en-tête HTTP Strict Transport Security (HSTS)
  • Implémenter l'OSCP stapling

Exemple de configuration TLS sécurisée pour Nginx générée avec Mozilla SSL Configuration Generator

    server {
        listen 443 ssl;

        # les certificats envoyés au client dans SERVER HELLO sont concaténés dans 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;

        # Paramètre Diffie-Hellman pour les suites de chiffrement DHE, 2048 bits recommandés
        ssl_dhparam /path/to/dhparam.pem;

        # configuration moderne. à adapter selon vos besoins.
        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 (ngx_http_headers_module est requis) (15768000 secondes = 6 mois)
        add_header Strict-Transport-Security max-age=15768000;

        # OCSP Stapling ---
        # récupérer les enregistrements OCSP de l'URL dans ssl_certificate et les mettre en cache
        ssl_stapling on;
        ssl_stapling_verify on;

        ## vérifier la chaîne de confiance de la réponse OCSP en utilisant la CA racine et les certificats intermédiaires
        ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;

        resolver <IP DNS resolver>;

        ....
    }

Liens

Normes

  • 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