
CVE-2026-49975
Werkzeug zur Reproduktion der HTTP/2 Remote-Denial-of-Service-Schwachstelle
CVE-2026-49975 ist eine HTTP/2-Denial-of-Service-Schwachstelle, die Mainstream-Webserver betrifft. Die Schwachstelle wurde Anfang Juni 2026 von der Sicherheitsfirma Calif (unter Verwendung von OpenAI Codex) entdeckt.
HPACK-Kompressionsbombe: Ein sehr kleiner Header (z. B. "x: a") wird in die HPACK-Dynamiktabelle des Servers eingefügt, gefolgt von Tausenden 1-Byte-Indexreferenzen. Jede Referenz zwingt den Server, erheblichen Buchhaltungsspeicher zuzuweisen, während der Client nur minimale Bandbreite verbraucht. Das Speichervergrößerungsverhältnis kann ~5700:1 (Envoy) und ~4000:1 (Apache httpd) erreichen.
Slowloris-Flusskontrolle: Durch ein Null-Byte-Flussfenster wird der Server daran gehindert, Antworten zu senden, während WINDOW_UPDATE-Frames tropfenweise gesendet werden, um die Verbindung am Leben zu halten, sodass die Speicherzuweisung „festgesteckt“ bleibt.
Cookie-Aufteilungsumgehung: Große Cookies werden in viele kleine Fragmente aufgeteilt, um die Headeranzahlbegrenzung des Servers zu umgehen.
| Software | Betroffene Versionen | Patch-Version |
|---|---|---|
| Apache httpd (mod_http2) | < 2.0.41 | 2.0.41+ |
| nginx | < 1.29.8 | 1.29.8+ |
| OpenResty | Basiert auf nginx < 1.29.8 | 1.29.8+ |
| Envoy (CVE-2026-47774) | ≤ 1.37.2 | 1.35.11, 1.36.7, 1.37.3, 1.38.1+ |
| Microsoft IIS | Windows Server 2025 | Kein Patch |
| Cloudflare Pingora | Standardkonfiguration | Kein Patch |
Dieses Werkzeug dient der Sicherheitsforschung und autorisierten Tests, um den Angriffsmechanismus von CVE-2026-49975 zu demonstrieren.
pip install -r requirements.txt
# Basisangriff
python http2_bomb.py example.com
# Gegen lokalen HTTP/2-Testserver (ohne TLS)
python http2_bomb.py localhost -p 8080 --no-tls
# Hochintensiver Angriff (50 Streams, 50000 Referenzen pro Stream)
python http2_bomb.py example.com -s 50 -n 50000
# Cookie-Aufteilungsumgehung aktivieren
python http2_bomb.py example.com --cookie-fragments 1000
# Schnellmodus (Verbindung nach dem Senden nicht halten)
python http2_bomb.py example.com --no-hold
| Parameter | Beschreibung | Standardwert |
|---|---|---|
target | Zielhostadresse | Erforderlich |
-p, --port | Zielport | 443 |
--no-tls | TLS deaktivieren | false |
-s, --streams | Anzahl paralleler Streams | 10 |
-n, --headers-per-stream | Header-Referenzen pro Stream | 10000 |
--cookie-fragments | Anzahl Cookie-Fragmente | 0 |
--stream-delay | Verzögerung zwischen Streams (Sekunden) | 0.01 |
--window-update-interval | Intervall für WINDOW_UPDATE | 5.0s |
--no-hold | Verbindung nach dem Senden nicht halten | false |
--timeout | Socket-Timeout | 30 |
Verwenden Sie test_server.py, um einen einfachen HTTP/2-Server für lokale Tests zu starten:
# Selbstsigniertes Zertifikat erstellen
openssl req -x509 -newkey rsa:2048 -keyout server.key -out server.crt -days 365 -nodes
# Testserver starten
python test_server.py --port 8443
# Angriff ausführen
python http2_bomb.py localhost -p 8443
Sofortige Abhilfe: Falls kein sofortiger Patch möglich, vorübergehend HTTP/2 deaktivieren
Protocols http/1.1http2 off;Patch aktualisieren:
Konfiguration härten:
max_headers-Begrenzung setzen (nginx 1.29.8+ standardmäßig 1000)Überwachung und Alarmierung:
⚠️ Dieses Werkzeug dient ausschließlich der Sicherheitsforschung und autorisierten Penetrationstests.
Die unbefugte Nutzung dieses Werkzeugs gegen fremde Systeme ist rechtswidrig. Der Benutzer ist für die Einhaltung lokaler Gesetze verantwortlich und darf das Werkzeug nur gegen Ziele mit entsprechender Genehmigung einsetzen.
MIT-Lizenz – für Sicherheitsforschung und Bildungszwecke.