
Exploit de prueba de concepto para Next.js CVE-2025-66478, que demuestra RCE mediante deserialización insegura y contaminación de prototipos en Server Actions. Incluye una aplicación vulnerable y un script de exploit en Python para investigación de seguridad.
Este repositorio contiene una Prueba de Concepto (PoC) para reproducir e investigar la vulnerabilidad CVE-2025-66478 de Next.js. Consiste en una aplicación Next.js vulnerable y un script de explotación en Python para probar la vulnerabilidad.
Se trata de una vulnerabilidad de Ejecución Remota de Código (RCE) que ocurre durante el procesamiento de las Server Actions de Next.js.
Aspectos clave:
__proto__.| Elemento | Descripción |
|---|
| CVE ID | CVE-2025-66478 |
| Tipo | Ejecución Remota de Código (RCE) |
| Causa Raíz | Deserialización Insegura en el Protocolo de Vuelo RSC |
| Gravedad (CVSS) | 10.0 (Crítico) |
| Impacto | Ejecución arbitraria de comandos del sistema en el servidor |
__proto__.Object.prototype.then en todos los objetos. La lógica de Next.js identifica erróneamente estos objetos como Promesas (Thenables).await en esta "falsa Promise", se ejecuta el código JavaScript malicioso inyectado en el método then (por ejemplo, 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)En consecuencia, mientras el servidor procesa esta Promise manipulada, ejecuta código JavaScript inyectado por el atacante, lo que puede llevar a la ejecución de comandos del sistema. El archivo main.py incluido es un código de ejemplo que reproduce este escenario de ataque.
Esta vulnerabilidad afecta a las aplicaciones Next.js que utilizan el App Router.
Versiones Corregidas:
next.js/: Código de ejemplo de la aplicación web Next.js vulnerable.exploit/: Script de explotación escrito en Python (main.py).Primero, debes ejecutar el servidor Next.js objetivo.
Navega al directorio next.js:
cd next.js
Instala las dependencias:
npm install
# También puedes usar yarn o pnpm.
Inicia el servidor de desarrollo:
npm run dev
Verifica que puedas acceder a http://localhost:3000 desde tu navegador.
Ahora puedes probar la vulnerabilidad usando el script de Python.
Navega al directorio exploit desde la raíz del proyecto:
cd exploit
(Opcional) Se recomienda usar un Entorno Virtual:
python3 -m venv venv
source venv/bin/activate # Para Windows: venv\Scripts\activate
Instala las librerías necesarias:
Se requiere el módulo requests.
pip install requests
Ejecuta el script:
python main.py
Por defecto, apunta a la dirección local (http://localhost:3000). Para probar una dirección diferente, usa la opción --url:
python main.py --url http://target-ip:3000
Este código se proporciona únicamente con fines de investigación de seguridad y educativos. El uso de esta herramienta contra sistemas o redes sin permiso previo es ilegal, y el usuario es el único responsable de cualquier problema que surja de dicho uso.