CVE-2025-11953: RCE critico in React Native CLI espone sviluppatori a comandi remoti

di Redazione
0 commenti

Ricercatori di JFrog Security Research hanno scoperto la vulnerabilità critica CVE-2025-11953 nel pacchetto @react-native-community/cli, che consente l’esecuzione di codice arbitrario remoto (RCE) su server di sviluppo Metro, componente centrale del framework React Native. La falla, con un punteggio CVSS di 9.8, colpisce le versioni dalla 4.8.0 alla 20.0.0-alpha.2, coinvolgendo circa 2 milioni di download settimanali. Un attaccante remoto non autenticato può sfruttare l’endpoint /open-url per eseguire comandi di sistema sul computer della vittima, compromettendo l’ambiente di sviluppo. Il rischio è particolarmente elevato su Windows, dove il controllo sui parametri consente esecuzioni dirette tramite cmd /c start, mentre su macOS e Linux l’impatto è parzialmente mitigato, ma resta potenzialmente sfruttabile. La vulnerabilità mette in luce le debolezze strutturali dei tool open-source e l’urgenza di audit costanti nelle pipeline DevOps.

Dettagli tecnici della vulnerabilità

image 106
CVE-2025-11953: RCE critico in React Native CLI espone sviluppatori a comandi remoti 10

L’analisi del pacchetto @react-native-community/cli-server-api ha rivelato che l’endpoint /open-url elabora richieste POST contenenti un campo url controllato dall’utente, passato direttamente alla funzione open() del pacchetto omonimo nella versione 6.4.0. Tale funzione esegue il contenuto come comando del sistema operativo senza alcuna validazione.
Su Windows, l’istruzione open() utilizza cmd /c start, permettendo a un attaccante di lanciare applicazioni o eseguire script malevoli, come nel caso dimostrato con:

cmd /c start "" /b cmd /c echo abc > c:\temp\pwned.txt

Su macOS, viene invocato open , che riduce il rischio ma non lo elimina, mentre su Linux il comando xdg-open introduce controlli più restrittivi. JFrog ha inoltre identificato un comportamento anomalo nel binding del server Metro, che si collega a tutte le interfacce (0.0.0.0) pur dichiarando nei log il solo localhost, esponendo così il servizio a connessioni esterne non autorizzate. Gli exploit proof-of-concept realizzati dai ricercatori dimostrano che un semplice payload JSON inviato all’endpoint vulnerabile può eseguire codice remoto senza autenticazione, aprendo la strada a furti di dati, malware injection e movimenti laterali in reti aziendali.

Versioni colpite e impatto

Le versioni vulnerabili comprendono @react-native-community/cli-server-api dalla 4.8.0 fino alla 20.0.0-alpha.2, nonché tutti i pacchetti @react-native-community/cli che ne includono la dipendenza. I progetti che non utilizzano framework come Expo, che isola il server Metro, risultano maggiormente esposti.
L’impatto su larga scala è stato confermato dai dati NPM, con oltre 2 milioni di download a settimana.

image 108
CVE-2025-11953: RCE critico in React Native CLI espone sviluppatori a comandi remoti 11

Su Windows, un attaccante può ottenere controllo totale del sistema, installare malware o rubare credenziali; su macOS e Linux, l’esposizione resta elevata, poiché l’errato binding a tutte le interfacce espone la porta del server anche a indirizzi pubblici. Gli ambienti DevOps e i repository remoti amplificano il rischio di compromissione della supply chain, mentre in contesti enterprise la falla può condurre a interruzioni operative e a violazioni di sicurezza su larga scala.

Metodi di exploitation

Gli attaccanti possono inviare richieste POST malevole all’endpoint /open-url, inserendo nel corpo JSON un campo url che contiene un comando arbitrario. Poiché il server non effettua sanitizzazione dei parametri, il contenuto viene passato direttamente alla shell di sistema. Gli exploit più pericolosi sono stati osservati su Windows, dove l’uso di cmd /c start consente di eseguire file, scaricare payload o creare persistenze. Esempi pratici mostrano l’esecuzione remota di calc.exe come prova di concetto. Gli aggressori possono individuare server vulnerabili tramite scansioni di rete sulle porte Metro predefinite (solitamente 8081) e avviare exploit automatizzati.

image 107
CVE-2025-11953: RCE critico in React Native CLI espone sviluppatori a comandi remoti 12


Su macOS e Linux, sebbene l’esecuzione diretta sia più complessa, è possibile sfruttare URI schemes come file:// o smb:// per ottenere risultati analoghi. La vulnerabilità è stata confermata in ambienti di test controllati, con esecuzione completa di comandi senza privilegi elevati. Il binding errato del server amplifica la superficie d’attacco, poiché i log inducono gli sviluppatori a credere che il servizio sia limitato al localhost, quando in realtà è esposto su IPv4 e IPv6 pubblici.

Mitigazioni e raccomandazioni

JFrog e il team di Meta hanno collaborato per correggere la vulnerabilità, distribuendo la patch nella versione 20.0.0 del pacchetto. Gli sviluppatori devono aggiornare immediatamente con il comando:

npm update @react-native-community/cli-server-api

oppure verificare la versione installata con:

npm list @react-native-community/cli-server-api

In attesa dell’update, è possibile mitigare la falla avviando il server Metro con il flag:

npx react-native start --host 127.0.0.1

che forza il binding locale, impedendo connessioni esterne.
JFrog raccomanda inoltre l’utilizzo di tool di analisi statica SAST, come JFrog Advanced Security, per rilevare pattern di vulnerabilità in ambienti IDE. Le organizzazioni enterprise dovrebbero adottare un approccio zero trust anche nei contesti di sviluppo, limitare le porte aperte dai server Metro, e monitorare i log per richieste POST sospette. Gli analisti invitano a condurre audit regolari delle dipendenze NPM, poiché l’ecosistema React continua a essere un target privilegiato di attacchi supply chain.

Ruolo di JFrog nella scoperta

image 109
CVE-2025-11953: RCE critico in React Native CLI espone sviluppatori a comandi remoti 13

Il team di JFrog Security Research ha individuato CVE-2025-11953 durante un’analisi di routine sui pacchetti NPM. I ricercatori hanno identificato un sink non sicuro nella funzione open(), realizzando un proof-of-concept completo per la dimostrazione dell’exploit. La collaborazione con Meta ha consentito una correzione tempestiva e la pubblicazione coordinata del bollettino. JFrog ha diffuso un report tecnico dettagliato, con esempi di payload e indicatori di compromissione, contribuendo alla consapevolezza globale sulla sicurezza dei tool open-source. Il caso rafforza il ruolo di JFrog come attore centrale nella ricerca proattiva di vulnerabilità nei framework di sviluppo più utilizzati.

Contesto storico e valutazione CVSS

La vulnerabilità CVE-2025-11953 rientra nel filone degli exploit legati ai server di sviluppo non protetti, già osservati in tool come NPM open e Next.js CLI. Il punteggio CVSS 9.8 riflette la criticità massima per accessibilità remota e impatto totale sull’integrità del sistema. La storia recente dei framework React evidenzia carenze nelle validazioni di input e nella gestione dei middleware. JFrog sottolinea che la maggior parte dei casi di RCE nei tool open-source deriva da funzioni che eseguono comandi OS senza sanificazione, un pattern ormai ricorrente nelle supply chain DevOps. Il caso React Native rafforza la necessità di secure coding, audit automatizzati e best practice nella gestione dei server di sviluppo.