Akademisches Labor zur Analyse von CVE-2025-55182 (React2Shell) mit anfälligen und gepatchten React Server Components-Umgebungen, Exploit-Shell, automatisierten Bewertungsszenarien und umfassendem Sicherheitsbericht.
Dieses Repository enthält ein lokales akademisches Labor zur Analyse von CVE-2025-55182 in einer kontrollierten React Server Components-Umgebung. Das Labor simuliert die Schwachstelle, deren Ausnutzung und den angewandten Patch.
app/vulnerable/: Das anfällige React-Anwendungsprofil.
src/framework/entry.rsc.tsx: Enthält den unsicheren Deserialisierungspunkt, an dem __flight_action-Payloads über execSync() ausgeführt werden.[email protected].app/patched/: Das gepatchte React-Anwendungsprofil.
src/framework/entry.rsc.tsx: Enthält die Schadensbegrenzungslogik, die __flight_action-Payloads vor der Deserialisierung mit einer 403-Antwort blockiert.infra/: Docker-Konfigurationen für isolierte Ausführung.
docker-compose.yml: Startet sowohl das anfällige (Port 3100) als auch das gepatchte (Port 3200) Profil.scripts/: Automatisierungs- und Exploit-Skripte.
exploit-shell.ps1: Eine interaktive Exploit-Shell, die die Schwachstelle ausnutzt, um ein simuliertes Remote-Terminal (root@container$) bereitzustellen.run-scenarios.ps1: Wrapper-Skript zum Ausführen der automatisierten Evaluierungstests in tests/run-scenarios.mjs.start-lab.ps1: Hilfsskript zum schnellen Starten der Docker-Compose-Umgebung.stop-lab.ps1: Hilfsskript zum Herunterfahren und Bereinigen der Docker-Compose-Umgebung.demo-lab.ps1: Alternatives Demo-Skript, das beide Apps lokal (ohne Docker) ausführt und eine Testanfragensequenz sendet.report/: Enthält die finale Analyse.
findings.md: Der umfassende Sicherheitsbericht über die Angriffskette, CVSS-Analyse, Bewertungsmetriken und Empfehlungen zur Schadensbegrenzung.CSE472_ProjectProposal_Revised.md: Der überarbeitete Projektvorschlag und die Methodendokumentation.tests/: Automatisierte Evaluierung.
run-scenarios.mjs: Node.js-Skript, das normale, verdächtige und Exploit-Szenarien gegen beide Profile ausführt und Erfolgs- und Erkennungsraten berechnet.logs/: Telemetrieausgaben.
vulnerable-requests.log & patched-requests.log: Speichern detaillierte Anfrage-Traces, einschließlich suspiciousReasons für die Analyse.Wenn Sie dieses Projekt als .zip-Datei von GitHub heruntergeladen haben, befolgen Sie diese Schritte, um das Labor auszuführen und mit der Schwachstellensimulation auf Ihrem lokalen Rechner zu interagieren.
Hinweis zur PowerShell-Ausführungsrichtlinie: Wenn beim Ausführen von
.ps1-Dateien ein Fehler auftritt, dass das Skriptcannot be loadedoderis not digitally signedist, müssen Sie die Ausführungsrichtlinie für Ihre aktuelle Sitzung umgehen. Führen Sie diesen Befehl in Ihrem PowerShell-Fenster aus, bevor Sie die Skripte starten:Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass(Da der Gültigkeitsbereich „Process“ ist, müssen Sie diesen Befehl in jedem neuen PowerShell-Fenster oder -Tab, das Sie öffnen, erneut ausführen!)
Entpacken Sie die .zip-Datei in Ihren gewünschten Ordner. Öffnen Sie ein PowerShell-Fenster und navigieren Sie in den entpackten Projektordner:
cd pfad\zum\entpackten\ordner
Wir verwenden Docker, um die anfällige Anwendung sicher zu isolieren. Starten Sie die Container mit dem bereitgestellten Hilfsskript:
.\scripts\start-lab.ps1
(Alternativ können Sie manuell cd infra; docker-compose up --build -d ausführen)
Nach dem Start:
http://localhost:3100http://localhost:3200Bei laufender Umgebung können Sie die Remote-Codeausführung (RCE) testen, indem Sie unsere simulierte Exploit-Shell starten. Öffnen Sie einen neuen PowerShell-Tab/das Fenster und führen Sie aus:
.\scripts\exploit-shell.ps1
Dieses Skript fungiert als Angreifer, der manipulierte Payloads an den .rsc-Endpunkt sendet. Probieren Sie Befehle aus wie:
whoamils /workspaceenvcat /etc/passwdSo testen Sie die gepatchte Version:
.\scripts\exploit-shell.ps1 -Target "http://localhost:3200"
Sie werden feststellen, dass die gepatchte Version die Anfrage blockiert und eine [BLOCKED]-Meldung zurückgibt.
Um die Bewertungsmetriken (Erfolgsrate, Erkennungsrate) zu generieren, führen Sie das Node.js-Testskript aus:
node .\tests\run-scenarios.mjs
(Oder verwenden Sie den Wrapper: .\scripts\run-scenarios.ps1)
Dies gibt eine Zusammenfassung auf der Konsole aus und speichert einen detaillierten JSON-Bericht in tests/results/scenario-report.json.
Wenn Sie mit den Experimenten fertig sind, können Sie die Container sicher herunterfahren, um Ressourcen freizugeben:
.\scripts\stop-lab.ps1