
Détecteur de vulnérabilité non destructif HTTP/2 Bomb (CVE-2026-49975) pour Nginx / Apache httpd. Python sans dépendances.
Détecteur non destructif de vulnérabilité HTTP/2 Bomb (CVE-2026-49975) — pour Nginx / Apache httpd
CVE-2026-49975 est une vulnérabilité de déni de service à distance affectant largement la couche de protocole HTTP/2, découverte par le chercheur en sécurité Quang Luong. Cette vulnérabilité exploite un défaut de conception combinant la compression d'en-tête HPACK et le mécanisme de contrôle de flux. Un attaquant peut, sans authentification, épuiser 32 Go de mémoire du serveur en 10 à 20 secondes.
| Serveur | Versions affectées | Ratio d'amplification | État du correctif |
|---|---|---|---|
| Apache httpd | 2.4.17 – 2.4.67 (mod_http2 < 2.0.41) | ~4 000:1 | ✅ Corrigé |
| Nginx | < 1.29.8 | ~70:1 | ✅ Corrigé |
| Envoy | ≤ 1.37.2 | ~5 700:1 | ❌ Non corrigé |
| Microsoft IIS | Inclut Windows Server 2025 | ~68:1 | ❌ Non corrigé |
| Cloudflare Pingora | ≤ 0.8.0 | ~62:1 | ❌ Non corrigé |
Cet outil est basé sur un PoC réel et utilise deux modes de détection :
Détecte la bombe d'index de référence HPACK : insère une entrée de table dynamique ("a", ""), puis envoie des références d'index. Chaque référence : 1 octet sur le réseau → 59 octets en mémoire du serveur (3B de copie pool + 56B ngx_table_elt_t). Paramètre d'attaque : refs=32000, la détection utilise seulement refs=3.
Détecte la bombe de fusion de miettes de cookie : exploite le mécanisme de fusion de cookies de mod_http2 (apr_table_setn concatène les cookies répétés avec "; "), le cookie fusionné n'est pas compté dans LimitRequestFields. Paramètre d'attaque : refs=4091 (amplification ~4000:1), la détection utilise seulement refs=3.
ENHANCE_YOUR_CALM → 🛡️ Protection déployéeRST_STREAM → 🛡️ ProtégéGOAWAY → 🛡️ ProtégéZéro dépendance, utilise uniquement la bibliothèque standard Python (ssl, socket, struct).
git clone https://github.com/adminlove520/http2-bomb-detector.git
cd http2-bomb-detector
Nécessite Python 3.7+.
# Détection automatique (modes Nginx + Apache)
python http2_bomb_detector.py --host example.com
# Spécifier un mode
python http2_bomb_detector.py --host example.com --mode nginx
python http2_bomb_detector.py --host example.com --mode httpd
# Spécifier un port
python http2_bomb_detector.py --host example.com --port 8443
# Afficher uniquement les informations de vulnérabilité, sans envoyer de paquets de sonde
python http2_bomb_detector.py --host example.com --no-probe
# Sortie au format JSON
python http2_bomb_detector.py --host example.com --json
# Lire une liste de cibles depuis un fichier
python http2_bomb_detector.py -f targets.txt
# Générer un rapport
python http2_bomb_detector.py -f targets.txt -o report.txt
Format du fichier targets.txt (une cible par ligne, les lignes commençant par # sont des commentaires) :
# Liste de serveurs web
example.com
https://example.org:8443
192.168.1.100
[INFO] Connexion à example.com:443 ...
[OK] Connexion HTTP/2 établie
[INFO] --- Détection mode NGINX ---
[INFO] Vecteur d'attaque : Bombe d'index de référence HPACK : entrée de table dynamique ('a','') × 32000 références
[INFO] Version corrigée : 1.29.8 | Ratio d'amplification : ~70:1
[INFO] Envoi du paquet de sonde (refs=3, non destructif)...
[WARN] ⚠️ Le serveur accepte silencieusement le paquet de sonde — potentiellement vulnérable !
[INFO] --- Détection mode HTTPD ---
[INFO] Vecteur d'attaque : Bombe de fusion de miettes de cookie : cookie vide × 4091 références
[INFO] Version corrigée : mod_http2 2.0.41 / httpd 2.4.68 | Ratio d'amplification : ~4000:1
[INFO] Envoi du paquet de sonde (refs=3, non destructif)...
[OK] Le serveur a rejeté le flux de sonde avec RST_STREAM — protégé
==================================================
🛡️ NGINX: potentially_vulnerable
⚠️ HTTPD: protected
Cet outil est destiné uniquement aux tests de sécurité autorisés. L'utiliser pour détecter des cibles non autorisées peut enfreindre la loi. L'utilisateur assume l'entière responsabilité légale.
MIT