
Proof-of-concept-Exploit-Demo für CVE-2025-66478 mit Node.js
Dieses Repository enthält Proof-of-Concept (PoC)-Code zur Reproduktion und Untersuchung der Next.js CVE-2025-66478-Sicherheitslücke. Es enthält eine verwundbare Next.js-Anwendung und ein Node.js-Exploit-Skript zum Testen der Schwachstelle.
Englisch · 中文
Hierbei handelt es sich um eine Remote Code Execution (RCE)-Schwachstelle, die während der Verarbeitung von Next.js Server Actions auftritt.
Kernpunkte:
__proto__-Eigenschaft.| Punkt | Beschreibung |
|---|
| CVE-ID | CVE-2025-66478 |
| Typ | Remotecodeausführung (RCE) |
| Grundursache | Unsichere Deserialisierung im RSC Flight-Protokoll |
| Schweregrad (CVSS) | 10.0 (Kritisch) |
| Auswirkung | Ausführung beliebiger Systembefehle auf dem Server |
__proto__.Object.prototype führt.then-Eigenschaft in alle Objekte. Die Next.js-Logik identifiziert diese Objekte fälschlicherweise als Promises (Thenables).await), wird der bösartige JavaScript-Code ausgeführt, der in die then-Methode injiziert wurde (z. B. child_process.execSync).sequenceDiagram
participant Attacker as Attacker
participant Server as Next.js Server
Attacker->>Server: POST / (JSON mit "__proto__": {"then": ...})
Note right of Server: JSON-Parsing verschmutzt Object.prototype
Server->>Server: Anwendungslogik trifft auf ein Objekt
rect rgb(200, 150, 150)
Note right of Server: "Thenable"-Prüfung Ausnutzungskette
Server->>Server: Prüfung: typeof obj.then === 'function'?
Server-->>Server: Ja (aufgrund der Verschmutzung)
end
Server->>Server: Await/Ausführen der bösartigen .then()
Note right of Server: Bösartiger JS-Code wird ausgeführt (RCE)
Server-->>Attacker: Antwort (Action-Weiterleitung / Fehlermeldung)Wenn der Server dieses manipulierte Promise verarbeitet, führt er den vom Angreifer injizierten JavaScript-Code aus, was zur Ausführung von Systembefehlen führen kann. Die enthaltene main.mjs ist ein Beispielcode zur Reproduktion dieses Angriffsszenarios.
Diese Schwachstelle betrifft Next.js-Anwendungen, die den App Router verwenden.
Behobene Versionen:
app/page.tsx: Beispielcode für die verwundbare Anwendung.exploit.mjs: Exploit-Ausführungsskript, geschrieben in Node.js.# Sie können auch yarn oder npm verwenden.
pnpm install
pnpm dev
Stellen Sie sicher, dass Sie über Ihren Browser auf http://localhost:3000 zugreifen können.
pnpm exploit
Standardmäßig wird die lokale Adresse (http://localhost:3000) angegriffen. Um eine andere Adresse zu testen, verwenden Sie die Option --url:
pnpm exploit --url http://target-ip:3000
Dieser Code dient ausschließlich Sicherheitsforschung und Bildungszwecken. Die Verwendung dieses Tools gegen Systeme oder Netzwerke ohne vorherige Genehmigung ist illegal, und die Benutzer tragen die volle Verantwortung für alle daraus resultierenden Probleme.