Già sfruttata la falla Brotli che colpisce Node.js, Python e .NET
La CISA ha inserito nel catalogo KEV la CVE-2026-111497, scrittura fuori dai limiti nel decoder Brotli di Node.js. Il rilascio del 21 ottobre corregge altre nove falle, tra cui tre high su TLS e DNS. Si aggiorna a 22.23.4, 24.22.1 o 26.12.1
di Andrea Bai pubblicata il 28 Ottobre 2026, alle 15:01 nel canale SicurezzaMartedì la CISA ha aggiunto al catalogo Known Exploited Vulnerabilities (KEV) la CVE-2026-111497, una scrittura fuori dai limiti nel decoder Brotli nota anche come Node2Shell, HTTP2Shell e Broccoli2Shell. Con l'inserimento l'agenzia statunitense conferma che la falla è già sfruttata negli attacchi e ordina alle agenzie federali di correggere i sistemi entro il 10 novembre, come previsto dalla direttiva BOD 26-04. Un attaccante remoto e non autenticato può usare un flusso compresso Brotli appositamente costruito per mandare in crash il processo, leggere porzioni di memoria e, in alcuni casi, eseguire codice.
Il difetto è stato individuato per la prima volta in Node.js, che include il decoder Brotli e ha pubblicato le correzioni mercoledì 21 ottobre con le versioni 22.23.4, 24.22.1 e 26.12.1. Il progetto assegna alla falla gravità high e la attribuisce alle linee 26.x, 24.x e 22.x. A segnalarla è stato OpenAI Codex Security, con Khai Tran e Sylvie Mayer; la correzione è di mcollina e aduh95.
Le correzioni a monte erano state committate nel codice sorgente di Brotli già a febbraio, mentre le versioni stabili di Node.js e di Google sono arrivate il 21 ottobre, seguite il giorno dopo dalla divulgazione pubblica e il 23 dai pacchetti PyPI con le patch. Un rapporto di Imperva conferma che la falla può portare all'esecuzione di codice remoto, e sono già pubblici exploit dimostrativi (PoC). Ancora il 26 ottobre non risultavano segnalazioni di sfruttamento malevolo, e la conferma della CISA è arrivata il giorno dopo.
Come funziona la falla
Un cambio di blocco non valido viene segnalato come necessità temporanea di altri dati in ingresso, invece che come errore permanente di formato. Il decoder in streaming continua così ad accodare byte in un buffer interno da otto byte, e la scrittura supera il limite corrompendo la memoria adiacente. Per sfruttare il difetto basta che un'applicazione decomprima dati Brotli forniti dall'attaccante, per esempio con node:zlib: una risposta HTTP compressa servita a un'applicazione che scarica un URL, oppure una richiesta compressa inviata direttamente a un server.

Il nome HTTP2Shell richiama l'impatto su client e server HTTP, ma la falla non riguarda solo HTTP/2 e coinvolge qualunque applicazione che decomprima Brotli proveniente da fonti non fidate. Oltre a Node.js sono esposti i client Python come urllib3[brotli], requests, httpx e aiohttp[speedups] quando usano un decoder Brotli vulnerabile. Le versioni di Brotli interessate vanno dalla 1.0.3 alla 1.0.9, più la 1.1.0 e la 1.2.0. Domenica Microsoft ha rilasciato un aggiornamento d'emergenza per .NET, avvertendo che lo sfruttamento consente l'escalation dei privilegi sui sistemi con una versione vulnerabile.
Dopo l'aggiornamento vanno riavviati i processi interessati, e le immagini container coinvolte vanno ricostruite e ridistribuite. Il portale dedicato alla falla avverte che aggiornare la libreria Brotli di sistema non basta per Node.js e per le altre applicazioni che includono una copia propria del decoder. Chi non può aggiornare subito può rimuovere il supporto Brotli dalle applicazioni Python o disattivare la decodifica Brotli, e bloccare le richieste in ingresso compresse con Brotli a livello di proxy o firewall; quest'ultimo blocco lascia comunque scoperta la via della risposta HTTP malevola.
Le altre falle high del rilascio
Il rilascio di Node.js corregge in tutto dieci vulnerabilità, e oltre a Brotli altre tre sono classificate high. La CVE-2026-105482 riguarda dns.resolve*() e dns.reverse(), che troncano i nomi host contenenti un byte NUL: attacker.example\0.trusted.example viene risolto come attacker.example, senza alcun errore. Un'applicazione che valida il nome contro un elenco di domini consentiti e poi lo risolve può quindi agire sui record di un dominio diverso da quello controllato. Il difetto deriva da una correzione incompleta della CVE-2026-48930, che copriva solo dns.lookup() e le opzioni host di net e tls, e interessa le linee 26.x, 24.x e 22.x.
Le altre due high riguardano la verifica dell'host in tls.checkServerIdentity(). La CVE-2026-105483 (26.x e 24.x) è una regressione introdotta dopo la correzione della CVE-2026-48618: la funzione non riconosce come IP un indirizzo IPv4 scritto con cifre a larghezza piena (127.0.0.1) e lo confronta con i nomi DNS del certificato e con il Common Name, quindi un certificato con DNS:127.0.0.1 o DNS:*.0.0.1 viene accettato per un endpoint IP per cui non era stato emesso. La CVE-2026-106069 (26.x, 24.x e 22.x) nasce da un indirizzo con zero iniziale come 0127.0.0.1: la normalizzazione secondo le regole WHATWG URL lo legge come ottale (87.0.0.1), mentre il resolver del sistema operativo, su piattaforme come macOS, lo legge come decimale (127.0.0.1). Un server all'indirizzo raggiunto può così essere autenticato con un certificato emesso per un altro IP.
Correzioni medium e low, e dipendenze aggiornate
Tra le medium, la CVE-2026-105481 riguarda il riuso dei socket keep-alive dell'HTTP Agent. Il controllo che distrugge i socket inattivi quando arrivano dati inattesi scatta solo quando il ciclo degli eventi interroga l'I/O: se una risposta non richiesta è già arrivata ma non è stata ancora letta, per esempio perché il ciclo era occupato in un lavoro sincrono, il controllo viene rimosso senza vederla e i dati sono interpretati come risposta alla nuova richiesta. È una correzione incompleta della CVE-2026-48931. La CVE-2026-106072 colpisce ancora la verifica TLS con le grafie IPv4 non canoniche (0177.0.0.1, 0x7f.0.0.1, 2130706433, 127.1): un certificato con il solo SAN DNS:127.0.0.1 viene accettato per un endpoint IP, a patto che sia emesso da una CA di cui il client si fida e che il resolver della piattaforma, come glibc, accetti quelle grafie.
La CVE-2026-106074 fa finire le cache di entropia di crypto.randomUUID(), crypto.randomUUIDv7() e crypto.randomInt() negli snapshot di avvio creati con --build-snapshot e nelle single executable application (SEA) costruite con useSnapshot. Se una di queste funzioni, o un'API che vi si appoggia come URL.createObjectURL(), viene chiamata durante la creazione dello snapshot, ogni processo avviato da esso restituisce gli stessi valori finché la cache non viene riempita di nuovo: fino a 127 UUID e circa 1.000 valori di randomInt(). Gli identificatori attesi come unici possono collidere tra processi, e i valori emessi da un processo diventano prevedibili osservandone un altro. Una voce dell'avviso, limitata alla linea 26.x, riguarda inoltre l'API zlib.ZipFile, che restituisce byte non appartenenti alla voce richiesta quando la convalida degli header locale e centrale fallisce: uno scanner basato su Node.js può così approvare un contenuto diverso da quello estratto da un'altra implementazione ZIP.
Le due falle low riguardano il Permission Model. La CVE-2026-106071 (solo 26.x) fa sì che una regola con wildcard in --allow-fs-read o --allow-fs-write conceda l'accesso a percorsi che non corrispondono: --allow-fs-read=/etc/passwd.* consente anche la lettura di /etc/passwd, quando la wildcard sta direttamente sotto la radice dell'albero dei permessi. La CVE-2026-106073 lascia fs.realpathSync() senza i controlli di lettura, e sotto --permission permette di verificare l'esistenza di file, risolvere symlink ed enumerare percorsi fuori dalle directory consentite; corregge a sua volta la CVE-2026-21715, che aveva coperto solo fs.realpathSync.native(). Il rilascio aggiorna infine c-ares e Undici su tutte e tre le linee, OpenSSL su 24.x e 22.x, SQLite su 22.x e ca-cert, per la compromissione di una CA intermedia di eMudhra.










DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura)
GitHub fa i conti con il boom dell'IA: aggiunti 4 milioni di core CPU e 160 PB di storage
Samsung valuta due strade per Galaxy Z Fold9, schermo più grande o versione FE
Reddit sdoppia la home: arrivano i feed For You e Following
NVIDIA apre Nemotron 3.5 Transcribe: 40 lingue, un'ora di audio, 4,3B parametri attivi
Qwen3.8 27B dice di voler veder bruciare gli umani: un utente di X amplifica il neurone 3838
PS Plus Essential: svelati i tre giochi 'gratis' di novembre 2026
Instagram fa sul serio e sfida YouTube: arrivano i video orizzontali fino a 90 minuti
Quanti token hai bruciato oggi? Per Amazon conta un'altra domanda
Gemini Notebook ascolta e trascrive: debutta la nuova funzione per gli appunti audio
iPhone 18 Pro, vendite in crescita a livello globale: il merito è del mercato cinese
TIM chiuderà il 2026 con una nuova rimodulazione: +2,99 euro al mese per alcuni clienti mobile
Il MacBook Neo 2 si avvicina, arriverà nella prima metà del 2027, ma il prezzo resta un'incognita
Google lancia Gemini 4 Carbon, il modello IA più forte mai creato per la cybersicurezza
Malesia, sequestrati chip AI per 12 milioni di dollari: 30 server fermati in aeroporto









0 Commenti
Gli autori dei commenti, e non la redazione, sono responsabili dei contenuti da loro inseriti - infoDevi effettuare il login per poter commentare
Se non sei ancora registrato, puoi farlo attraverso questo form.
Se sei già registrato e loggato nel sito, puoi inserire il tuo commento.
Si tenga presente quanto letto nel regolamento, nel rispetto del "quieto vivere".