Vulnerabilità critica di esecuzione di codice remoto nel React Native Community CLI (CVE-2025-11953)

CVE-2025-11953 è una vulnerabilità critica di esecuzione di codice remoto (RCE) che colpisce il React Native Community CLI, ampiamente utilizzato, in particolare il pacchetto @react-native-community/cli-server-api nelle versioni dalla 4.8.0 alla 20.0.0-alpha.2. Questo pacchetto, mantenuto da Meta e scaricato da 1,5 a 2 milioni di volte a settimana, consente agli sviluppatori di creare applicazioni mobili React Native.

La vulnerabilità deriva da un difetto di iniezione di comandi del sistema operativo nel Metro Development Server, che si associa alle interfacce esterne per impostazione predefinita anziché alla localhost. Un attaccante non autenticato sulla stessa rete può sfruttare questa falla per eseguire comandi arbitrari del sistema operativo sui computer degli sviluppatori che eseguono versioni vulnerabili del CLI.

Con un punteggio CVSS di 9.8 (Critico) e l’elevata facilità di sfruttamento senza autenticazione, questa vulnerabilità rappresenta un rischio significativo per l’intero ecosistema degli sviluppatori React Native. Le organizzazioni devono dare priorità all’applicazione della patch immediatamente per prevenire potenziali compromissioni della supply chain e il controllo dei computer degli sviluppatori.

Prodotto com.facebook.react.packagerconnection
Data 2025-11-06 10:50:36
Informazioni Trending

Riassunto tecnico

La vulnerabilità si trova nell’endpoint /open-url del Metro Development Server, che gestisce le richieste POST senza una valida validazione dell’input. L’endpoint accetta input fornito dall’utente e lo passa direttamente alla funzione open() non sicura fornita dal pacchetto NPM open, risultando nell’esecuzione di comandi del sistema operativo.

Flusso del codice vulnerabile:

  1. Il server Metro si associa per impostazione predefinita alle interfacce di rete esterne (0.0.0.0) invece che limitarsi alla localhost (127.0.0.1)
  2. Il server espone l’endpoint /open-url che accetta richieste POST
  3. L’input controllato dall’utente dal corpo della richiesta POST viene passato senza sanificazione alla funzione open()
  4. La funzione open() esegue comandi di sistema per aprire URL/file, ma può essere manipolata per eseguire comandi arbitrari

Caratteristiche dello sfruttamento:

  • Sistemi Windows: gli attaccanti ottengono esecuzione completa di comandi OS con controllo completo sugli argomenti dei comandi, consentendo l’esecuzione di comandi shell arbitrari come cmd.exe /c malicious-command
  • Sistemi Linux/macOS: gli attaccanti possono lanciare eseguibili arbitrari con controllo limitato sui parametri (anche se ulteriori ricerche potrebbero consentire l’esecuzione completa di comandi)

Esempio di vettore d’attacco:

Un attaccante sulla stessa rete può inviare una richiesta POST malevola al server Metro esposto:

POST http://<target-ip>:8081/open-url
Content-Type: application/json

{
  "url": "malicious-payload-here"
}

La vulnerabilità è particolarmente pericolosa perché:

  • Nessuna autenticazione richiesta – qualsiasi attaccante di rete può sfruttarla
  • Configurazione predefinita vulnerabile – gli sviluppatori sono esposti fin da subito quando avviano react-native start
  • Accessibile dalla rete – non limitata a sfruttamenti locali; gli attaccanti nella stessa WiFi, VPN o rete aziendale possono attaccare
  • Targeting degli sviluppatori – compromettere i computer degli sviluppatori può portare ad attacchi alla supply chain che colpiscono le applicazioni a valle

Raccomandazioni

La correzione (versione 20.0.0) risolve la vulnerabilità validando e sanificando correttamente l’input prima di passarlo alla funzione open(), prevenendo così l’iniezione di comandi.

Applicare la patch immediatamente

Aggiorna il pacchetto @react-native-community/cli-server-api alla versione 20.0.0 o superiore in tutti i progetti React Native. Questo può essere fatto:

  • Aggiornando @react-native-community/cli alla versione 20.0.0 o successiva (che include la versione corretta di cli-server-api)
  • Eseguendo npm update @react-native-community/cli-server-api o yarn upgrade @react-native-community/cli-server-api in ogni directory del progetto
  • Verificando l’aggiornamento con npm ls @react-native-community/cli-server-api

Implementare restrizioni sul binding di rete

Se non è possibile applicare la patch immediatamente, configura il Metro Development Server per associarsi esplicitamente alla localhost, procedendo così:

  • Modifica la configurazione del server affinché ascolti solo su 127.0.0.1 invece di 0.0.0.0
  • Utilizza regole del firewall per bloccare l’accesso esterno alla porta 8081 (porta predefinita di Metro)
  • Esegui i server di sviluppo dietro VPN o segmenti di rete isolati

Ricerca e monitoraggio

Avvia valutazioni di sicurezza immediate:

  • Analizza i log di rete alla ricerca di richieste POST sospette agli endpoint /open-url sulla porta 8081
  • Esamina i computer degli sviluppatori per segni di compromissione, inclusa l’esecuzione di processi imprevisti
  • Verifica tentativi di accesso non autorizzato da indirizzi IP esterni ai server di sviluppo
  • Monitora connessioni in uscita insolite dai computer degli sviluppatori che potrebbero indicare attività di command-and-control

Applicare difesa in profondità

Implementa ulteriori livelli di sicurezza:

  • Segmentazione di rete: isola gli ambienti di sviluppo dalle reti di produzione
  • Sistemi di rilevamento delle intrusioni (IDS): configura avvisi per modelli di iniezione di comandi che prendono di mira i server Metro
  • Soluzioni EDR (Endpoint Detection and Response): distribuisci soluzioni EDR sui computer degli sviluppatori per rilevare l’esecuzione di processi malevoli
  • Scansione della supply chain: implementa la scansione automatizzata delle dipendenze per identificare pacchetti vulnerabili prima della distribuzione
  • Principio del privilegio minimo: assicurati che gli account degli sviluppatori non dispongano di privilegi amministrativi non necessari che potrebbero amplificare l’impatto della compromissione

Verifica la tua esposizione

Non tutti gli sviluppatori React Native sono vulnerabili:

  • La vulnerabilità esiste solo se si utilizza Metro come server di sviluppo – gli sviluppatori che utilizzano framework alternativi che non si basano su Metro non sono interessati
  • Verifica se il tuo flusso di lavoro di sviluppo utilizza attivamente react-native start o il bundler Metro
  • Controlla se le versioni vulnerabili del pacchetto sono effettivamente in uso nel tuo albero delle dipendenze

Vuoi garantire la massima sicurezza informatica alla tua azienda? ISGroup SRL è qui per aiutarti con soluzioni di cyber security su misura per la tua azienda.

Vuoi che gestiamo tutto noi per te? Il servizi di Virtual CISO e di gestione delle vulnerabilità sono perfetti per la tua organizzazione.

Hai già le idee chiare su quello che ti serve? Esplora i nostri servizi di:

E molto altro. Proteggi la tua azienda con i migliori esperti di cybersecurity!