Nei componenti server del framework web React (RSC, React Server Components) è stata rimossa una vulnerabilità (CVE-2025-55182) che permetteva, attraverso l'invio di una richiesta al gestore server, di eseguire codice arbitrario sul server. La vulnerabilità è stata classificata come critica (10 su 10). Essa si manifesta nei componenti sperimentali react-server-dom-webpack, react-server-dom-parcel e react-server-dom-turbopack, utilizzati per eseguire funzioni e generare elementi dell'interfaccia utente sul server, e non sul lato client.
Il problema è causato dalla deserializzazione non sicura dei dati ricevuti nelle richieste HTTP ai gestori server. I gestori «vm#runInThisContext», «vm#runInNewContext», «child_process#execFileSync» e «child_process#execSync» possono essere utilizzati per eseguire comandi nel sistema o per eseguire codice JavaScript nel contesto del processo attuale (bypassando l'isolamento sandbox). È inoltre possibile utilizzare i gestori «fs#readFileSync» e «fs#writeFileSync» per leggere e scrivere file arbitrari su server, secondo i diritti di accesso attuali. Non è richiesta l'autenticazione per l'attacco. È disponibile un prototipo di exploit. # Esecuzione del comando whoami curl -X POST http://localhost:3002/formaction \ -F ‘$ACTION_REF_0=’ \ -F ‘$ACTION_0:0={«id»:»child_process#execSync»,»bound»:[«whoami»]}’ # Esecuzione di codice JavaScript 1+1 curl -X POST http://localhost:3002/formaction \ -F ‘$ACTION_REF_0=’ \ -F ‘$ACTION_0:0={«id»:»vm#runInThisContext»,»bound»:[«1+1»]}’ # Lettura del file /etc/passwd curl -X POST http://localhost:3002/formaction \ -F ‘$ACTION_REF_0=’ \ -F ‘$ACTION_0:0={«id»:»fs#readFileSync»,»bound»:[«/etc/passwd»,»utf8″]}’
La suscettibilità dei sistemi alle vulnerabilità dipende dall'uso dei componenti server vulnerabili react-server-dom-webpack, react-server-dom-parcel e react-server-dom-turbopack. Le applicazioni che non utilizzano react-server non sono affette dalla vulnerabilità. L'entità della vulnerabilità nelle installazioni di lavoro che utilizzano React non è ancora chiara. Da un lato, React è uno dei framework web più popolari (utilizzato circa nel 6% dei siti web), e i componenti vulnerabili vengono sviluppati principalmente nei repository e sono inclusi nelle versioni. I componenti vulnerabili sono anche supportati nei framework basati su React, come Next.js e react-router. Secondo i dati di Wiz Research, le istanze vulnerabili sono state identificate nel 39% degli ambienti cloud analizzati.
D'altra parte, la generazione di contenuti sul server tramite React Server I componenti non sono una funzione spesso utilizzata (la maggior parte dei siti React renderizza l'interfaccia solo sul lato client), e i componenti vulnerabili sono segnati come sperimentali e non garantiscono un funzionamento corretto. Questi componenti hanno un numero relativamente ridotto di download diretti dal repository NPM: react-server-dom-webpack — 670.000 a settimana, react-server-dom-parcel — 7.000 e react-server-dom-turbopack — 32.000; a titolo di confronto, il pacchetto NPM React ha 45 milioni di download a settimana.
La vulnerabilità è presente nelle versioni di React 9.0.0, 19.1.0, 19.1.1 e 19.2.0, ed è stata risolta negli aggiornamenti di React 19.0.1, 19.1.2 e 19.2.1. I componenti vulnerabili sono utilizzati anche nei pacchetti Next.js (16 milioni di download a settimana), react-router (20 milioni di download a settimana), waku, @parcel/rsc, @vitejs/plugin-rsc e rwsdk.
Nel framework Next.js, la vulnerabilità (CVE-2025-66478) colpisce le applicazioni che utilizzano App Router e le versioni Next.js 15.x e 16.x. Si afferma che la vulnerabilità si manifesta nella configurazione di Next.js per impostazione predefinita (l'applicazione standard creata con lo strumento create-next-app è vulnerabile). Gli utenti sono invitati ad aggiornare a Next.js 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7 o 16.0.7 il prima possibile.
Fonte: opennet.ru
