Brotli CVE-2026-111497 nel KEV: patch per .NET, PHP e Node.js
Falla Brotli CVE-2026-111497 (Node2Shell): patch fuori ciclo per .NET, Node.js, Python e PHP su Windows, PoC pubblici e aggiunta al catalogo KEV della CISA.

Domenica 25 ottobre 2026 Microsoft ha pubblicato aggiornamenti fuori ciclo di .NET per CVE-2026-111497, una scrittura fuori limiti nel decoder di Brotli, la libreria di compressione sviluppata da Google. La falla è nota con diversi nomi: Node2Shell (dato da Imperva), Broccoli2Shell, HTTP2Shell e Brotli2Shell. Il 27 ottobre la CISA l’ha aggiunta al catalogo KEV delle vulnerabilità sfruttate, con scadenza 10 novembre per le agenzie federali statunitensi.
Il nostro articolo del 21 ottobre sui rilasci di sicurezza di Node.js citava questa CVE tra le quattro ad alta gravità, senza dettagli. La vicenda è corsa in parallelo con PHP2Shell, di cui abbiamo scritto il 20 e il 23 ottobre: secondo il titolo di un articolo di The Hacker News, anche il progetto PHP ha pubblicato per Windows un secondo aggiornamento di sicurezza in cinque giorni per correggere la falla di Brotli. Il testo di quell’articolo non era disponibile: il dettaglio su PHP è riportato solo da questa fonte. Di seguito le novità: la causa, chi deve aggiornare e lo stato degli exploit.
La falla
Secondo la descrizione pubblicata dall’NVD, il difetto è nel decoder (c/dec/decode.c) di Brotli dalla 1.0.3 alla 1.2.0, su tutte le piattaforme. Un attaccante remoto e non autenticato, con un flusso compresso costruito ad arte, può corrompere la memoria del decoder, leggere dati sensibili, bloccare il processo o, in alcuni casi, eseguire codice.
Il meccanismo, descritto nell’avviso di Node.js e nel PoC pubblicato su GitHub: davanti a un cambio di blocco non valido, la funzione DecodeBlockTypeAndLength() restituisce un valore ambiguo, che il percorso veloce del decoder interpreta come «servono altri dati» invece che come errore di formato. Il decoder continua così ad aggiungere byte a un buffer interno di otto byte e scrive oltre i suoi limiti. Le debolezze sono CWE-252 (valore di ritorno non controllato) e CWE-787 (scrittura fuori limiti).
Il nome HTTP2Shell trae in inganno: la falla non riguarda solo HTTP/2. È esposta qualsiasi applicazione che decomprime dati Brotli controllati da un attaccante, in due direzioni: una richiesta compressa inviata a un server, oppure una risposta compressa servita a un client che scarica un URL.
Sulla gravità le fonti divergono: CVSS 4.0 9.2 (critica) secondo Google, che ha assegnato la CVE; CVSS 3.1 8.1 nell’avviso di Microsoft, con valutazione «Exploitation More Likely»; gravità «alta» per Node.js.
La correzione era nel codice di google/brotli dal 27 febbraio 2026, senza release né avviso, e secondo Help Net Security è rimasta leggibile pubblicamente per otto mesi. Le versioni corrette sono uscite solo il 21 ottobre. La scoperta è attribuita a Khai Tran e Sylvie Mayer di OpenAI Codex Security.
Chi deve aggiornare
| Componente | Versioni corrette |
|---|---|
| Google Brotli | 1.0.10, 1.1.1, 1.2.1 |
| Node.js | 22.23.4, 24.22.1, 26.12.1 |
| .NET (runtime) | 8.0.33, 9.0.22, 10.0.14; .NET 11 RC3 |
Python Brotli |
1.2.1 |
Python brotlicffi |
1.2.1.0 |
- Node.js: le linee a fine supporto 20.x, 23.x e 25.x sono colpite ma non riceveranno correzioni.
- .NET: secondo Microsoft la decompressione Brotli non è attiva di default. Sono colpite le applicazioni che usano la decompressione delle richieste di ASP.NET Core, la decompressione automatica delle risposte di
HttpCliento le API Brotli diSystem.IO.Compression. Le applicazioni self-contained o Native AOT vanno ricompilate: aggiornare il runtime condiviso non sostituisce il decoder incluso nell’eseguibile. Secondo il sommario di Infosecurity Magazine, gli aggiornamenti correggono anche un’altra vulnerabilità di .NET e difetti non risolti del tutto da un rilascio precedente. - Python: i client HTTP
urllib3[brotli],requests,httpxeaiohttp[speedups]sono esposti se usano un decoder vulnerabile. - Altri prodotti: secondo The Register hanno pubblicato correzioni anche Bun, Envoy e Istio; Tenable cita tra i prodotti potenzialmente colpiti anche FFmpeg, Apache Arrow e ClickHouse. Le distribuzioni Linux stanno pubblicando pacchetti corretti.
Exploit e sfruttamento
Su GitHub ci sono PoC pubblici. Quello descritto da CSO Online colpisce Node.js 24.22.0 Linux x86-64, dipende dal binario e dalla disposizione della memoria e a volte richiede più tentativi; contro la 24.22.1 fallisce. Imperva ha ottenuto l’esecuzione di codice sull’immagine ufficiale di Node.js 24.22.0 per Linux arm64, dopo più tentativi. JFrog ha mostrato un percorso che non passa da HTTP: FFmpeg arriva a Brotli tramite libjxl, che decomprime i metadati dei box brob delle immagini JPEG XL; su Apache Arrow ha ottenuto un blocco del servizio.
Sullo sfruttamento reale le fonti non concordano. BleepingComputer, CSO Online e CyberScoop non riportano attacchi, e l’avviso di Microsoft non ne cita. Secondo Help Net Security, invece, il 26 ottobre ELLIO ha registrato in rete tentativi di attacco con l’exploit pubblico, provenienti dall’indirizzo 94.154.43.7, già visto con exploit di PHP2Shell e con scansioni di GlobalProtect, FortiOS SSL VPN e API di Kubernetes. Il giorno dopo la CISA ha inserito la CVE nel KEV, senza indicare un uso in campagne ransomware.
MITRE ATT&CK (classificazione nostra): T1190 per i servizi esposti che decomprimono richieste, T1203 per i client che ricevono risposte malevole.
Impatto per le aziende europee e italiane
Brotli è incorporato in runtime, proxy, gateway API e strumenti multimediali: secondo Wiz il 91% degli ambienti cloud ha risorse vulnerabili e l’82% ha istanze Node.js esposte. Rapid7 e watchTowr ricordano però che la presenza del decoder non significa esposizione: conta se l’applicazione decomprime dati controllati da un attaccante.
Per i soggetti NIS2 il caso tocca la gestione delle vulnerabilità e la sicurezza della catena di approvvigionamento (articolo 21): conviene documentare quali applicazioni includono Brotli, quali sono state aggiornate e quali restano su runtime fuori supporto.
Cosa fare subito
- Fai l’inventario:
node --version,dotnet --list-runtimes,pip show brotli brotlicffi, pacchettilibbrotlidella distribuzione, immagini container, Envoy e Istio, FFmpeg con libjxl. - Aggiorna alle versioni della tabella, partendo dai servizi che ricevono richieste compresse e dai client che scaricano contenuti esterni.
- Ricostruisci e riavvia: nuove immagini container, ricompilazione delle applicazioni .NET self-contained e Native AOT, riavvio dei processi. Aggiornare la libreria di sistema non corregge le copie incluse in Node.js e nelle applicazioni.
- Se non puoi aggiornare subito: blocca su proxy o firewall le richieste in ingresso con
Content-Encoding: bre togli il supporto Brotli dalle applicazioni Python. Resta aperta la via delle risposte compresse ricevute dai client. - Migra le linee di Node.js 20.x, 23.x e 25.x, che non avranno correzioni.
- Sorveglia crash anomali dei processi che decomprimono dati e il traffico da 94.154.43.7.
Come aiuta ARXDOME
L’inventario di ARX Sentry elenca software e processi dei server con l’agent: aiuta a trovare Node.js, .NET e Python. ARX Shield mostra le vulnerabilità aperte per macchina e per pacchetto, con quelle già sfruttate in evidenza; le copie di Brotli incluse nelle applicazioni vanno comunque verificate a parte. ARX Expose indica quali servizi pubblici della tua azienda espongono prodotti riconosciuti.
Ultimo aggiornamento:


