
Proof-of-concept Exploit für CVE-2025-55182 (React2Shell), eine kritische Pre-Auth-RCE in React Server Components. Zeigt unsichere Deserialisierung im Flight-Protokoll für autorisierte Sicherheitstests und Schulungen.
Ein Proof-of-Concept-Tool zur Demonstration der kritischen React2Shell-Sicherheitslücke (CVE-2025-55182 / CVE-2025-66478) in ausschließlich autorisierten, lokalen Testumgebungen.
Diese Sicherheitslücke (CVSS 10.0) wird derzeit von hochentwickelten Bedrohungsakteuren aktiv ausgenutzt. Amazon Threat Intelligence berichtet, dass mehrere China-nahe staatlich geförderte Gruppen, darunter Earth Lamia und Jackpot Panda, innerhalb von Stunden nach der Offenlegung begannen, öffentliche Exploits zu bewaffnen. Die US-amerikanische Cybersecurity and Infrastructure Security Agency (CISA) hat sie in ihren Katalog der Bekannten Ausgenutzten Sicherheitslücken (KEV) aufgenommen.
CVE-2025-55182 (React2Shell) ist eine kritische, vor der Authentifizierung ausnutzbare Remote-Code-Ausführung (RCE)-Sicherheitslücke im „Flight“-Protokoll der React Server Components (RSC). Eine separate Kennung, CVE-2025-66478, wurde für Next.js vergeben, aber inzwischen als Duplikat von CVE-2025-55182 abgelehnt, da beide die gleiche Ursache haben.
chmod +x pwn-nextjs.sh
./pwn-nextjs.sh [TARGET_URL] [COMMAND]
# Target specific URL
./pwn-nextjs.sh https://vulnerable-app.example.com "whoami"
root
Die Sicherheitslücke hat ihren Ursprung in bestimmten React-Paketen und betrifft jedes Framework, das diese bündelt.
| Komponente | Betroffene Versionen | Gepatchte Versionen | Anmerkungen |
|---|---|---|---|
| React-Pakete ( react-server-dom-webpack, -parcel, -turbopack) | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 | Quelle des vorgelagerten Fehlers. |
| Next.js (App Router) | 15.x, 16.x, 14.3.0-canary.77 und später | 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7 | Primär betroffenes Framework. |
| Andere Frameworks | React Router, Waku, RedwoodJS, Parcel (@parcel/rsc), Vite RSC Plugin | Aktualisieren Sie auf Versionen, die gepatchte React-Pakete verwenden (>19.0.1, 19.1.2, 19.2.1). | Anfällig bei Verwendung der betroffenen React-Pakete. |
Nicht betroffen: Next.js 13.x, Next.js 14.x stabile Versionen, Pages Router-Anwendungen und die Edge Runtime sind nicht betroffen.
Das RSC Flight-Protokoll serialisiert Daten für die Client-Server-Kommunikation. Die Sicherheitslücke liegt in der Deserialisierungslogik auf dem Server, die Objekteigenschaften aus der eingehenden Nutzlast ohne ausreichende Validierung unsicher erweitert. Dies ermöglicht einem Angreifer, schädliche Schlüssel (wie __proto__ oder constructor) in die Anfrage einzuschleusen, was zu Prototyp-Verschmutzung führt.
Sobald die Prototyp-Kette verschmutzt ist, folgt der Server vom Angreifer beeinflussten Ausführungspfaden. Dies kann verkettet werden, um beliebigen JavaScript-Code mit Serverberechtigungen auszuführen, was zu einer vollständigen Remote-Code-Ausführung (RCE) führt.
Sicherheitsforscher haben erfolgreiche Exploits beobachtet, die zu Folgendem führen:
.aws/credentials).Patchen ist obligatorisch und der einzige Weg, die Sicherheitslücke vollständig zu beseitigen. Es gibt keine Konfigurationseinstellung, um den anfälligen Codepfad zu deaktivieren.
# For Next.js users, upgrade to the latest patched version in your release line.
# Example: If you are on Next.js 15.5.x:
npm install [email protected]
# Also ensure React dependencies are updated:
npm install react@latest react-dom@latest
Überprüfen Sie, ob Ihre package-lock.json- oder yarn.lock-Dateien die gepatchten react-server-dom-*-Paketversionen (19.0.1, 19.1.2 oder 19.2.1) widerspiegeln.
Während des Patchens setzen Sie Web Application Firewall (WAF)-Regeln ein, um Exploit-Versuche zu blockieren:
AWSManagedRulesKnownBadInputsRuleSet (v1.24+) enthält Regeln für diese CVE.cve-canary-Regel ist verfügbar.Hinweis: WAF-Regeln sind eine vorübergehende, unvollständige Abhilfemaßnahme. Sie ersetzen nicht die Notwendigkeit zu patchen.
Überprüfen Sie die Protokolle auf diese Anzeichen von Exploit-Versuchen:
next-action- oder rsc-action-id-Headern. Anfragekörper, die Muster wie $@ oder "status":"resolved_model" enthalten.whoami, id, uname), Lesezugriffe auf /etc/passwd oder Dateischreibvorgänge nach /tmp/ (z. B. pwned.txt) durch Node.js-Prozesse.Dieses Tool demonstriert eine Sicherheitslücke mit einem CVSS-Score von 10.0 (maximaler Schweregrad), die derzeit unter aktiver, staatlich geförderter Ausnutzung steht.