
Analisi tecnica dettagliata di CVE-2025-55182 (React2Shell), che traccia i dettagli interni del protocollo Flight di React per spiegare la catena di sfruttamento, la creazione del payload e l'analisi della correzione.
Autore: Kavienan J
Vulnerabilità scoperta da: lachlan2k, che l'ha divulgata responsabilmente al team di React.
Per aggiornamenti su questa vulnerabilità, visita: react2shell.com
ReactFlightReplyServer.jsCVE-2025-55182 ha una gravità valutata 10.0/10.0. Se hai guardato i PoC pubblici, potresti aver notato che, pur mostrando lo sfruttamento in azione, le spiegazioni sul perché il payload abbia quella forma possono risultare insufficienti—il che ha perfettamente senso, data la complessità del protocollo React Flight. Flight, il livello di serializzazione alla base di React Server Components e Server Actions, è un'intricata macchina a stati di oltre 1.100 righe, e il suo comportamento non è intuitivo a meno che non si tracci il codice personalmente.
I PoC della community dimostrano chiaramente la vulnerabilità:
…ma quando provi a rispondere alla domanda "Perché funziona?", ti ritrovi rapidamente a esplorare a fondo gli internals di React che non sono mai stati pensati per essere letti riga per riga.
Nota: Molti PoC attribuiscono erroneamente la correzione a modifiche in
requireModule. Come vedremo ne La correzione, il payload dello sfruttamento non raggiunge mai quella funzione—il codice realmente vulnerabile risiede interamente inReactFlightReplyServer.js.
Questo write-up è il mio tentativo di fare reverse engineering della catena di sfruttamento tracciando passo dopo passo la logica di decodifica e inizializzazione dei chunk di React. Ogni comportamento discusso qui deriva direttamente da come ReactFlightReplyServer.js funzionava prima della correzione (riferimento: https://github.com/facebook/react/blob/v19.2.0/packages/react-server/src/ReactFlightReplyServer.js), distillato e semplificato in modo che uno sviluppatore React/JS possa seguirne il filo con abbastanza pazienza.
Sezione successiva: Contesto