CVE-2026-111497: falla nel decoder Brotli colpisce Node.js, Bun, Python ed Envoy
Una falla di memory corruption nel decoder Brotli di Google (CVE-2026-111497) interessa molti software. Imperva ha dimostrato l'esecuzione di codice su una build di Node.js. Non risultano attacchi in corso.

- Falla CVE-2026-111497 nel decoder Brotli di Google: scrittura oltre il buffer, possibile RCE
- Colpiti Node.js, Bun, pacchetti Python Brotli/brotlicffi, Envoy con Brotli attivo
- CVSS 4.0 di 9.2 per Google; nessun attacco reale segnalato
- Aggiornare, riavviare e ricostruire i container; senza patch, bloccare Brotli non fidato
Una vulnerabilità di memory corruption nel decoder Brotli di Google, tracciata come CVE-2026-111497, riguarda numerosi programmi che decomprimono dati in formato Brotli. Tra questi Node.js, Bun, i pacchetti Python Brotli e brotlicffi e i proxy Envoy configurati per la decompressione Brotli. Il difetto è stato divulgato il 21 ottobre, quando Node.js e Google hanno rilasciato le prime correzioni.
Il problema
Dati compressi costruiti ad hoc possono provocare una scrittura oltre la fine di un buffer. Le conseguenze possibili sono un crash, una fuga di memoria o l’esecuzione di codice controllato dall’attaccante. Il bug si trova nel codice C che decodifica il flusso Brotli. Ogni programma include una propria copia del decoder, quindi ognuno deve aggiornarla in modo indipendente.
Il team Red Team di Imperva (Node2Shell) ha eseguito codice su una build non modificata di Node.js 24.22.0 per Linux su ARM64. L’ha fatto sia tramite una risposta scaricata sia tramite il corpo di una richiesta Express. L’exploit ha richiesto più tentativi, non è stato pubblicato e non è stato provato su altre build. Per gli altri software la stessa esecuzione non è stata dimostrata.
Chi è esposto
Il rischio c’è solo se il programma decodifica dati Brotli controllati da terzi.
- Node.js e Bun: quando
fetch()legge una risposta conContent-Encoding: br, o quando codice come Express 5 e body-parser 2 decomprime un upload Brotli. Un semplice server HTTP Node.js non decodifica da solo i corpi delle richieste. - Envoy e Istio: solo con la decompressione Brotli attiva, per esempio tramite un filtro Envoy.
- Python: basta che
Brotliobrotlicffisiano installati. Client come requests, urllib3, httpx e aiohttp decodificano Brotli in automatico, anche se l’applicazione non importa mai il pacchetto.
Un web application firewall aiuta solo in parte. Vercel ha aggiunto regole il giorno della divulgazione, ma ha precisato che non coprono le risposte che le funzioni scaricano da altri server. In quel caso serve aggiornare runtime o libreria.
OpenAI, il cui team Codex Security ha segnalato il bug, lo descrive come esecuzione di codice remota non autenticata, in entrambe le direzioni. Un server non aggiornato può essere compromesso da un client malevolo. Un client non aggiornato, come curl --compressed, può essere compromesso da un server malevolo.
Gravità e stato degli attacchi
Non risultano sfruttamenti reali. La valutazione CISA del 23 ottobre indica sfruttamento «none» e automazione «no». Red Hat segnala l’assenza di un proof-of-concept pubblico affidabile per l’esecuzione di codice.
I punteggi variano. Google, che ha assegnato il CVE, indica 9.2 (critico) su CVSS 4.0. Node.js lo definisce high. Red Hat assegna 8.1 (important).
La correzione era entrata nel sorgente di Brotli il 27 febbraio, ma nessuna release la includeva fino al 21 ottobre. Secondo OpenAI, allora non si sapeva che il difetto fosse una vulnerabilità di sicurezza. Node.js attribuisce la segnalazione a Khai Tran e Sylvie Mayer di OpenAI Codex Security, e la correzione ai maintainer Matteo Collina e Antoine du Hamel.
Cosa fare
- Aggiornare a una versione corretta, poi riavviare il servizio e ricostruire le immagini container: un processo in esecuzione mantiene il vecchio decoder.
- Se non si può aggiornare, evitare di decodificare Brotli non fidato. Rifiutare le richieste con
Content-Encoding: brprima di proxy e parser, e disattivare la decodifica Brotli automatica nei client HTTP. Lo suggeriscono OpenAI e Aikido. - In Python, disinstallare
Brotliebrotlicffi, così i client ripiegano su gzip e deflate. - Togliere
brdaAccept-Encodingnon basta, perché il server può inviare Brotli comunque. Per Node.js non esistono workaround: l’unica soluzione è aggiornare.
I pacchetti di sistema arrivano in tempi diversi. Debian 13 (trixie) ha corretto brotli il 23 ottobre con la versione 1.1.0-2+deb13u1. Amazon Linux 2023 al 22 ottobre indicava ancora in attesa i pacchetti brotli e Node.js 24.
Gli scanner di dipendenze potrebbero non segnalare i pacchetti Python. Il record CVE cita il repository Google e non i pacchetti PyPI, e l’advisory GitHub (letto da Dependabot) non elenca pacchetti interessati. Il 23 ottobre sono state aggiunte le voci PYSEC-2026-4322 e PYSEC-2026-4323. Conviene verificare a mano le versioni installate.
Fonte: The Hacker News · Foto: The Hacker News


