
Ein nicht-intrusiver Oberflächenscanner für CVE-2025-55182 (RCE in React Server Components). Erkennt exponierte RSC-Endpunkte in React-19- und Next.js-Anwendungen.
Ein spezialisierter, nicht-intrusiver Surface-Detektor für CVE-2025-55182 (React Server Components RCE).

Lesen Sie dies vor dem Scannen:
Obwohl CVE-2025-55182 eine kritische RCE-Schwachstelle (CVSS 10.0) ist, ist die Ausnutzung in realen Next.js-Produktionsumgebungen an Bedingungen geknüpft.
serverManifest, um erlaubte Module auf die Whitelist zu setzen. Direkte Versuche, gefährliche Module (wie child_process) über RSC zu laden, schlagen oft fehl, da sie nicht in diesem Manifest enthalten sind.serverManifest im Speicher zu überschreiben und die Whitelist zu umgehen.742 statt "vm"). Starre Exploits, die Namen erraten, schlagen fehl (False Negatives).Dieses Tool ist ein Surface-Detektor. Es erkennt, ob das RSC-Protokoll exponiert und aktiv ist. Das Auffinden eines exponierten Endpunkts ist die notwendige Voraussetzung, um die Angriffsfläche zu identifizieren, auf der eine Prototype-Pollution-Kette versucht werden könnte.
Die meisten öffentlichen PoCs und Scanner erzeugen in Produktionsumgebungen False Negatives, weil sie in vier häufige Fallen tappen:
Exploit-Starre: Sie versuchen, bestimmte Gadgets (wie vm oder child_process) auszuführen, die durch Whitelists blockiert werden, oder verlassen sich auf hartkodierte IDs (z. B. "id":"vm"), die gegen minifizierte Webpack-Builds fehlschlagen.
Root-Weiterleitungen: Ein POST auf / bei Next.js löst häufig eine 307/308-Weiterleitung aus (z. B. zu /login), wodurch der POST-Body verloren geht oder in GET umgewandelt wird, bevor der Server ihn verarbeitet.
Transport-Mismatch: Viele Scanner senden Payloads als text/plain oder rohes JSON. Strikte Next.js Server Actions erfordern oft eine multipart/form-data-Kapselung. Ist das Format falsch, gibt der Server 404/200 zurück, ohne den verwundbaren Parser jemals zu triggern.
WAF-Blindheit: Standardtools sehen ein 403 Forbidden und geben auf. Sie unterscheiden nicht zwischen einem globalen IP-Block und einem spezifischen Regel-Filter und verpassen so Gelegenheiten, die WAF mithilfe von Encoding- oder Padding-Techniken zu umgehen.
Dieser Scanner löst alle drei Herausforderungen:
✅ Intelligentes Path Probing: Testet automatisch zufällige, nicht existierende Pfade (z. B. /x7z9q2), um Root-Weiterleitungen (307/308) zu umgehen und den Next.js App Router zu zwingen, den Request-Kontext zu verarbeiten.
✅ Strikter Transport (Multipart): Verwendet multipart/form-data-Kapselung statt Klartext. Dies behebt False Negatives bei strikten Server-Action-Endpunkten, die andernfalls 404 zurückgeben.
✅ WAF-Differenzialanalyse: Unterscheidet zwischen globalen Blöcken ([BLOCKED]) und spezifischem Regel-Filtering ([FILTERED]). Wenn das Backend das Protokoll erlaubt, aber den Payload blockiert, stuft der Scanner das Ziel als lohnend ein.
✅ Auto-Bypass-Modus: Enthält eine optionale --bypass-Engine, die bei [FILTERED]-Zielen automatisch Umgehungstechniken (Unicode-Escapes, Whitespace-Mutation, Junk-Padding) versucht.
✅ Gehärtete Erkennung: Erkennt „Silent Crashes" ([SUSPICIOUS]) auf Enterprise-Servern, die X-Powered-By-Header entfernen, und identifiziert den Assetnote-303-See-Other-Weiterleitungs-Fingerprint.
✅ Aktives Fingerprinting: Verwendet einen spezialisierten Payload (["$1:aa:aa"]), um den einzigartigen React-19-RSC-„Digest"-Fehler auszulösen und zu bestätigen, dass der Parser aktiv ist – auch ohne vollständige RCE.
Klonen Sie das Repository:
git clone https://github.com/fatguru/CVE-2025-55182-scanner.git
cd CVE-2025-55182-scanner
Installieren Sie die Abhängigkeiten (empfohlen in einer virtuellen Umgebung):
pip install -r requirements.txt
Basis-Scan
Prüfen Sie eine einzelne URL. Hinweis: Stellen Sie sicher, dass Sie auf den korrekten Anwendungspfad zeigen (z. B. /dashboard, /login) und nicht nur auf die Root-Domain, da Next.js-App-Router-Endpunkte pfadspezifisch sind.
python3 cve_2025_55182_scanner.py -u http://localhost:3000/dashboard
Bulk-Scan
Scannt eine Liste von URLs aus einer Datei (eine URL pro Zeile). Dies ist die empfohlene Strategie, um bestimmte Pfade nicht zu übersehen.
python3 cve_2025_55182_scanner.py -l targets.txt -o results.csv
Ignoriert SSL-/TLS-Zertifikatsfehler (nützlich für IP-basiertes Scannen, lokale Labore oder selbstsignierte Zertifikate).
python3 cve_2025_55182_scanner.py -u [https://192.168.1.50](https://192.168.1.50) -k
Neu in v2.1: Verwenden Sie das --header-Flag, um Session-Cookies oder Tokens zu übergeben, wenn die App hinter einer Authentifizierung oder einer WAF liegt, die bestimmte Header erfordert.
python3 cve_2025_55182_scanner.py -u https://target.com --header "Cookie: session=123" --header "Authorization: Bearer xyz"
| Flag | Beschreibung |
|---|---|
-u, --url | Einzelne Ziel-URL (z. B. http://target.com/dashboard). |
-l, --list | Datei mit einer Liste der zu scannenden URLs (eine pro Zeile). |
--bypass | (Neu in v2.5) Aktiviert den WAF-Evasion-Modus. Versucht automatisch Mutationstechniken (Unicode, Padding, Whitespace), wenn ein Ziel als [FILTERED] erkannt wird. |
--header | Fügt benutzerdefinierte Header hinzu (z. B. Cookie: session=xyz, Authorization: Bearer...). Kann mehrfach verwendet werden. |
-o, --output | Speichert die Ergebnisse in einer Textdatei. |
-k, --insecure | Deaktiviert die TLS-Zertifikatsprüfung (unterdrückt SSL-Warnungen). |
-t, --threads | Anzahl paralleler Threads für Bulk-Scans (Standard: 10). |
--timeout | Request-Timeout in Sekunden (Standard: 10 s, um Multipart-Payloads zu berücksichtigen). |
--verbose | Aktiviert den Debug-Modus. Zeigt detaillierte Probing-Schritte, WAF-Blockierungsstatus und Bypass-Versuche. |
📊 Interpretation der Ergebnisse (v2.5)
[EXPOSED] | 🔴 (Rot) | Verwundbar
Der Server hat den Payload verarbeitet und einen React-19-Digest-Fehler ODER eine Action-Weiterleitung (303) zurückgegeben. Hohe Konfidenz für eine exponierte Oberfläche.
[BYPASSED] | 🟠 (Orange) | WAF umgangen
Erfolg! Der Scanner hat zunächst einen Filter erkannt, ihn jedoch mithilfe von Mutationstechniken (z. B. Padding/Unicode) erfolgreich umgangen, um die Schwachstelle auszulösen.
[SUSPICIOUS] | 🟡 (Gelb) | Warnung
Der Server ist beim Parsen des Payloads abgestürzt (500). Deutet auf exponierte Serialisierungslogik hin, auch auf gehärteten Zielen, die X-Powered-By-Header entfernen.
[FILTERED] | 🔵 (Blau) | WAF-Regel erkannt
Der Server akzeptiert RSC-Traffic (harmloser Payload wurde durchgelassen), aber eine spezifische WAF-Regel hat den Exploit-Payload blockiert. Das Ziel ist hinter der WAF erreichbar. Verwenden Sie --bypass, um eine Umgehung zu versuchen.
[INFO] | 🔵 (Cyan) | Protokoll erkannt
Der Server spricht RSC (text/x-component), hat den Payload jedoch ordnungsgemäß behandelt. Vermutlich gepatcht oder Standardverhalten.
[BLOCKED] | 🟣 (Magenta) | Globaler WAF-Block
Alles wurde blockiert (403/406), einschließlich des harmlosen Handshakes. Die WAF blockiert das Protokoll vollständig oder Ihre IP.
[SAFE] | 🟢 (Grün) | Sauber
Der Server gab 404/200 zurück, ignorierte jedoch RSC-Header/Multipart-Bodies auf allen getesteten Pfaden.
Eine auf dieser Erkennungslogik basierende Nuclei-Vorlage ist in diesem Repository enthalten: cve-2025-55182-detection.yaml.
nuclei -t cve-2025-55182-detection.yaml -l targets.txt
--bypass-Flag automatisiert Umgehungstechniken (Whitespace, Unicode, großes Padding), wenn ein Ziel als [FILTERED] erkannt wird.multipart/form-data umgestellt, um False Negatives bei Zielen zu beheben, die auf Text-Payloads mit 404 antworten.X-Powered-By-Header verbergen.303 See Other-Weiterleitungen hinzugefügt, die von einigen verwundbaren Implementierungen verwendet werden.text/plain auf multipart/form-data umgestellt. Dies behebt False Negatives bei Zielen, die für Server Actions strikt Formulardaten erzwingen und zuvor 404 zurückgaben.HTTP 303 See Other- und x-action-redirect-Header zu erfassen, die starke Indikatoren für die RSC-Verarbeitung sind und oft verborgen bleiben, wenn Scanner Weiterleitungen automatisch verfolgen.Dieses Tool soll Sicherheitsforschern und Administratoren helfen, exponierte Angriffsflächen in ihren eigenen Systemen zu identifizieren. Der Autor übernimmt keine Verantwortung für Missbrauch dieses Tools. Verwenden Sie es nicht gegen Systeme, für deren Test Sie keine ausdrückliche Genehmigung haben.
Referenzen:
- https://nvd.nist.gov/vuln/detail/CVE-2025-55182
- https://www.wiz.io/blog/critical-vulnerability-in-react-cve-2025-55182