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
CBCen 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
RC4comme chiffrement - Prise en charge de suites de chiffrement offrant
DEScomme chiffrement - Prise en charge de suites de chiffrement offrant
MD5comme algorithme de signature
Recommandation
La configuration TLS recommandée doit appliquer les recommandations suivantes :
- Se restreindre à
TLSv1et supérieur, en privilégiantTLS1.2 - Si
SSLv3est requis, il est conseillé de mettre en œuvre la fonctionnalitéTLS Fallback SCSVpour empêcher les attaques par repli (downgrade) de protocole - Désactiver Diffie-Hellman anonyme (
ADH) - Désactiver les suites de chiffrement
aNULLeteNull - 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àAES256car 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
- Aide-mémoire sur la protection de la couche transport (OWASP)
- Bonnes pratiques de déploiement SSL/TLS (SSLabs)
- Configuration sécurisée TLS/SSL de Mozilla
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