Da Node2Shell a HTTP2Shell: Brotli mette in pericolo anche Python, C++, bun, Envoy (aggiornato: 24 ottobre 2026, ore 12:14)
- a cura di: massimo.valenti
- Commenti:
- Letture:
- Aggiornato: 54 minuti fa
- Pubblicato: 57 minuti fa
Per favore, aggiungi TurboLab.it alle eccezioni del tuo Ad Blocker. Siamo un progetto no-profit, e la pubblicità è indispensabile per pagare le spese.
In alternativa, puoi sostenerci con una donazione.
Rispetteremo ogni tua scelta, e potrai sempre utilizzare il sito senza limitazioni.
All'inizio si chiamava "Node2Shell", perché i primi proof of concept colpivano Node.js, ma, dalla tarda serata di ieri 23 ottobre 2026, circola anche come "HTTP2Shell". Il bug è lo stesso, ma il perimetro è molto più ampio: sono coinvolte librerie e applicazioni che gestiscono traffico HTTP con le librerie libbrotli o brotlicffi. Spesso Brotli arriva come dipendenza indiretta, quindi molti sviluppatori potrebbero essere esposti senza saperlo.

La falla è un out-of-bounds write nel codice di decompressione di Brotli, in particolare nel file c/dec/decode.c. La scheda CVE, redatta da Google in qualità di CNA, assegna un punteggio di 9.2 su CVSS 4.0, cioè critico.
Il vettore descrive un attacco via rete, a bassa complessità, senza privilegi e senza interazione dell'utente. C'è un solo requisito: l'applicazione deve decodificare dati forniti dall'aggressore. Con uno stream Brotli costruito ad arte, un attaccante remoto e non autenticato può corrompere la memoria adiacente, leggere dati sensibili, mandare in crash il processo e, potenzialmente, eseguire codice. Le classi di debolezza indicate sono CWE-787 (scrittura fuori dai limiti) e CWE-252 (valore di ritorno non controllato).
Il cambio di nome nasce dall'analisi di Aikido Security e di altre società di sicurezza. Secondo Aikido, la falla espone molte librerie e applicazioni basate su HTTP all'esecuzione di codice da remoto prima dell'autenticazione, semplicemente tramite la decompressione Brotli. È a rischio qualsiasi web server, API gateway, reverse proxy o microservizio che decodifichi payload Brotli non fidati, sia su HTTP/1.1 sia su HTTP/2. Oltre a Node.js, risultano coinvolti Bun, Python ed Envoy. GitHub ha pubblicato un advisory per l'ecosistema Python, e Bun ha diffuso il proprio.
Il caso di Node.js mostra bene il problema delle dipendenze transitive. Il runtime include una propria copia del decoder Brotli, quindi un'applicazione è esposta anche se nessuno ha mai installato Brotli esplicitamente. E il bug si può attivare da entrambi i lati di uno scambio HTTP. Basta ricevere una risposta compressa da un altro server, per esempio con il fetch() integrato. Oppure basta un middleware che decomprime il corpo di una richiesta in arrivo. Express 5, infatti, documenta la decodifica Brotli nei suoi parser, e body-parser la supporta dalla 2.0.0. Imperva ha testato Express dalla 5.0.0 alla 5.3.0 e body-parser dalla 2.0.0 alla 2.3.0, comprese le ultime release disponibili al momento dei test.
» Leggi anche: Allarme rosso per Node.js: falla critica consente l'hack immediato di molti siti (Node2Shell)

Se usi Node.js, aggiorna subito. Le versioni corrette sono v22.23.4, v24.22.1 e v26.12.1, pubblicate il 21 ottobre 2026. Per verificare quella installata basta il comando node -v. Le versioni a fine supporto restano vulnerabili, come ricorda lo stesso advisory.
Per tutto il resto il quadro è più frammentato. Aikido avverte che non tutti i servizi coinvolti dispongono già di una correzione, e consiglia di tenere d'occhio gli aggiornamenti delle dipendenze verso Brotli 1.2.1. Nei progetti Python conviene quindi controllare la presenza dei pacchetti Brotli e brotlicffi, anche come dipendenze indirette, e seguire gli advisory di Bun ed Envoy. Imperva ha già aggiunto regole WAF specifiche per CVE-2026-111497. Una regola sul perimetro aiuta a guadagnare tempo, ma non sostituisce l'aggiornamento: finché un servizio decomprime Brotli con codice vulnerabile, basta una richiesta ben confezionata.
Fonti: brandefense.io, x.com, reddit.com
Nessuno ha ancora commentato.