Broccoli2Shell dimostra che il codice più rischioso è quello che non hai scelto
Una falla nel decoder Brotli raggiunge Node.js, Python e altro attraverso il normale traffico web. La lezione non è correggere più in fretta, ma sapere dove si nasconde il codice condiviso.
Foto: Esquilo / Wikimedia Commons (CC BY-SA 3.0)
Quale libreria decomprime i dati che arrivano al tuo server? Se non sai rispondere in meno di un minuto, Broccoli2Shell è un problema anche tuo, che tu abbia mai scritto o meno la parola "Brotli" nel tuo codice.
Il bug è il CVE-2026-111497, una scrittura fuori dai limiti nel decoder Brotli di Google. Secondo Strobes, riguarda le versioni di Brotli dalla 1.0.3 alla 1.2.0 e ha un punteggio di 9,2 (critico) su CVSS 4.0. Poiché client e server HTTP decodificano automaticamente Content-Encoding: br, raggiunge Node.js, Python, Bun e altri stack attraverso il normale traffico web. Node.js ha rilasciato le correzioni il 21 ottobre nelle versioni 22.23.4, 24.22.1 e 26.12.1, come riportano Qualys e altri. Il nome è cambiato più volte (Node2Shell, HTTP2Shell, Broccoli2Shell), sempre per lo stesso CVE.
Il cambio di nome è la vera storia
Strobes fa un'osservazione acuta: il soprannome è cambiato tre volte in quattro giorni, e ogni nome rifletteva chi il settore riteneva esposto. È iniziato come una patch per un runtime ed è diventato un problema di dipendenze e di supply chain. Crediamo che questo percorso sia la lezione. Il codice vulnerabile si trova in una libreria C che molti progetti includono, collegano o ereditano. Nessuno l'ha "installata" per scelta. È arrivata con il runtime, il client HTTP o l'immagine.
Per questo si tratta di un'infrastruttura invisibile. Semgrep osserva che il bug non è in un pacchetto npm chiamato brotli, né in body-parser stesso. Eppure body-parser passa al decoder dati compressi controllati dall'attaccante. Il tuo scanner di dipendenze può restare in silenzio mentre il problema sta un livello più sotto. Strobes segnala anche un tracker pubblico, gestito da ricercatori indipendenti, che elenca i progetti le cui copie incluse non erano ancora corrette il 24 ottobre, tra cui il runtime.NET, l'estensione brotli di PHP e la gemma brotli di Ruby. Aggiornare la distribuzione non serve a nulla per il software che porta con sé una copia privata.
L'esposizione dipende dai percorsi, e il peggiore è quello in uscita
Non tutti i servizi Node sono ugualmente a rischio, ed è bene dirlo chiaramente per evitare il panico. Semgrep sottolinea che l'applicazione deve eseguire una versione interessata, usare un parser compatibile con Brotli, avere la decompressione attiva ed esporre una route in cui è montato. Secondo Strobes, Express 5 con body-parser 2.x decodifica per impostazione predefinita i corpi delle richieste Brotli, quindi un singolo app.use(express.json) può mettere il decoder davanti a traffico anonimo.
Il percorso che troviamo più scomodo è quello che nessuno monitora: le risposte che il tuo stesso codice scarica. Il fetch integrato di Node decodifica Brotli in automatico, e Strobes dice che urllib3, aiohttp e httpx di Python fanno lo stesso quando è installato un pacchetto Brotli, anche se il tuo codice non lo importa mai. Webhook, anteprime dei link, "importa da URL", crawler e agenti IA che navigano sono tutte porte da cui può entrare un estraneo. Strobes aggiunge che nessun WAF vedrà questo percorso. Il WAF di Vercel, secondo TuxCare, blocca la route in ingresso ma non le risposte recuperate altrove.
Le patch eroiche non scalano; gli inventari sì
La reazione tipica è un weekend di aggiornamenti frenetici. Per Node 22, 24 e 26 funziona: la correzione è, parole di TuxCare, noiosa. Ma TuxCare avverte anche che Node.js 20, 18 e precedenti non ricevono nulla dal progetto originale, e il parco dimenticato è proprio quello che morde. Poi c'è la trappola del riavvio: un processo in esecuzione mantiene in memoria il vecchio decoder.
Anche la cronologia dovrebbe preoccuparci. TuxCare, citando The Hacker News, dice che la modifica correttiva è entrata nel codice sorgente di Brotli a febbraio 2026 ma non è arrivata in una release di sicurezza fino al 21 ottobre. Strobes aggiunge che nessuno l'aveva collegata all'esecuzione di codice remoto fino a ottobre. Una patch pubblica è una mappa, come ha scritto un autore su Medium. Strobes riferisce che esistono proof of concept pubblici, e secondo TuxCare al 22 ottobre non risultava alcuno sfruttamento in the wild. Considereremmo questa calma temporanea, non rassicurante.
Nella stessa settimana è arrivato PHP2Shell, che Semgrep descrive come una falla presente in PHP da oltre un decennio, e Google Cloud afferma che le applicazioni con PHP 7.4 restano vulnerabili. Due divulgazioni su runtime a un giorno di distanza non dimostrano che la sicurezza sia crollata; la stessa Semgrep dice che la tendenza più ampia si sta formando da anni. Ma mostrano quanto poco tempo abbiamo per capire cosa eseguiamo.
Il nostro verdetto
Aggiorna subito, ovviamente. Poi fai il lavoro noioso che ti protegge davvero: tieni un inventario che scenda sotto i manifest dei pacchetti e copra runtime, librerie native incluse, immagini base dei container, runner CI e ogni punto in cui il tuo codice scarica un URL controllato da altri. Dismetti i runtime a fine vita invece di sperare. Ci aspettiamo che prima o poi arrivi il prossimo bug di decompressione, e il team che sa rispondere in pochi minuti a "dove lo eseguiamo?" batterà quello con le migliori imprese di patching.
Ancora nessun argomento: apri il primo.
Altri articoli
Gli agenti di acquisto IA anonimi sono un regalo per i truffatori
Secondo Arkose Labs, il 97,7% delle sessioni legittime di agenti non ha alcun ID verificato. Il commercio agentico non può crescere a tentoni e la dichiarazione non dovrebbe più essere facoltativa.
L'era delle patch ora viaggia a velocità macchina e i cicli trimestrali sono finiti
Due falle di PHP trovate con l'IA hanno messo in allarme governi e aziende. La lezione non è il panico: i processi di patch pensati per tempi umani non reggono più il ritmo degli attaccanti.
Una shell root su una TV Samsung dimostra che il tuo salotto è un PC senza patch
Le smart TV sono computer Linux in rete e di lunga durata. Gli exploit root che si accumulano mostrano perché i produttori dovrebbero garantire aggiornamenti come per gli smartphone.
Il data breach di Capcom da 11,7 milioni di account: gli ID dei giochi restano sottovalutati
Un data breach da 11.774.247 record CAPCOM ID non riguarda «solo email». I publisher che gestiscono account su questa scala devono rispondere agli standard di qualsiasi piattaforma consumer.



