Vai al contenuto
AI.info

The Pulse

Codex Security scopre una falla in Brotli di Node.js; Imperva conferma l’esecuzione remota di codice

I ricercatori di OpenAI Codex Security Khai Tran e Sylvie Mayer hanno segnalato una falla di gravità elevata nel decodificatore Brotli incluso in Node.js. Imperva ha poi dimostrato l’esecuzione di codice su una build ufficiale vulnerabile d

Codex Security scopre una falla in Brotli di Node.js; Imperva conferma l’esecuzione remota di codice

AI.info Team · Scritto con l’IA · verificato ·

Il 22 ottobre Imperva ha dimostrato l’esecuzione remota di codice tramite una falla nel decodificatore Brotli di Node.js, due giorni dopo che il progetto Node.js aveva reso nota e corretto la vulnerabilità. I ricercatori di OpenAI Codex Security a cui è attribuita la segnalazione della falla sono Khai Tran e Sylvie Mayer. La prova di concetto di Imperva ha funzionato su una build ufficiale vulnerabile di Node.js, non su un binario di test appositamente indebolito, ma solo nella configurazione Linux arm64 sottoposta a test.

Come un input Brotli malformato raggiunge Node.js

La vulnerabilità, CVE-2026-111497, consiste in una scrittura fuori dai limiti della memoria nel decodificatore Brotli incluso in Node.js. Secondo il progetto, un cambio di blocco non valido nei dati compressi malformati veniva trattato come una richiesta temporanea di ulteriori dati in ingresso anziché come un errore di formato definitivo. Il decodificatore in streaming continuava quindi ad aggiungere dati a un buffer interno di otto byte, consentendo la corruzione della memoria.

Un aggressore in grado di fornire dati Brotli che un’applicazione decomprime con node:zlib può corrompere la memoria del processo, con possibili conseguenze quali un arresto anomalo, la divulgazione del contenuto della memoria del processo o l’esecuzione remota di codice.

The Node.js Project

Il rischio dipende dal fatto che un’applicazione invii o meno dati Brotli non attendibili a quel decodificatore. Imperva ha dimostrato due vie: un servizio Node.js che riceve una risposta compressa tramite la funzione integrata fetch() e parser delle richieste configurati per decodificare i corpi compressi delle richieste in ingresso. La sola ricezione di una richiesta HTTP non fa sì che un server Node.js privo di tali configurazioni ne decomprima il corpo.

La prova di Imperva ha funzionato su Node.js 24.22.0

Imperva ha eseguito la sua prova di concetto sull’immagine ufficiale di Node.js 24.22.0 per Linux arm64, usando container appena creati, senza debugger né build strumentata. L’applicazione di test ha creato un file marcatore solo dopo aver ricevuto l’input Brotli appositamente preparato, fornendo la prova che il codice contenuto nei dati era stato eseguito all’interno del processo. Gli stessi input sono stati respinti dalla versione corretta 24.22.1.

La dimostrazione non è riuscita a ogni tentativo: Imperva ha dichiarato che, nella sua configurazione, l’esecuzione ha richiesto più tentativi. I test hanno riguardato la build 24.22.0 e specifiche configurazioni applicative; il team non ha testato ogni build, architettura o applicazione Node.js. I risultati dimostrano l’esecuzione di codice nelle condizioni testate, non in ogni distribuzione.

Sul lato delle richieste, Imperva ha testato configurazioni di Express 5 e body-parser, comprese le versioni di Express dalla 5.0.0 alla 5.3.0 e quelle di body-parser dalla 2.0.0 alla 2.3.0. Il codice vulnerabile si trova in Node.js stesso; quei parser offrono ai dati compressi in ingresso una via per raggiungerlo. Sul lato delle risposte, il test ha usato la funzione integrata fetch() di Node per ricevere una risposta compressa con Brotli.

Correzioni disponibili per tre rami di Node.js

Il progetto Node.js ha pubblicato aggiornamenti di sicurezza il 21 ottobre per i rami 22.x, 24.x e 26.x. Le versioni corrette sono la 22.23.4, la 24.22.1 e la 26.12.1. Il progetto avverte inoltre che, quando viene pubblicato un aggiornamento di sicurezza, anche le versioni di Node.js giunte a fine vita sono interessate dalla vulnerabilità: le applicazioni che usano rami non più supportati devono quindi passare a una versione supportata.

Imperva raccomanda di verificare la versione del runtime negli host e nelle immagini container distribuiti, compresi gli artefatti che includono un proprio binario Node. I team dovrebbero individuare dove le applicazioni decomprimono dati Brotli non attendibili e aggiornare i runtime interessati; limitare temporaneamente quel traffico può essere utile durante la distribuzione degli aggiornamenti, ma è l’aggiornamento del runtime a correggere la falla del decodificatore. Nei test di Imperva, la build corretta 24.22.1 ha respinto gli input che avevano consentito l’esecuzione di codice sulla 24.22.0.

Fonti

Esplora

Altri articoli