
Proof-of-Concept-Exploit für Next.js CVE-2025-66478, der RCE durch unsichere Deserialisierung und Prototype Pollution in Server Actions demonstriert. Enthält eine verwundbare Anwendung und ein Python-Exploit-Skript für Sicherheitsforschung.
Dieses Repository enthält einen Proof of Concept (PoC) zur Reproduktion und Erforschung der Next.js-Schwachstelle CVE-2025-66478. Es besteht aus einer verwundbaren Next.js-Anwendung und einem Python-Exploit-Skript zum Testen der Schwachstelle.
Hierbei handelt es sich um eine Remote Code Execution (RCE)-Schwachstelle, die bei der Verarbeitung von Next.js Server Actions auftritt.
Kernpunkte:
__proto__-Eigenschaft.| Element | Beschreibung |
|---|
| CVE-ID | CVE-2025-66478 |
| Typ | Remote Code Execution (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).awaiten, wird der bösartige JavaScript-Code ausgeführt, der in die then-Methode injiziert wurde (z. B. child_process.execSync).sequenceDiagram
participant Attacker
participant Server as Next.js Server
Attacker->>Server: POST / (JSON with "__proto__": {"then": ...})
Note right of Server: JSON Parsing Pollutes Object.prototype
Server->>Server: Application Logic encounters an Object
rect rgb(200, 150, 150)
Note right of Server: "Thenable" Check Gadget
Server->>Server: Checks: typeof obj.then === 'function'?
Server-->>Server: YES (due to pollution)
end
Server->>Server: Await/Execute malicious .then()
Note right of Server: Malicious JS Code Runs (RCE)
Server-->>Attacker: Response (Action Redirect / Error info)Folglich führt der Server bei der Verarbeitung dieses manipulierten Promise den vom Angreifer injizierten JavaScript-Code aus, was zur Ausführung von Systembefehlen führen kann. Das enthaltene main.py ist ein Beispielskript, das dieses Angriffsszenario reproduziert.
Diese Schwachstelle betrifft Next.js-Anwendungen, die den App Router verwenden.
Behobene Versionen:
next.js/: Beispielcode einer verwundbaren Next.js-Webanwendung.exploit/: In Python geschriebenes Exploit-Skript (main.py).Zuerst müssen Sie den Ziel-Next.js-Server ausführen.
Navigieren Sie in das Verzeichnis next.js:
cd next.js
Installieren Sie die Abhängigkeiten:
npm install
# You can also use yarn or pnpm.
Starten Sie den Entwicklungsserver:
npm run dev
Stellen Sie sicher, dass Sie http://localhost:3000 über Ihren Browser erreichen können.
Jetzt können Sie die Schwachstelle mithilfe des Python-Skripts testen.
Navigieren Sie vom Projektstamm aus in das Verzeichnis exploit:
cd exploit
(Optional) Die Verwendung einer virtuellen Umgebung wird empfohlen:
python3 -m venv venv
source venv/bin/activate # For Windows: venv\Scripts\activate
Installieren Sie die benötigten Bibliotheken:
Das Modul requests wird benötigt.
pip install requests
Führen Sie das Skript aus:
python main.py
Standardmäßig ist die lokale Adresse (http://localhost:3000) das Ziel. Um eine andere Adresse zu testen, verwenden Sie die Option --url:
python main.py --url http://target-ip:3000
Dieser Code wird ausschließlich zu Zwecken der Sicherheitsforschung und zu Bildungszwecken bereitgestellt. Die Verwendung dieses Tools gegen Systeme oder Netzwerke ohne vorherige Genehmigung ist illegal, und der Benutzer ist allein für alle Probleme verantwortlich, die aus einer solchen Verwendung entstehen.