
Preuve de concept (PoC) pour CVE-2026-49975 – attaque d'épuisement de la mémoire du serveur HTTP/2 exploitant l'amplification HPACK et la rétention de connexion (HTTP/2 Slowloris).
Une preuve de concept de déni de service (DoS) ciblant les serveurs HTTP/2. En combinant l'amplification HPACK avec la rétention de flux, une seule machine avec une connexion réseau modeste peut rendre un serveur vulnérable indisponible en quelques secondes.
CVE-2026-49975mod_http2 du serveur Apache HTTP permet une attaque par déni de service via des requêtes HTTP spécialement conçues.L'exploit se déroule en plusieurs étapes, comme illustré par ses journaux d'exécution :
Établissement de connexion TCP/TLS
Plusieurs connexions TCP/TLS simultanées sont ouvertes vers le serveur cible.
Négociation HTTP/2
Le client détecte le nombre maximal de flux simultanés autorisé par le serveur (généralement 100 ou 128).
Amorçage HPACK
Des en-têtes HTTP soigneusement conçus sont envoyés pour forcer le serveur à allouer des tables de compression HPACK excessivement grandes, augmentant rapidement la consommation mémoire.
Rétention de connexion
Une fois les flux ouverts, les connexions restent actives indéfiniment, empêchant la libération de la mémoire allouée et épuisant finalement la RAM disponible du serveur.
Les tests ont été effectués contre plusieurs serveurs web utilisant leurs configurations par défaut.
| Serveur Web | Version testée | RAM | Épuisement mémoire | Comportement observé |
|---|---|---|---|---|
| Envoy | 1.37.2 | 32 Go | ~10 secondes | Mémoire épuisée avec succès très rapidement. |
| Apache HTTP Server | 2.4.67 | 32 Go | ~18 secondes | Limite de flux généralement 100. Progression d'attaque standard via amorçage HPACK et rétention de connexion indéfinie. |
| nginx | 1.29.7 | 32 Go | ~45 secondes | Limite de flux généralement 128. L'attaque réussit mais nécessite plus de temps pour consommer la mémoire disponible. |
| Microsoft IIS | Non spécifié | 64 Go | ~45 secondes | Peut annoncer des limites de flux exceptionnellement grandes comme 4294967297. |
| Cibles non vulnérables | Divers | - | - | Échecs TLS immédiats ou TooManyStreamsError en tentant de dépasser la limite de flux configurée du serveur. |
h2.exceptions.TooManyStreamsErrorSe produit lorsque la valeur fournie à --streams dépasse le nombre maximal de flux simultanés pris en charge par le serveur.
Solution : Sonder la limite de flux du serveur avant de lancer l'attaque.
NameError: name 'SettingsAcknowledued' is not definedUne simple erreur typographique dans le code source du PoC.
Solution : Remplacer :
SettingsAcknowledued
avec :
SettingsAcknowledged
[SSL] unknown errorIndique généralement que la cible ne prend pas en charge HTTP/2 sur TLS ou rejette les connexions entrantes.
EOF occurred in violation of protocolLe serveur distant a fermé la connexion de manière inattendue.
Cela se produit généralement lorsque le serveur commence à épuiser ses ressources et commence à refuser de nouvelles connexions.
Invalid input ConnectionInputs.SEND_HEADERSLe serveur a fermé la connexion HTTP/2 avant que tous les en-têtes de requête n'aient pu être transmis.
La preuve de concept est implémentée sous forme de script Python.
git clone https://github.com/califio/http2-bomb.git
cd http2-bomb
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
Attaque basique avec 10 connexions et 100 flux :
python bomb.py example.com --streams 100 --connections 10
(Nécessite que la cible autorise au moins 100 flux simultanés par connexion.)
Détection automatique de la limite de flux :
python bomb.py example.com --connections 10
Attaque à grande échelle :
python bomb.py target.example.com --connections 50
Test de connexion à haut volume :
python h2bomb.py -t target.example.com:443 -c 1000
Test de connexion à très grande échelle :
python h2bomb.py -t example.com -c 20000
Ce logiciel est fourni exclusivement pour la recherche en sécurité, les fins éducatives et les tests de systèmes pour lesquels vous avez une autorisation explicite.
L'utilisation non autorisée de cet outil contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas la permission de tester peut violer les lois et réglementations applicables. Les auteurs et contributeurs déclinent toute responsabilité en cas d'utilisation abusive ou de dommages résultant de l'utilisation de ce logiciel.