
Exploit de preuve de concept pour Next.js CVE-2025-66478, démontrant une exécution de code à distance (RCE) via une désérialisation non sécurisée et une pollution de prototype dans les Server Actions. Inclut une application vulnérable et un script d'exploit Python pour la recherche en sécurité.
Ce dépôt contient une preuve de concept (PoC) pour reproduire et étudier la vulnérabilité CVE-2025-66478 de Next.js. Il se compose d'une application Next.js vulnérable et d'un script d'exploitation Python pour tester la vulnérabilité.
Il s'agit d'une vulnérabilité d'exécution de code à distance (RCE) survenant lors du traitement des Server Actions de Next.js.
Points clés :
__proto__.| Élément | Description |
|---|
| Identifiant CVE | CVE-2025-66478 |
| Type | Exécution de code à distance (RCE) |
| Cause racine | Désérialisation non sécurisée dans le protocole Flight du RSC |
| Sévérité (CVSS) | 10.0 (Critique) |
| Impact | Exécution de commandes système arbitraires sur le serveur |
__proto__.Object.prototype.then dans tous les objets. La logique de Next.js identifie à tort ces objets comme des Promesses (Thenables).await sur cette « fausse promesse », le code JavaScript malveillant injecté dans la méthode then est exécuté (par exemple, 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)Par conséquent, lorsque le serveur traite cette promesse manipulée, il exécute le code JavaScript injecté par l'attaquant, ce qui peut conduire à l'exécution de commandes système. Le fichier main.py inclus est un exemple de code qui reproduit ce scénario d'attaque.
Cette vulnérabilité affecte les applications Next.js utilisant l'App Router.
Versions corrigées :
next.js/ : exemple de code d'application web Next.js vulnérable.exploit/ : script d'exploitation écrit en Python (main.py).Tout d'abord, vous devez exécuter le serveur Next.js cible.
Accédez au répertoire next.js :
cd next.js
Installez les dépendances :
npm install
# You can also use yarn or pnpm.
Démarrez le serveur de développement :
npm run dev
Vérifiez que vous pouvez accéder à http://localhost:3000 via votre navigateur.
Vous pouvez maintenant tester la vulnérabilité à l'aide du script Python.
Accédez au répertoire exploit depuis la racine du projet :
cd exploit
(Facultatif) L'utilisation d'un environnement virtuel est recommandée :
python3 -m venv venv
source venv/bin/activate # For Windows: venv\Scripts\activate
Installez les bibliothèques nécessaires :
Le module requests est requis.
pip install requests
Exécutez le script :
python main.py
Par défaut, il cible l'adresse locale (http://localhost:3000). Pour tester une autre adresse, utilisez l'option --url :
python main.py --url http://target-ip:3000
Ce code est fourni uniquement à des fins de recherche en sécurité et d'éducation. L'utilisation de cet outil contre des systèmes ou des réseaux sans autorisation préalable est illégale, et l'utilisateur est seul responsable de tout problème découlant d'une telle utilisation.