CVE-2026-111497: Grave Vulnerabilità Node2Shell nel Decoder Brotli di Node.js
Detection stack
- AIDR
- Alert
- ETL
- Query
Riepilogo
Node2Shell è una vulnerabilità critica (CVE-2026-111497) che interessa il decodificatore Brotli integrato in Node.js e causata da una scrittura fuori limite. Gli aggressori possono sfruttare il difetto fornendo flussi compressi malformati a servizi che elaborano dati Brotli, potenzialmente causando un rifiuto del servizio, divulgazione della memoria o esecuzione di codice remoto. La vulnerabilità pone un rischio particolare ai servizi che utilizzano Express 5 o middleware che esegue automaticamente la decompressione Brotli.
Indagine
Il Team di Ricerca Sulle Minacce di Sysdig ha analizzato la vulnerabilità e ha riferito che un PoC pubblico è emerso poche ore dopo il rilascio della patch. La ricerca di Imperva e Vercel ha dimostrato che l’esecuzione di codice è possibile su specifiche architetture, inclusa Linux arm64. L’indagine ha mostrato che l’esploitabilità dipende dal fatto che un’applicazione o le sue librerie, come body-parser, elaborino flussi Brotli controllati da aggressori.
Mitigazione
La mitigazione principale consiste nell’aggiornare Node.js alle versioni 22.23.4, 24.22.1 o 26.12.1, e aggiornare Bun alla versione 1.4.4 o successiva. Le organizzazioni dovrebbero anche disabilitare la decompressione delle richieste dove è pratico, incluso impostare inflate: false in body-parser. Implementare regole WAF per rifiutare richieste Content-Encoding: br non attendibili ed eseguire i servizi sotto account con privilegi limitati offre ulteriori livelli di difesa.
Risposta
Se viene rilevata una potenziale catena di sfruttamento, come un crash del processo Node.js seguito da un’esecuzione di programma inaspettata, i team di sicurezza dovrebbero isolare immediatamente il carico di lavoro interessato. Monitorare l’attività post-sfruttamento, includendo shell interattive, download non autorizzati di malware, cryptomining, o furto di segreti e token cloud. La patch di tutti i servizi vulnerabili raggiungibili dovrebbe rimanere la massima priorità.
Flusso di Attacco
Stiamo ancora aggiornando questa parte.
Rilevamenti
Processi Figli NodeJS Sospetti [Windows] (via cmdline)
Shell Sospetta tramite Web Server [Linux] (via process_creation)
Processi Figli NodeJS Sospetti [Linux] (via cmdline)
Rilevamento del Crash del Processo Node.js Seguito da Esecuzione di Programma in Situ – Sfruttamento Node2Shell [Creazione Processo Linux]
Esecuzione di Simulazione
-
Narrativa di Attacco & Comandi: L’avversario prende di mira un’applicazione web che esegue Node.js. Invia un payload compresso Brotli malevolo che innesca un errore di corruzione della memoria, causando il
processo nodea bloccarsi. Immediatamente dopo il crash, l’attaccante utilizza il flusso di esecuzione dirottato per generare una/bin/bashshell per stabilire la persistenza e iniziare la ricognizione locale. Questa sequenza diprocesso nodeevento seguito da/bin/bashesecuzione è progettata per soddisfare laselection_crashandselection_suspicious_execlogica della regola di rilevamento. -
Script di Test di Regressione:
#!/bin/bash # Simulazione di schema di sfruttamento stile Node2Shell echo "[+] Avvio della simulazione Node2Shell..." # 1. Simulare un processo Node.js che 'crasha' o termina improvvisamente # In uno scenario reale, si tratta di un crash. Qui simuli la telemetria # di un processo nodo invocato/gestito. node -e "process.exit(1)" echo "[+] Il processo Node.js è 'crashato' (Codice di Uscita 1)." # 2. Simulare l'esecuzione immediata di una shell sospetta # Questo imita il payload che innesca la shell dopo il crash. /bin/bash -c "echo 'Sfruttamento Riuscito: Shell Generata'" echo "[+] Simulazione completata. Controlla SIEM per il rilevamento." -
Comandi di Pulizia:
# Nessun file persistente è stato creato da questa simulazione. # Assicurati semplicemente che non ci siano processi bash canaglia in esecuzione. pkill -f "Exploitation Successful"