
Probar y analizar la vulnerabilidad CVE-2025-55182 en Next.js Server Actions.
Estado del proyecto: Experimental / Prueba de concepto
Este repositorio sirve como un entorno de investigación controlado y un marco de prueba de concepto (PoC) para analizar CVE-2025-55182. Demuestra una vulnerabilidad de contaminación de prototipos en el contexto de las Server Actions de Next.js, dirigida específicamente a operaciones inseguras de fusión recursiva.
La vulnerabilidad principal reside en una función de utilidad personalizada deepMerge implementada dentro de una Server Action de Next.js (syncConfiguration). La función carece de una sanitización adecuada para claves de objeto especiales, específicamente __proto__ y constructor. Esta deficiencia permite que un atacante no autenticado inyecte propiedades arbitrarias en el Object.prototype global.
En un runtime de Node.js del lado del servidor, la contaminación de prototipos exitosa puede provocar:
isAdmintoString o valueOf.child_process o motores de plantillas) para lograr la ejecución de código arbitrario.lab/next-app/: Una aplicación vulnerable Next.js 15 diseñada para simular la falla de seguridad.
src/app/actions.jsx: El código del lado del servidor que contiene la implementación vulnerable de deepMerge.exploits/: Scripts de automatización en Python para pruebas y explotación.
rce.py: Un script que automatiza la inyección de payloads JSON maliciosos para demostrar la contaminación del estado del servidor.get-shell.py: Una PoC avanzada que explora vectores de deserialización del RSC Flight Protocol.docs/PAYLOADS.md: Un documento de referencia con varios payloads JSON para pruebas y análisis manuales.Puedes ejecutar el laboratorio usando Docker (recomendado) o localmente.
Asegúrate de tener Docker y Docker Compose instalados.
docker-compose up --build
La aplicación estará disponible en http://localhost:3000.
Requiere Node.js 20+.
cd lab/next-app
npm install
npm run dev
La aplicación estará disponible en http://localhost:3000.
http://localhost:3000.docs/PAYLOADS.md (p. ej., el payload básico).Los scripts Python proporcionados permiten la verificación programática de la vulnerabilidad.
Requisito previo: Obtén el Next-Action ID desde la pestaña Network del navegador (busca un encabezado de solicitud POST Next-Action) o desde la salida del terminal del servidor.
docker exec -it exploit-runner bash
export ACTION_ID="your_action_id_here"
python3 rce.py "id"
pip install -r exploits/requirements.txt
export ACTION_ID="your_action_id_here"
python3 exploits/rce.py "id"
Nota: El script rce.py está configurado para demostrar la contaminación exitosa del estado. La ejecución completa de una shell depende de gadgets específicos del entorno, que pueden variar.
Este proyecto está destinado exclusivamente a fines educativos e investigación en seguridad.
No utilices el código ni las técnicas proporcionadas aquí en sistemas para los que no tengas permiso explícito por escrito. Los autores no se hacen responsables del mal uso o los daños causados por este material.