Index
Attaque DROWN sur SSLv2/TLS
Description
Cette vulnérabilité indique que le serveur est susceptible aux attaques DROWN, qui exploitent le support de SSLv2 pour déchiffrer des connexions TLS modernes via des attaques inter-protocoles de type padding oracle de Bleichenbacher.
DROWN (Decrypting RSA with Obsolete and Weakened eNcryption) se produit lorsque les serveurs prennent en charge le protocole obsolète SSLv2 en parallèle avec le TLS moderne. Même si les clients n'utilisent jamais SSLv2, les attaquants peuvent exploiter la faible implémentation du padding RSA de SSLv2 pour déchiffrer des sessions TLS capturées qui partagent la même clé privée.
Fonctionnement :
- L'attaquant capture des centaines de connexions TLS entre le client et le serveur.
- En utilisant la même clé privée RSA, l'attaquant se connecte au service SSLv2 sur le même serveur ou sur un serveur différent.
- Il envoie des messages de handshake SSLv2 spécialement conçus avec un texte chiffré RSA modifié.
- Les réponses du serveur SSLv2 divulguent des informations sur la clé privée via le padding oracle.
- Après environ 40 000 requêtes, l'attaquant peut déchiffrer l'une des sessions TLS capturées.
Prérequis :
- Le serveur cible ou un serveur lié prend en charge SSLv2 avec la même clé privée RSA.
- Échange de clés RSA utilisé dans les connexions TLS (pas ECDHE/DHE).
- Accès réseau pour capturer le trafic TLS et sonder les services SSLv2.
- Ressources de calcul pour les attaques cryptographiques (440 $ sur le cloud).
Scénario d'exemple : Le site web HTTPS d'une banque désactive correctement SSLv2, mais son serveur de messagerie SMTP sur la même infrastructure prend en charge SSLv2 en utilisant le même certificat RSA. Un attaquant capture les sessions TLS des clients vers le site web, puis effectue des milliers de connexions SSLv2 forgées vers le serveur de messagerie. Le faible padding oracle de SSLv2 révèle suffisamment d'informations pour déchiffrer les sessions HTTPS capturées, exposant ainsi les identifiants de connexion et les données financières.
L'attaque exploite les restrictions héritées de la cryptographie de niveau export des années 1990, démontrant comment l'affaiblissement cryptographique imposé par les gouvernements continue de menacer la sécurité moderne des décennies plus tard.
Recommandation
Pour atténuer les attaques DROWN :
Défense principale - Désactiver complètement SSLv2 :
# Apache - désactiver SSLv2
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:!aNULL:!MD5:!SSLv2:!SSLv3
# Nginx - désactiver SSLv2 (déjà désactivé par défaut)
ssl_protocols TLSv1.2 TLSv1.3;
Mettre à jour OpenSSL :
Mettez à niveau vers des versions patchées : - OpenSSL 1.0.2g ou ultérieure - OpenSSL 1.0.1s ou ultérieure - Ces versions désactivent SSLv2 et les suites de chiffrement d'exportation par défaut.
Vérifier TOUS les services utilisant la même clé privée :
Critique : assurez-vous qu'aucun autre service ne prend en charge SSLv2 :
# Vérifier la prise en charge de SSLv2 sur tous les services
nmap --script ssl-enum-ciphers -p 443,993,995,25,587,465 example.com
# Tester le service spécifique pour SSLv2
openssl s_client -connect mail.example.com:993 -ssl2
Services couramment vulnérables : - Serveurs SMTP (ports 25, 587, 465) - Serveurs IMAP (port 993) - Serveurs POP3 (port 995) - Serveurs web secondaires - Équilibreurs de charge et proxys
Générer de nouvelles clés si nécessaire :
Si vous ne pouvez pas confirmer que SSLv2 est désactivé partout :
# Générer une nouvelle clé privée RSA
openssl genrsa -out new-private-key.pem 2048
# Créer une nouvelle demande de signature de certificat
openssl req -new -key new-private-key.pem -out new-csr.pem
Protections supplémentaires :
- Utiliser les suites de chiffrement ECDHE/DHE pour la Perfect Forward Secrecy.
- Implémenter le certificate pinning lorsque cela est possible.
- Surveiller les journaux pour détecter les tentatives de connexion SSLv2 inhabituelles.
- Envisager un filtrage au niveau du réseau du trafic SSLv2.
Information clé : N'IMPORTE QUEL service partageant votre clé privée qui prend en charge SSLv2 rend TOUS vos services TLS vulnérables, même s'ils désactivent individuellement SSLv2.
Liens
Normes
- 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