
PoC de recherche en sécurité pour CVE-2026-49975 : bombe de compression HTTP/2 HPACK + DoS par blocage du contrôle de flux dans Apache mod_http2
PoC de recherche en sécurité par naheeju
⚠️ Il s'agit d'un outil DoS fonctionnel d'épuisement de mémoire — pas un jouet. Il ouvre des flux qui forcent la cible à allouer de la mémoire et les maintient ouverts via des astuces de contrôle de flux HTTP/2. Tant que le processus est en cours d'exécution, il continue de maintenir et se reconnecte automatiquement si le serveur coupe la connexion — il ne s'arrête pas de lui-même. L'impact évolue directement avec
--threads,--streamset--headers. L'arrêt du processus (Ctrl+C) libère les flux maintenus et permet au serveur de récupérer, mais rien dans le fonctionnement par défaut n'est « doux » — considérez chaque exécution comme un test à feu réel.
CVE-2026-49975 (« HTTP/2 Bomb ») est une vulnérabilité de déni de service distante et non authentifiée affectant le module mod_http2 du serveur HTTP Apache. Elle enchaîne deux faiblesses HTTP/2 connues de longue date :
Cookie sans qu'ils soient comptabilisés par rapport à LimitRequestFields, forçant le serveur à allouer de la mémoire de manière répétée pour ses structures internes de comptabilité d'en-têtes.Le résultat : un seul client sur une connexion modeste peut forcer une allocation mémoire importante et soutenue sur la cible aussi longtemps que le flux est maintenu ouvert. Cette implémentation prend en charge deux modes de charge utile et évolue linéairement avec la concurrence que vous configurez :
nginx — plante un en-tête x-bomb vide dans la table dynamique HPACK et le référence de manière répétée (~70:1 d'amplification par référence).classic — plante à la place un en-tête cookie surdimensionné (~4000:1 d'amplification par référence).Chaque connexion référence à nouveau l'en-tête planté des milliers de fois par flux (--headers, par défaut 5000), sur plusieurs flux par connexion (--streams, par défaut 10) et plusieurs connexions parallèles (--threads, par défaut 1). Si le serveur ferme une connexion, l'outil se reconnecte immédiatement et continue jusqu'à l'arrêt manuel — il s'agit d'une boucle de maintien continu, pas d'une sonde ponctuelle unique.
Identifiants associés pour d'autres piles affectées (non implémentés ni testés par ce dépôt) :
CVE-2026-47774Portée complète de la classe de faiblesse sous-jacente, par souci d'exhaustivité — la technique « HTTP/2 Bomb » (bombe de compression HPACK + maintien de contrôle de flux) affecte plusieurs implémentations de serveurs au-delà d'Apache. Ce dépôt n'implémente et ne teste que le cas Apache ; le reste est inclus pour que les lecteurs comprennent la classe plus large, et non parce que ce PoC les exerce :
| Implémentation | Statut | Implémenté dans ce PoC ? |
|---|---|---|
Apache HTTP Server mod_http2 | Corrigé dans httpd 2.4.68 (2026-06-08) | Oui — ce dépôt |
| nginx | Corrigé dans 1.29.8 | Non |
| Envoy | Suivi séparément | Non |
| Microsoft IIS | Suivi séparément | Non |
| Cloudflare Pingora | Suivi séparément | Non |
| CVE | CVE-2026-49975 |
| CWE | CWE-789 (Memory Allocation with Excessive Size Value, selon NVD/CVE.org) ; également suivi comme CWE-409 (Improper Handling of Highly Compressed Data) par certains éditeurs |
| CVSS | 7.5 (Élevé) — CVSS v3.1, vecteur de disponibilité uniquement (selon NVD). L'avis d'Apache le classe quant à lui comme Modéré. |
| Composant affecté | Apache HTTP Server mod_http2 |
| Versions vulnérables | Apache httpd 2.4.17 ≤ version ≤ 2.4.67 (configuration HTTP/2 par défaut) |
| Corrigé dans | Apache HTTP Server 2.4.68 (publié le 2026-06-08). Le correctif sous-jacent a été intégré en amont dans mod_h2 le 2026-05-27, fusionné dans la branche httpd 2.4.x le 2026-06-02, livré dans la version 2.4.68. |
| Type d'attaque | Déni de service — épuisement de mémoire (disponibilité uniquement) |
| Authentification requise | Non |
| Exposition de données / RCE | Aucune — impact sur la disponibilité uniquement |
| Exploitation connue | Actuellement non signalé comme exploité dans la nature par les sources suivies. |
Références (sources primaires — vérifiez toutes les affirmations de manière indépendante) :
Ce dépôt contient :
Ce dépôt ne contient pas :
Lisez ceci avant toute autre chose.