
Passiver Schwachstellen-Scanner für CVE-2025-55182 und CVE-2025-66478, der nicht authentifizierte RCE in React Server Components durch Framework-Fingerprinting, Versionsanalyse und RSC-Endpunkt-Probing erkennt.
Erkennungstool für Remote-Codeausführung im React Server Components Flight Protocol
Dieser Scanner identifiziert Systeme, die möglicherweise anfällig für CVE-2025-55182 (React) und CVE-2025-66478 (Next.js) sind, kritische nicht authentifizierte Remote-Codeausführungsschwachstellen im React Server Components (RSC) „Flight“-Protokoll.
Wichtige Risikofaktoren:
Eine kritische unsichere Deserialisierungsschwachstelle in der Server Components-Implementierung von React. Das RSC „Flight“-Protokoll validiert die Struktur und Typen eingehender Payloads nicht ordnungsgemäß, sodass Angreifer schädliche Daten injizieren können, die die serverseitige Ausführung beeinflussen.
Attacker → Crafted HTTP POST → RSC Endpoint → Deserialization → RCE
Der Angriff erfordert lediglich eine speziell präparierte HTTP-POST-Anfrage an einen beliebigen Server-Function-Endpunkt. Es ist keine Authentifizierung erforderlich, und Standardkonfigurationen sind anfällig.
Der Scanner verwendet passives Fingerprinting und Protokollprüfung, um potenziell anfällige Systeme zu identifizieren. Er versucht NICHT, eine Ausnutzung durchzuführen.
┌─────────────────────────────────────────────────────────────────┐
│ DETECTION PIPELINE │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. Framework Detection │
│ ├── HTTP Headers (X-Powered-By: Next.js) │
│ ├── Page Source (__NEXT_DATA__, react artifacts) │
│ └── Build Manifests │
│ │
│ 2. Version Fingerprinting │
│ ├── Embedded version strings in JS bundles │
│ ├── Package version patterns │
│ └── Build manifest analysis │
│ │
│ 3. RSC Endpoint Discovery │
│ ├── Send RSC headers (RSC: 1, Accept: text/x-component) │
│ ├── Analyze response Content-Type │
│ └── Detect Flight protocol markers in response │
│ │
│ 4. Server Actions Probing │
│ ├── POST request with minimal Flight payload │
│ ├── Check for deserialization processing │
│ └── Identify action endpoints │
│ │
│ 5. Vulnerability Assessment │
│ ├── Correlate version with known vulnerable ranges │
│ ├── Weight RSC endpoint presence │
│ └── Generate confidence-scored verdict │
│ │
└─────────────────────────────────────────────────────────────────┘
Das Flight-Protokoll verwendet ein spezifisches Drahtformat:
0:["$","div",null,{"children":"Hello"}]
1:["$","$L1",null,{}]
2:{"name":"ServerComponent"}
Der Scanner sucht nach:
text/x-component Content-Type{number}:{payload}$, $L, $F, $@, $undefinedSucht nach Versionierungsmustern in:
/_next/static/chunks/)[email protected])requests-Bibliothek# Clone or download the scanner files
# Install dependencies
pip install -r requirements.txt
# Verify installation
python3 cve-2025-55182-scanner.py --help
# Single target
python3 cve-2025-55182-scanner.py -t https://example.com
# With verbose output
python3 cve-2025-55182-scanner.py -t https://example.com -v
# Create targets file (one URL per line)
echo "https://app1.example.com" > targets.txt
echo "https://app2.example.com" >> targets.txt
# Scan all targets
python3 cve-2025-55182-scanner.py -f targets.txt -o results.json
python3 cve-2025-55182-scanner.py -t https://example.com \
--timeout 15 \
--threads 10 \
--user-agent "SecurityAudit/1.0" \
-v \
-o scan_results.json
python3 rsc_analyzer.py https://example.com 2>/dev/null
Dies bietet eine detaillierte Flight-Protokoll-Analyse und Komponentenaufzählung.
======================================================================
Target: https://app.example.com
Status: VULNERABLE
Framework: Next.js
Version: 19.1.0
RSC Endpoints: /, /_next/data
Evidence:
- X-Powered-By header: Next.js
- React version detected: 19.1.0
- RSC Flight response at / (Content-Type: text/x-component)
- Flight protocol markers detected at /
Recommendations:
→ CRITICAL: Immediate patching required!
→ Upgrade React to 19.0.1, 19.1.2, or 19.2.1
→ Upgrade Next.js to latest patched version (15.0.5+, 16.0.7)
→ Enable WAF rules to block malicious RSC payloads
→ Monitor for anomalous POST requests to RSC endpoints
======================================================================
{
"target": "https://app.example.com",
"status": "VULNERABLE",
"framework": "Next.js",
"version": "19.1.0",
"rsc_endpoints": ["/", "/_next/data"],
"evidence": [
"X-Powered-By header: Next.js",
"React version detected: 19.1.0",
"RSC Flight response at / (Content-Type: text/x-component)"
],
"recommendations": [
"CRITICAL: Immediate patching required!",
"Upgrade React to 19.0.1, 19.1.2, or 19.2.1"
]
}
✅ Explizite Versionszeichenfolge in Bundles gefunden
✅ X-Powered-By-Header gibt Version preis
✅ Mehrere RSC-Indikatoren vorhanden
✅ Flight-Protokoll-Antwort bestätigt
✅ Server akzeptiert RSC-POST-Anfragen
❌ Keine Versionsinformationen offengelegt
❌ WAF/CDN maskiert Antworten
❌ Benutzerdefinierte Framework-Implementierung
❌ Starke Zwischenspeicherung verhindert Sondierungen
❌ Ratenbegrenzung blockiert Erkennung
| Szenario | Warum es passiert | Abhilfe |
|---|---|---|
| Alte Versionszeichenfolge zwischengespeichert | CDN/Build-Cache | Mehrere Endpunkte prüfen |
| RSC nach Update deaktiviert | Konfigurationsänderung ohne Neubau |
| Faktor | Auswirkung auf Erkennung |
|---|---|
| Cloudflare/WAF | Kann Sondierungen blockieren, Header maskieren |
Bei kritischen Ergebnissen immer validieren mit:
npm audit oder yarn auditSofortmaßnahmen (0-24 Stunden):
Sofort patchen
npm install [email protected] [email protected]
npm install [email protected] # or latest patched
WAF-Regeln aktivieren – Cloudflare, Akamai und AWS WAF haben Schutzregeln bereitgestellt
Protokolle überwachen auf verdächtige POST-Anfragen an RSC-Endpunkte
Kurzfristige Maßnahmen (24-72 Stunden):
package.json überprüfen# Batch scan all company assets
cat domains.txt | while read domain; do
python3 cve-2025-55182-scanner.py -t "$domain" -o "results_${domain//\//_}.json"
done
# Aggregate results
jq -s '[.[] | select(.status == "VULNERABLE" or .status == "LIKELY_VULNERABLE")]' results_*.json > critical_findings.json
# GitHub Actions example
- name: CVE-2025-55182 Check
run: |
python3 cve-2025-55182-scanner.py -t ${{ env.APP_URL }} -o results.json
if grep -q '"status": "VULNERABLE"' results.json; then
echo "::error::Critical vulnerability detected!"
exit 1
fi
| Version | Datum | Änderungen |
|---|---|---|
| 1.0.0 | 2025-12-03 | Initial release |
Dieses Tool wird ausschließlich für autorisierte Sicherheitstests bereitgestellt. Verwenden Sie es nur gegen Systeme, die Ihnen gehören oder für die Sie eine ausdrückliche schriftliche Erlaubnis zum Testen haben. Die Autoren übernehmen keine Haftung für Missbrauch oder Schäden, die durch dieses Tool verursacht werden.
| Paket | Anfällige Versionen | Gepatchte 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 |
| Next.js | 14.3.0-canary.77+, 15.x, 16.0.0-16.0.6 | 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7 |
| Indikator | Erkennungsmethode | Vertrauensstufe |
|---|
X-Powered-By: Next.js | HTTP-Header-Inspektion | Hoch |
__NEXT_DATA__ Script-Tag | HTML-Quelltext-Parsing | Hoch |
/_next/ Asset-Pfade | HTML-Quelltext-Parsing | Mittel |
| React-Hydrierungsmarkierungen | HTML-Quelltext-Parsing | Mittel |
| Option | Beschreibung | Standardwert |
|---|
-t, --target | Einzelne Ziel-URL | - |
-f, --file | Datei mit Zielliste | - |
-o, --output | JSON-Ausgabedatei | - |
-v, --verbose | Detailierte Beweise anzeigen | False |
--timeout | Anforderungszeitüberschreitung (Sekunden) | 10 |
--threads | Gleichzeitige Threads | 5 |
--verify-ssl | SSL-Zertifikate überprüfen | False |
--user-agent | Benutzerdefinierter User-Agent | Mozilla/5.0... |
--no-banner | Banner unterdrücken | False |
| Status | Bedeutung | Erforderliche Maßnahme |
|---|
| 🔴 ANFÄLLIG | Bestätigte anfällige Version erkannt | Sofort patchen |
| 🔴 WAHRSCHEINLICH ANFÄLLIG | React 19.x mit RSC, Version im anfälligen Bereich | Dringend patchen |
| 🟡 MÖGLICHERWEISE ANFÄLLIG | RSC-Endpunkte gefunden, Version unbekannt | Untersuchen und patchen |
| 🟢 NICHT ANFÄLLIG | Gepatchte Version bestätigt | Auf Updates achten |
| 🔵 UNBEKANNT | Status konnte nicht ermittelt werden | Manuelle Überprüfung erforderlich |
| ⚪ FEHLER | Scan fehlgeschlagen | Wiederholen oder manuelle Prüfung |
| Ergebnistyp | Vertrauensstufe | Erklärung |
|---|
| ANFÄLLIG mit Version | HOCH (90%+) | Versionszeichenfolge stimmt mit bekannter anfälliger Version überein |
| ANFÄLLIG über Header | HOCH (85%+) | X-Powered-By hat anfällige Version offengelegt |
| WAHRSCHEINLICH ANFÄLLIG | MITTEL-HOCH (70-85%) | React 19.x erkannt, RSC aktiv, Version nicht explizit gepatcht |
| MÖGLICHERWEISE ANFÄLLIG | MITTEL (50-70%) | RSC-Endpunkte antworten, aber Version unbekannt |
| NICHT ANFÄLLIG | HOCH (85%+) | Gepatchte Version explizit erkannt |
| UNBEKANNT | NIEDRIG (<50%) | Unzureichende Informationen gesammelt |
| Build-Datum überprüfen |
| Nicht standardmäßige RSC-Implementierung | Benutzerdefiniertes Framework | Manuelle Überprüfung |
| Szenario | Warum es passiert | Abhilfe |
|---|
| Version aus Bundles entfernt | Produktionsoptimierung | Build-Manifeste prüfen |
| WAF blockiert Sondierungen | Sicherheitskontrollen | Von erlaubter IP testen |
| RSC auf nicht standardmäßigen Pfaden | Benutzerdefiniertes Routing | Pfad-Wortliste erweitern |
| SPA ohne SSR-Indikatoren | Nur-Client-Rendering | API-Endpunkte prüfen |
| CDN Caching | Kann veraltete Versionsinformationen ausliefern |
| Load Balancers | Kann zu verschiedenen App-Versionen weiterleiten |
| Kubernetes/Containers | Jeder Pod kann sich unterscheiden |
| Feature Flags | RSC kann bedingt aktiviert sein |