Una nuova Log4Shell? React2Shell permette Remote Code Execution completa sui vostri server React

Dopo un disastroso disservizio di Cloudflare negli scorsi giorni, un altro grave evento sta facendo molto parlare di sé. Stiamo parlando della CVE-2025-55182 anche detta React2Shell, la quale ha registrato uno score CVSS di 10/10 (CRITICAL) e ha attivato non pochi campanelli d’allarme a tutti gli amministratori di sistema che gestiscono server basati su React.js. La vulnerabilità in questione è una RCE (Remote Code Execution) non autenticata, ovvero che permette di eseguire codice arbitrario sulla macchina vittima senza aver bisogno di una autenticazione.

Il ricercatore Lachlan Davidson ha fatto la disclosure della vulnerabilità il 29 novembre 2025 al team di Meta e ha riportato su questo sito il link alla Proof of Concept e altri dettagli utili a comprendere meglio gli avvenimenti.

Come si legge anche nel forum ufficiale di React, è già stato introdotto un fix per le versioni vulnerabili, ovvero le 19.0.1, 19.1.2, e la 19.2.1. Gli sviluppatori avvertono che chiunque abbia queste versioni di React installate ed usi react-server-dom-webpack, react-server-dom-parcel o react-server-dom-turbopack deve aggiornare immediatamente. Il team di React specifica anche che:

If your app’s React code does not use a server, your app is not affected by this vulnerability. If your app does not use a framework, bundler, or bundler plugin that supports React Server Components, your app is not affected by this vulnerability.

Se il codice React della tua app non utilizza un server, la tua app non è interessata da questa vulnerabilità. Se la tua app non utilizza un framework, un bundler o un plugin per bundler che supporta React Server Components, la tua app non è interessata da questa vulnerabilità.

Dato che stiamo parlando di una Remote Code Execution, questa vulnerabilità è possibile solamente nel caso in cui sotto il cofano sia presente un backend che si appoggia al framework di React.js.

Su GitHub sono apparsi molti PoC sotto forma di Gist. Prendendo ad esempio questa PoC, il funzionamento dell’attacco è il seguente:

Il server React non verifica che la key sia effettivamente corrispondente ad un oggetto, quindi è possibile referenziare un’altra parte del codice come ad esempio il costruttore di una funzione.

files = {
    "0": (None, '["$1:__proto__:constructor:constructor"]'),
    "1": (None, '{"x":1}'),
}

Questo codice deserializzato restituisce infatti:

[Function: Function]

Ovvero permette di eseguire una funzione. Inoltre, se il chunk con ID è 0, è possibile utilizzare then sul costruttore, trasformando il codice in:

files = {
    "0": (None, '{"then":"$1:__proto__:constructor:constructor"}'),
    "1": (None, '{"x":1}'),
}

Che quando verrà deserializzato sarà trasformato in:

function () { [native code] }

Ovvero permetterà di creare una funzione ed iniettare il codice malevolo che potrebbe fare le cose più disparate, come ad esempio aprire una calcolatrice.exe, stabilire una reverse shell o scaricare un payload dal server di un attaccante.

L’utente maple3142 su X mostra una demo di un attacco che sfrutta React2Shell per eseguire l’app calc.exe sul computer Windows della vittima con il server React vulnerabile installato.

In questo commit è stata presentata la patch per questo attacco, inibendo la possibilità di referenziare funzioni arbitrarie.

Ma quindi, in quanti sono stati colpiti da React2Shell? In una stima del 2024, stando al report di JavaScript, è possibile vedere che React è usato dall’82% dei developer che usano JavaScript. Il 4 dicembre, inoltre, Amazon Threat Intelligence ha rilasciato un blog post in cui si è evidenziato come si siano registrati moltissimi tentativi di sfruttare questa vulnerabilità da parte di hacker cinesi a poche ore dal rilascio di exploit pubblici.

Pare infine che il nuovo (fortunatamente temporaneo e breve) disservizio di Cloudflare verificatosi il 5 dicembre sia, come ha raccontato Bleeping Computer, in qualche modo legato alle mitigazioni per questa vulnerabilità.

L’unico modo per mitigare gli exploit su questa larghissima superficie di attacco, sulla scia del famoso Log4Shell è sempre lo stesso: aggiornare tempestivamente tutti i server su cui sono installate le versioni vulnerabili di React.

Buone patch!

Red Team & Offensive Security Engineer
Parlo di sicurezza informatica offensive, Linux e Open Source

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *