HTTP/2 Bomb (CVE-2026-49975): quando un agente AI ha composto due primitive vecchie di dieci anni
Codex ha unito amplificazione HPACK e stallo Slowloris in una catena DoS 5.700:1 che colpisce nginx, Apache, IIS, Envoy e Pingora — 880.000 server esposti. La lezione difensiva è simmetrica.
Il 2026-06-02 la società di offensive security Calif ha pubblicato una disclosure che merita di essere letta due volte. Attribuiscono all'agente Codex di OpenAI il merito di aver trovato una catena di denial-of-service remoto che colpisce nginx, Apache httpd, Microsoft IIS, Envoy e Cloudflare Pingora — cinque tra le implementazioni HTTP/2 più diffuse sull'internet pubblico. Shodan conta circa 880.000 server esposti. La catena combina due primitive che sono pubblicamente documentate da quasi dieci anni. Nessun umano le ha composte in quel decennio. Codex sì.
Il pezzo Apache porta il CVE-2026-49975; le altre implementazioni hanno avuto advisory dedicate dai rispettivi vendor. Al momento della disclosure, IIS e Pingora erano ancora senza patch.
Cosa fa davvero l'HTTP/2 Bomb
L'attacco concatena due debolezze note nello strato di compressione header HPACK di HTTP/2.
La prima primitiva è l'amplificazione della tabella HPACK. HPACK permette al client di popolare la tabella dinamica del server con una singola entry di grandi dimensioni — per esempio, un valore di cookie da 4 KB. Da quel momento, ogni richiesta successiva può referenziare quella entry per indice usando un singolo byte sul filo. Il server, però, deve ricostruire l'header completo ogni volta che processa lo stream. Un byte in ingresso, diversi kilobyte di memoria allocati in uscita. Il rapporto di amplificazione dipende da quanto il server limita la dimensione per header e dal fatto che i cookie vengano contati o meno in quel limite.
La seconda primitiva è lo stallo del flow control in stile Slowloris. HTTP/2 supporta flow control per-stream tramite frame WINDOW_UPDATE. Un client che apre stream, spara il payload di amplificazione, e poi si rifiuta di far avanzare la finestra di ricezione, costringe il server a tenere i buffer allocati in memoria a tempo indeterminato. Ogni stream diventa una tassa sull'heap del server.
Composta, la catena è brutalmente efficiente. I ricercatori di Calif riportano i seguenti rapporti di amplificazione:
| Server | Amplificazione di banda | Tempo per esaurire 32 GB |
|---|---|---|
| Envoy 1.37.2 | ~5.700:1 | ~10 secondi |
| Apache 2.4.67 | ~4.000:1 | secondi |
| nginx 1.29.7 | ~70:1 | sotto il minuto |
| IIS (WS 2025) | ~68:1 | sotto il minuto |
Una connessione residenziale da 100 Mbit/s è sufficiente per mettere offline un'istanza Envoy in circa il tempo che ci vuole a ricaricare una scheda del browser.
Le due metà erano pubbliche da dieci anni
Questo è il punto che dovrebbe mettere a disagio i difensori. HPACK è stato standardizzato nella RFC 7541 nel 2015. Il rischio di amplificazione è stato discusso nella letteratura accademica e operativa entro pochi mesi dall'uscita della specifica. Slowloris è la disclosure di Robert Hansen del 2009 — più di quindici anni fa. Le due primitive convivono in ogni talk di conferenza sull'hardening di HTTP/2 dal 2016.
Nessuno le ha composte in una forma che producesse impatto in produzione. Il dispatcher dell'attenzione nella ricerca offensiva è umano: un ricercatore sceglie un bug, lo porta a un PoC funzionante, lo scrive, va avanti. La componibilità tra team diversi e attraverso gli anni è difficile. Devi leggere due codebase contemporaneamente, riconoscere che i modi di fallimento interagiscono, e scrivere il collante. È esattamente il tipo di sintesi cross-file e cross-paper che un LLM, dato un prompt offensivo, tenta senza il costo cognitivo che paga un umano.
Leggendo il post di Calif con attenzione si vede l'inquadramento onesto: l'AI non ha inventato né la crittografia né l'exploit di protocollo. Ha letto le codebase, ha riconosciuto che le due primitive compongono, ha scritto il collante, e ha lasciato la verifica agli umani. Quang Luong e il resto del team Calif hanno fatto il lavoro di validazione e di disclosure. La catena è nuova; nessuna delle due primitive lo è.
"L'attacco è stato scoperto da Codex, che ha concatenato due tecniche note agli umani da un decennio." — Disclosure Calif, 2026-06-02
Quella singola frase è tutta la storia.
Stato della catena di patch
Lo stato delle patch al momento della disclosure è disomogeneo, e questo è il secondo punto scomodo.
- nginx ha rilasciato 1.29.8 con una nuova direttiva
max_headersche limita la dimensione totale degli header compressi per richiesta. Efficace. Richiede configurazione esplicita; il default è generoso. - Apache httpd ha pubblicato
mod_http22.0.41 (modulo standalone e trunk; non ancora in una release stabile 2.4.x). Il fix fa sì che gli headerCookievengano contati nelLimitRequestFields— il bypass che Calif ha usato. CVE-2026-49975 copre questo fix, committato in giornata da Stefan Eissing il 2026-05-27 dopo coordinated disclosure. - Envoy ha pubblicato le patch il giorno dopo il post pubblico di Calif.
- Microsoft IIS: senza patch al momento della disclosure. Nessuna finestra di advisory comunicata.
- Cloudflare Pingora: senza patch al momento della disclosure. La natura closed-source del deployment di Pingora all'edge di Cloudflare significa che l'impatto sulle proprietà servite da Cloudflare è vincolato a qualsiasi mitigazione interna deployata da Cloudflare, e non è auditabile dall'esterno.
La mitigazione temporanea per gli stack senza patch è disabilitare HTTP/2 (Protocol http/1.1 su Apache, equivalente sugli altri) o ridurre drasticamente il limite di dimensione header per stream. Entrambe hanno un costo collaterale — HTTP/2 è il pavimento di throughput per il traffico web moderno, e l'abbassamento del limite romperà client legittimi che inviano header Cookie compositi lunghi.
Il gap di validazione di cui nessuno parla
La domanda interessante non è "come ha fatto Codex a trovarlo." È "perché il tuo ultimo pentest non l'ha trovato."
Un'attività di pentest tradizionale gira contro un target. Il tester sceglie una superficie d'attacco, lancia gli scanner, prova approcci credenziali e non credenziali, scrive un report. La profondità dell'ingaggio è vincolata dal modello mentale del tester e dal tempo a contratto. La composizione tra primitive viene raramente testata perché lo spazio di ricerca esplode: due bug qualsiasi tra N noti danno N² catene candidate, tre danno N³, e la maggior parte sono inutili. Un umano non può ordinare quello spazio per rilevanza.
Un agente AI offensivo che fa ricerca per composizione su larga scala sì. Non è una claim di marketing — è la ragione strutturale per cui questo CVE è stato trovato da Codex e non da un umano, in un pezzo di software che sta sul perimetro di quasi ogni grande proprietà web al mondo. La superficie di attacco è la stessa. Le primitive sono le stesse. Quello che è cambiato è chi sta facendo la ricerca.
Per i difensori, l'implicazione è simmetrica. Se il lato offensivo ha accesso a ricerca per composizione guidata da LLM, il lato difensivo deve far girare una ricerca equivalente in continuo contro il proprio perimetro — non una volta l'anno, non dopo i ticket di change, ma ogni giorno. Il costo di farlo con umani è proibitivo. Il costo di farlo con uno swarm AI costruito per lo scopo è limitato dalla GPU su cui gira.
Questa è la parte del catalogo CISA KEV e dell'ENISA Threat Landscape che le dashboard non fanno emergere: il gap tra "CVE pubblicato" e "exploitation osservata" si sta riducendo, e il gap tra "primitiva pubblicata" e "composizione nuova exploitata" si sta riducendo più forte. HTTP/2 Bomb è l'esempio canonico. Non sarà l'unico pubblicato questo trimestre.
Cosa dovrebbero chiedere i CISO ai loro team questa settimana
Tre domande concrete, tutte rispondibili in un pomeriggio:
- Quali delle nostre proprietà esposte su internet terminano HTTP/2 su IIS o Pingora? Inventariare prima gli stack senza patch. Disabilitare HTTP/2 su quegli endpoint finché non arrivano le patch del vendor.
- Qual è il valore attuale di
max_headers(nginx) eLimitRequestFieldSize(Apache) su ogni reverse proxy esposto? I default non sono sicuri. La patch del vendor è necessaria ma non sufficiente — la direttiva protettiva va configurata. - Quando è l'ultima volta che abbiamo eseguito una validazione di catena di exploit, non uno scan CVE? Uno scanner vede CVE individuali. La catena HTTP/2 Bomb non è un CVE in un database CVE per quattro dei cinque stack colpiti; è una composizione. Uno scanner che riporta solo ID listati in KEV la mancherà.
Come Zero Hunt affronta questo scenario
La storia di HTTP/2 Bomb è l'illustrazione più pulita possibile del perché Zero Hunt è costruito così. Lo swarm di 10 agenti di pentest generativo della piattaforma — Recon, Exploit, Web, Credential, Post-Exploit, Pivot, Tactic, Report, più l'AI Controller — fa esattamente la ricerca per composizione che ha fatto l'agente Codex del team Calif, ma in continuo, contro il perimetro del cliente, con la GPU dell'appliance come tetto di costo. I nuovi exploit sono scritti per-target dall'LLM locale; non sono presi da ExploitDB. La composizione di primitive note in una catena nuova è esattamente la classe di comportamento che lo swarm esiste per far emergere prima dell'attaccante.
L'AI Gym, con le sue 142+ skill di sicurezza self-evolving backtestate contro Vulhub (316 su 317 esercizi in 16 classi), NYU CTF Bench, Cybench e i 314 task black-box CVE-based di Vulhub-Bench, è dove le nuove catene si guadagnano il diritto di girare in un ambiente reale. Una skill che compone amplificazione HPACK con stallo Slowloris viene validata contro il corpus prima di toccare traffico in produzione. Il Knowledge RAG dell'AI Gym — ricerca semantica pgvector su ogni esecuzione, finding e remediation passati — è il modo in cui l'engine ricorda che le due primitive compongono, così non deve riscoprire la catena per ogni cliente.
Sul lato wire, il modello di analisi traffico deep-learning a 4 head è la seconda linea: il traffico HTTP/2 Bomb ha una firma distintiva (riferimenti HPACK a un byte sostenuti contro una dynamic table popolata, con comportamento WINDOW_UPDATE stallato) che non richiede una signature CVE-specifica per essere flaggato come anomalo. Il modello gira sulla GPU dell'appliance a 2.7+ Gbit/s di baseline, in locale, senza callback verso cloud. Cattura la catena mentre viene eseguita in tempo reale, non nel digest SIEM di domani.
Per gli operatori regolati — entità essenziali e importanti NIS2, entità finanziarie DORA, il perimetro pubblica amministrazione che ACN sta inventariando — il layer di compliance mappa il finding contro i 32 framework al momento della scrittura e firma ECDSA la catena di evidenze. Quando l'auditor chiede "avete validazione continua contro attacchi di composizione sul vostro perimetro," c'è una risposta difendibile con una firma verificabile sopra.
L'HTTP/2 Bomb è il tipo di finding che, fino a questa settimana, aveva solo un team offensivo al mondo. Da questa settimana, ogni team offensivo ha il playbook. Il lato difensivo deve rispondere allo stesso tempo. Parlaci se vuoi vedere come si presenta la validazione continua AI-on-AI contro il tuo perimetro.