CRIME Attack on TLS Compression
Attaque CRIME sur la compression TLS
Description
Cette vulnérabilité indique que le serveur est susceptible aux attaques CRIME, qui exploitent la compression TLS pour extraire des informations sensibles telles que les cookies d'authentification via l'analyse du taux de compression.
CRIME (Compression Ratio Info-leak Made Easy) se produit lorsque les connexions TLS utilisent la compression DEFLATE, qui élimine les chaînes de caractères en double afin de réduire la bande passante. Les attaquants exploitent ce mécanisme en injectant des données contrôlées correspondant en partie aux informations secrètes, puis en observant l'impact de la compression sur la taille de la charge utile chiffrée.
Comment ça fonctionne :
- L'attaquant force le navigateur de la victime à effectuer des requêtes HTTPS vers le site cible.
- Les requêtes malveillantes contiennent des suppositions qui correspondent partiellement aux valeurs secrètes du cookie.
- Lorsque les suppositions correspondent au contenu réel du cookie, la compression réduit la taille de la charge utile.
- L'attaquant mesure la longueur des requêtes chiffrées pour valider ses suppositions.
- Le processus est répété octet par octet jusqu'à ce que le cookie soit entièrement extrait.
Exigences :
- Le client et le serveur doivent tous deux supporter la compression TLS DEFLATE.
- Position réseau de type "Man-in-the-middle" pour observer le trafic.
- Capacité d'injecter du JavaScript ou de contrôler les requêtes de la victime.
- Les secrets ciblés doivent apparaître dans les données de la requête compressée.
Example Scenario: Un utilisateur se connecte au site web de sa banque depuis un réseau WiFi public. Un attaquant injecte un script JavaScript qui effectue des milliers de requêtes HTTPS avec des suppositions sur le cookie telles que "sessionid=a", "sessionid=b", etc. Lorsque la supposition correspond au cookie de session réel, la compression DEFLATE détecte la chaîne en double et génère une charge utile plus petite. En mesurant les tailles chiffrées, l'attaquant parvient à extraire le cookie de session complet en quelques minutes.
La vulnérabilité affecte les anciens navigateurs (Chrome/Firefox antérieurs à 2012) qui supportaient la compression TLS, permettant le vol complet de session et l'accès non autorisé aux comptes par le biais d'attaques d'oracle de compression.
Recommandation
Pour se prémunir contre les attaques CRIME :
Défense principale - Désactiver la compression TLS :
# Nginx - La compression TLS est désactivée par défaut
# Veillez à n'avoir aucune activation explicite de la compression
# Apache - Désactiver la compression TLS
SSLCompression off
# Applications Python
import ssl
context = ssl.create_default_context()
context.options |= ssl.OP_NO_COMPRESSION
Mettre à jour les logiciels :
La plupart des navigateurs et serveurs modernes ont la compression TLS désactivée par défaut : - Chrome/Firefox ont supprimé le support de la compression TLS en 2012. - Mettre à jour vers les dernières versions d'OpenSSL (désactivée par défaut à partir de la version 1.0.0+). - Utiliser TLS 1.3 qui supprime complètement la compression.
Tester la compression TLS :
# Vérifier si le serveur supporte la compression TLS
openssl s_client -connect example.com:443 < /dev/null 2>&1 | grep -i compression
# Le résultat attendu : "Compression: NONE"
# Le serveur est vulnérable s'il affiche : "Compression: zlib compression"
# Test alternatif
nmap --script ssl-enum-ciphers -p 443 example.com
Mesures d'atténuation supplémentaires :
- Implémenter des jetons CSRF avec un padding aléatoire pour réduire l'efficacité de la compression.
- Utiliser une gestion de session sécurisée avec une rotation fréquente des jetons.
- Surveiller les modèles de requêtes inhabituels indiquant des attaques potentielles.
- Activer HSTS pour prévenir les tentatives de rétrogradation de protocole (downgrade attacks).
Les applications modernes sont généralement protégées, car la compression TLS a été largement désactivée suite à la divulgation de CRIME en 2012, mais les systèmes patrimoniaux peuvent encore y être vulnérables.
Liens
Normes
- SOC2_CONTROLS:
- CC_6_7
- CC_7_1
- HIPAA_CONTROLS:
- SECURITY252
- SECURITY212
- SECURITY213
- CCPA:
- CCPA_1798_150
- GDPR:
- ART_32
- PCI_STANDARDS:
- REQ_4_1
- REQ_6_2
- REQ_11_3