CVE-2025-11953 ist eine kritische Schwachstelle für Remote Code Execution (RCE), die das weit verbreitete React Native Community CLI betrifft, insbesondere das Paket @react-native-community/cli-server-api in den Versionen 4.8.0 bis 20.0.0-alpha.2. Dieses von Meta gewartete Paket, das wöchentlich 1,5 bis 2 Millionen Mal heruntergeladen wird, ermöglicht Entwicklern die Erstellung von React Native-Mobilanwendungen.
Die Schwachstelle beruht auf einem Betriebssystem-Befehlsinjektionsfehler im Metro Development Server, der standardmäßig an externe Schnittstellen statt an localhost bindet. Ein nicht authentifizierter Angreifer im selben Netzwerk kann diese Lücke ausnutzen, um beliebige Betriebssystembefehle auf den Computern von Entwicklern auszuführen, die anfällige Versionen der CLI verwenden.
Mit einem CVSS-Score von 9.8 (Kritisch) und der hohen Ausnutzbarkeit ohne Authentifizierung stellt diese Schwachstelle ein erhebliches Risiko für das gesamte React Native-Entwickler-Ökosystem dar. Unternehmen müssen der Anwendung des Patches sofort Priorität einräumen, um potenzielle Supply-Chain-Kompromittierungen und die Übernahme von Entwickler-Workstations zu verhindern.
| Produkt | com.facebook.react.packagerconnection |
| Datum | 06.11.2025 10:50:36 |
| Informationen |
|
Technische Zusammenfassung
Die Schwachstelle befindet sich im Endpunkt /open-url des Metro Development Servers, der POST-Anfragen ohne eine gültige Eingabevalidierung verarbeitet. Der Endpunkt akzeptiert vom Benutzer bereitgestellte Eingaben und leitet diese direkt an die unsichere Funktion open() weiter, die vom NPM-Paket open bereitgestellt wird, was zur Ausführung von Betriebssystembefehlen führt.
Ablauf des anfälligen Codes:
- Der Metro-Server bindet standardmäßig an externe Netzwerkschnittstellen (0.0.0.0) anstatt sich auf localhost (127.0.0.1) zu beschränken.
- Der Server stellt den Endpunkt
/open-urlbereit, der POST-Anfragen akzeptiert. - Die vom Benutzer kontrollierte Eingabe aus dem Body der POST-Anfrage wird ohne Bereinigung an die Funktion
open()übergeben. - Die Funktion
open()führt Systembefehle aus, um URLs/Dateien zu öffnen, kann jedoch manipuliert werden, um beliebige Befehle auszuführen.
Merkmale der Ausnutzung:
- Windows-Systeme: Angreifer erhalten vollständige OS-Befehlsausführung mit voller Kontrolle über die Befehlsargumente, was die Ausführung beliebiger Shell-Befehle wie
cmd.exe /c malicious-commandermöglicht. - Linux/macOS-Systeme: Angreifer können beliebige ausführbare Dateien mit begrenzter Kontrolle über die Parameter starten (obwohl weitere Untersuchungen eine vollständige Befehlsausführung ermöglichen könnten).
Beispiel für einen Angriffsvektor:
POST http://<target-ip>:8081/open-url
Content-Type: application/json
{
"url": "malicious-payload-here"
}
Die Schwachstelle ist besonders gefährlich, weil:
- Keine Authentifizierung erforderlich – jeder Netzwerkangreifer kann sie ausnutzen.
- Anfällige Standardkonfiguration – Entwickler sind ab dem Start von
react-native startgefährdet. - Netzwerkzugriff – nicht auf lokale Exploits beschränkt; Angreifer im selben WLAN, VPN oder Unternehmensnetzwerk können angreifen.
- Zielgruppe Entwickler – die Kompromittierung von Entwickler-Workstations kann zu Supply-Chain-Angriffen führen, die nachgelagerte Anwendungen betreffen.
Empfehlungen
Der Fix (Version 20.0.0) behebt die Schwachstelle, indem die Eingabe korrekt validiert und bereinigt wird, bevor sie an die Funktion open() übergeben wird, wodurch die Befehlsinjektion verhindert wird.
Patch sofort anwenden
Aktualisieren Sie das Paket @react-native-community/cli-server-api auf Version 20.0.0 oder höher in allen React Native-Projekten. Dies kann wie folgt geschehen:
- Aktualisierung von
@react-native-community/cliauf Version 20.0.0 oder höher (welche die korrigierte Version von cli-server-api enthält). - Ausführen von
npm update @react-native-community/cli-server-apioderyarn upgrade @react-native-community/cli-server-apiin jedem Projektverzeichnis. - Überprüfung des Updates mit
npm ls @react-native-community/cli-server-api.
Netzwerk-Binding-Beschränkungen implementieren
Wenn der Patch nicht sofort angewendet werden kann, konfigurieren Sie den Metro Development Server so, dass er explizit an localhost bindet, indem Sie wie folgt vorgehen:
- Ändern Sie die Serverkonfiguration so, dass sie nur auf 127.0.0.1 statt auf 0.0.0.0 lauscht.
- Verwenden Sie Firewall-Regeln, um den externen Zugriff auf Port 8081 (Standard-Port von Metro) zu blockieren.
- Führen Sie Entwicklungsserver hinter VPNs oder in isolierten Netzwerksegmenten aus.
Untersuchung und Überwachung
Starten Sie sofortige Sicherheitsbewertungen:
- Analysieren Sie Netzwerkprotokolle auf verdächtige POST-Anfragen an
/open-url-Endpunkte auf Port 8081. - Untersuchen Sie Entwickler-Workstations auf Anzeichen einer Kompromittierung, einschließlich der Ausführung unerwarteter Prozesse.
- Überprüfen Sie unbefugte Zugriffsversuche von externen IP-Adressen auf Entwicklungsserver.
- Überwachen Sie ungewöhnliche ausgehende Verbindungen von Entwickler-Workstations, die auf Command-and-Control-Aktivitäten hinweisen könnten.
Defense-in-Depth anwenden
Implementieren Sie zusätzliche Sicherheitsebenen:
- Netzwerksegmentierung: Isolieren Sie Entwicklungsumgebungen von Produktionsnetzwerken.
- Intrusion Detection Systems (IDS): Konfigurieren Sie Warnmeldungen für Befehlsinjektionsmuster, die auf Metro-Server abzielen.
- EDR-Lösungen (Endpoint Detection and Response): Setzen Sie EDR-Lösungen auf Entwickler-Workstations ein, um die Ausführung bösartiger Prozesse zu erkennen.
- Supply-Chain-Scanning: Implementieren Sie automatisiertes Abhängigkeits-Scanning, um anfällige Pakete vor der Bereitstellung zu identifizieren.
- Prinzip der geringsten Rechte: Stellen Sie sicher, dass Entwicklerkonten keine unnötigen Administratorrechte besitzen, die die Auswirkungen einer Kompromittierung verstärken könnten.
Überprüfen Sie Ihre Gefährdung
Nicht alle React Native-Entwickler sind gefährdet:
- Die Schwachstelle besteht nur, wenn Metro als Entwicklungsserver verwendet wird – Entwickler, die alternative Frameworks verwenden, die nicht auf Metro basieren, sind nicht betroffen.
- Überprüfen Sie, ob Ihr Entwicklungsworkflow aktiv
react-native startoder den Metro-Bundler verwendet. - Prüfen Sie, ob die anfälligen Paketversionen tatsächlich in Ihrem Abhängigkeitsbaum verwendet werden.
[Callforaction-THREAT-Footer]
Leave a Reply