
react CVE-2025-55182
Schweregrad: Kritisch — CVSS 10.0
CWE: CWE-502 (Deserialisierung nicht vertrauenswürdiger Daten)
Anbieter: Meta (Facebook)
Offengelegt: 3. Dezember 2025
CVE-2025-55182 ist eine nicht authentifizierte Sicherheitslücke zur Remote-Codeausführung (RCE) mit maximalem Schweregrad in React Server Components (RSC), genannt React2Shell. Der Fehler liegt in der Art und Weise, wie React Payloads decodiert, die über das Flight-Protokoll an React-Server-Function-Endpunkte gesendet werden. Ein Angreifer kann eine einzige, speziell präparierte HTTP-POST-Anfrage an einen verwundbaren Server senden und beliebigen Code ausführen – keine Anmeldeinformationen, keine Benutzerinteraktion erforderlich.
Anwendungen, die keine expliziten Server-Function-Endpunkte bereitstellen, sind dennoch anfällig, wenn sie React Server Components unterstützen.
| Paket | Verwundbare Versionen | Patch-Versionen |
|---|---|---|
react-server-dom-webpack | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | ≥ 19.0.1 / 19.1.2 / 19.2.1 |
react-server-dom-parcel | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | ≥ 19.0.1 / 19.1.2 / 19.2.1 |
react-server-dom-turbopack | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | ≥ 19.0.1 / 19.1.2 / 19.2.1 |
Betroffene Frameworks (bei Verwendung verwundbarer React-Pakete): Next.js 15.x / 16.x (App Router), React Router, Waku, RedwoodSDK, Parcel RSC, Vite RSC plugin.
Vektorstring: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
React Server Components verwenden ein binäres Drahtformat namens Flight-Protokoll, um Komponentenbäume vom Server zum Client zu streamen. Dasselbe Protokoll behandelt Server Functions (früher Server Actions) – aufrufbare Endpunkte, die serialisierte Argumente vom Browser akzeptieren.
Die Sicherheitslücke liegt im Deserialisierer: Wenn React eine Flight-Payload verarbeitet, kann es dazu gebracht werden, beliebige serverseitige Objekte zu instanziieren, was zu vollständiger RCE führt. Da der Flight-Endpunkt standardmäßig verfügbar ist, sobald RSC aktiviert ist, und auf Protokollebene keine Authentifizierung existiert, ist für die Ausnutzung lediglich Netzwerkzugriff auf den Server erforderlich.
Die enthaltene Vorlage CVE-2025-55182.yaml verwendet drei komplementäre Erkennungsmethoden.
Sendet ein minimales POST mit Content-Type: text/x-component an den Root-Pfad. Ein verwundbarer (oder erreichbarer) RSC-Server antwortet mit demselben Content-Type und einem Flight-Stream-Body, dessen Zeilen mit alphanumerischen Zeilen-IDs gefolgt von einem Doppelpunkt (z. B. 0:, 1:) oder React-Referenzsiglen ($L, $S, $I, $@) beginnen.
POST / HTTP/1.1
Content-Type: text/x-component
Accept: text/x-component, */*
Übereinstimmungsbedingung: HTTP 200 + text/x-component-Header + Flight-Stream-Regex im Body.
Next.js signalisiert RSC-Anfragen über den RSC: 1-Header und den ?_rsc=-Abfrageparameter. Diese Anfrage simuliert einen Browser-Prefetch, um zu bestätigen, dass der App-Router-Flight-Endpunkt erreichbar ist.
GET /?_rsc=1 HTTP/1.1
Accept: text/x-component
RSC: 1
Next-Router-State-Tree: %5B%22%22%2C%7B%7D%5D
Übereinstimmungsbedingung: HTTP 200 + text/x-component-Header.
Sendet eine minimale fehlerhafte Flight-Payload zusammen mit einem Next-Action-Header (dem Mechanismus zur Verwendung von Server Functions). Ein verwundbarer Server versucht, die Payload zu deserialisieren; selbst eine Fehlerantwort, die RSC-spezifische Header enthält, bestätigt die Existenz des Endpunkts.
POST / HTTP/1.1
Content-Type: text/x-component
Next-Action: 0000000000000000000000000000000000000000
Übereinstimmungsbedingung: HTTP 200/400/500 + text/x-component- oder x-action-revalidated-Header.
Scannt lokale *.json-Dateien (z. B. package-lock.json, yarn.lock) nach den verwundbaren Paketnamen in Kombination mit einem Versions-Regex, der auf 19.0.0, 19.1.0, 19.1.1 oder 19.2.0 passt. Nützlich für die Überprüfung von Repositorys oder CI-Pipelines ohne Netzwerkverkehr.
# Install / update Nuclei
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
nuclei -target CVE-2025-55182.yaml -u https://target.example.com
nuclei -target CVE-2025-55182.yaml -l targets.txt
nuclei -target CVE-2025-55182.yaml -target ./path/to/project
nuclei -target CVE-2025-55182.yaml -u https://target.example.com -v -je results.json
nuclei -target CVE-2025-55182.yaml -u https://target.example.com -rl 10 -timeout 10
Sofort aktualisieren auf eine gepatchte Version:
# npm
npm install react-server-dom-webpack@latest
# yarn
yarn upgrade react-server-dom-webpack react-server-dom-parcel react-server-dom-turbopack
# pnpm
pnpm update react-server-dom-webpack react-server-dom-parcel react-server-dom-turbopack
Mindestsichere Versionen pro Zweig:
| Zweig | Mindestsichere Version |
|---|---|
| 19.0.x | 19.0.1 |
| 19.1.x | 19.1.2 |
| 19.2.x | 19.2.1 |
Temporäre Abhilfemaßnahmen (falls eine Aktualisierung nicht sofort möglich ist):
text/x-component bei eingehenden POST-Anfragen abzielt (Google Cloud Armor-Regeln sind für diese CVE öffentlich verfügbar).package-lock.json, node_modules oder einer SBOM.Diese Vorlage ist ausschließlich für autorisierte Sicherheitstests und Schwachstellenbewertungen bestimmt. Der Einsatz gegen Systeme, die Sie nicht besitzen oder für die Sie keine ausdrückliche schriftliche Erlaubnis zum Testen haben, kann illegal sein. Die Autoren übernehmen keine Haftung für Missbrauch.
| Metrik | Wert |
|---|
| Angriffsvektor | Network |
| Angriffskomplexität | Low |
| Erforderliche Privilegien | None |
| Benutzerinteraktion | None |
| Umfang | Changed |
| Vertraulichkeit | High |
| Integrität | High |
| Verfügbarkeit | High |
| Gesamtbewertung | 10.0 (Critical) |