Introducción
Next.js ha surgido como uno de los frameworks de React más populares para construir aplicaciones web modernas, ofreciendo potentes características como el renderizado del lado del servidor, rutas de API y capacidades de middleware. Sin embargo, se ha descubierto recientemente una vulnerabilidad crítica (CVE-2025-29927) que afecta la funcionalidad del middleware, lo que podría permitir a los atacantes eludir por completo los mecanismos de autenticación y autorización.
Esta vulnerabilidad es particularmente preocupante porque el middleware se utiliza a menudo para implementar comprobaciones de autenticación, control de acceso basado en roles y otras medidas de seguridad. Cuando se ve comprometido, puede conducir a un acceso no autorizado a recursos protegidos, exposición de datos confidenciales y, potencialmente, la toma de control completa de la aplicación.

Vulnerabilidad CVE-2025-29927 Explicada
CVE-2025-29927 es una vulnerabilidad crítica en Next.js que permite a los atacantes eludir por completo las comprobaciones de autorización basadas en middleware. La vulnerabilidad proviene de un fallo de implementación en la forma en que Next.js maneja ciertas cabeceras HTTP en las solicitudes.
Cuando una solicitud incluye una cabecera x-middleware-prefetch
especialmente diseñada, la ejecución del middleware puede ser eludida por completo, permitiendo el acceso directo a rutas protegidas. Esta vulnerabilidad afecta a las aplicaciones que dependen únicamente del middleware para implementar controles de autenticación y autorización.
Detalles Técnicos de CVE-2025-29927
La vulnerabilidad explota la forma en que Next.js procesa las solicitudes de prefetch. Al establecer la cabecera x-middleware-prefetch
en 1
, los atacantes pueden hacer que Next.js trate la solicitud como una operación de prefetch, lo que bajo ciertas condiciones elude las comprobaciones de seguridad en el middleware.
Un atacante podría explotar esta vulnerabilidad con una simple solicitud HTTP como:
GET /dashboard HTTP/1.1
Host: vulnerable-app.com
x-middleware-prefetch: 1
Incluso si el middleware contiene código para redirigir a los usuarios no autenticados fuera de /dashboard
, esta solicitud eludiría esa comprobación y potencialmente obtendría acceso al panel de control protegido.
El enlace de Github al problema de seguridad: https://github.com/vercel/next.js/security/advisories/GHSA-f82v-jwr5-mffw
Prueba de Concepto
La explotación es sencilla y no requiere herramientas especiales más allá de la capacidad de enviar solicitudes HTTP personalizadas. Usando una herramienta como curl, un atacante podría ejecutar:
curl -H "x-middleware-prefetch: 1" https://vulnerable-app.com/dashboard
Esta simple solicitud podría potencialmente eludir las comprobaciones de autenticación y obtener acceso al contenido protegido.
¿Qué Versiones de Next.js Están Afectadas?
Esta vulnerabilidad afecta a las versiones de Next.js hasta:
- 13.4.9 para Next.js 13
- 14.0.4 para Next.js 14
Las aplicaciones son vulnerables si:
- Usan middleware para comprobaciones de autenticación o autorización
- Se ejecutan en versiones afectadas de Next.js
- No tienen comprobaciones de autenticación adicionales del lado del servidor o a nivel de API
La vulnerabilidad es particularmente preocupante para las aplicaciones implementadas en plataformas sin servidor como Vercel, donde el middleware es a menudo el método principal para implementar la autenticación debido a sus capacidades de función Edge.
Cómo Detectar Si Tu Aplicación Next.js Es Vulnerable
Para determinar si tu aplicación es vulnerable, puedes:
- Comprobar tu versión de Next.js
- Probar rutas protegidas con la cabecera
x-middleware-prefetch: 1
- Revisar la implementación del middleware para la dependencia exclusiva del middleware de Next.js para los controles de seguridad
El impacto de esta vulnerabilidad varía dependiendo de lo que esté protegiendo el middleware:
- Impacto Bajo: Middleware utilizado para características no relacionadas con la seguridad como pruebas A/B o analíticas
- Impacto Medio: Middleware que protege contenido no sensible
- Impacto Alto: Middleware que protege datos sensibles, paneles de administración o información financiera
- Impacto Crítico: Middleware como la única capa de autenticación para toda la aplicación
Qué Debes Hacer Ante el Problema Crítico de Seguridad de Next.js
1. Actualizar a Versiones Parcheadas
La mitigación más sencilla es actualizar a las versiones parcheadas:
- Next.js 13.4.10 o posterior para Next.js 13
- Next.js 14.0.5 o posterior para Next.js 14
2. Implementar Defensa en Profundidad
No confíes únicamente en el middleware para la seguridad:
// pages/dashboard.js or app/dashboard/page.js
export async function getServerSideProps(context) {
const session = await getSession(context);
if (!session) {
return {
redirect: {
destination: '/login',
permanent: false,
},
};
}
return {
props: { session },
};
}
3. Aplicar Validación de Cabecera Personalizada
Añade validación en tu middleware para rechazar solicitudes con cabeceras sospechosas:
export function middleware(request) {
// Reject requests with x-middleware-prefetch header
if (request.headers.get('x-middleware-prefetch')) {
return new NextResponse(null, { status: 403 });
}
// Regular middleware logic
// ...
}
4. Usar Edge Config para Controlar el Acceso
Para las aplicaciones implementadas en Vercel, considera usar Edge Config para mantener una lista de bloqueo de IPs o patrones de solicitud potencialmente maliciosos.
Cómo Migrar de Vercel a Cloudflare

Si estás considerando mover tu aplicación Next.js de Vercel a Cloudflare para mejorar la seguridad.
El proyecto se puede encontrar en Github: https://github.com/ygwyg/diverce, y aquí tienes una guía paso a paso sobre cómo usar esta herramienta para migrar de Next.js a Cloudflare:
1. Prepara Tu Aplicación Next.js
Primero, asegúrate de que tu aplicación sea compatible con Cloudflare Pages:
# Install the Cloudflare Pages adapter
npm install @cloudflare/next-on-pages
Actualiza tu next.config.js
:
// next.config.js
/** @type {import('next').NextConfig} */
const nextConfig = {
// Cloudflare Pages compatible settings
output: 'export',
images: {
unoptimized: true,
},
// Existing configuration...
};
module.exports = nextConfig;
2. Configura Cloudflare Pages
- Crea una cuenta de Cloudflare si no tienes una
- Navega al Panel de Control de Cloudflare → Pages
- Conecta tu repositorio de GitHub/GitLab
- Configura los ajustes de compilación:
- Comando de compilación:
npm run build
- Directorio de salida de la compilación:
.next
- Establece las variables de entorno de tu proyecto Vercel
3. Implementa Cloudflare Workers para la Funcionalidad del Middleware
Crea un archivo functions/_middleware.js
en tu proyecto:
export async function onRequest({ request, next, env }) {
// Get the URL from the request
const url = new URL(request.url);
// Authentication logic
// Example: Check authentication token
const token = request.headers.get('Authorization');
if (!token && url.pathname.startsWith('/dashboard')) {
return Response.redirect(new URL('/login', request.url), 302);
}
// Continue to the next middleware or the destination
return await next();
}
4. Configura los Ajustes de DNS
Actualiza tus ajustes de DNS para que apunten a Cloudflare:
- En el Panel de Control de Cloudflare, ve a tu dominio
- Añade un registro CNAME que apunte a tu implementación de Cloudflare Pages
- Asegúrate de que SSL/TLS esté configurado en "Full" o "Full (Strict)"
5. Implementa Medidas de Seguridad Adicionales
Aprovecha las características de seguridad de Cloudflare:
- Habilita Cloudflare WAF (Web Application Firewall)
- Configura reglas de limitación de velocidad
- Configura Cloudflare Access para capas de autenticación adicionales
- Usa Cloudflare Workers para lógica de seguridad personalizada
6. Prueba y Soluciona Problemas
Antes de migrar completamente:
- Implementa en un entorno de pruebas
- Prueba todas las rutas y funcionalidades
- Verifica que las integraciones de API sigan funcionando
- Comprueba si hay alguna limitación específica de Cloudflare
Conclusión
CVE-2025-29927 representa una seria vulnerabilidad en el middleware de Next.js que puede socavar por completo la seguridad de la aplicación. La capacidad de eludir la autenticación basada en middleware con una sola cabecera HTTP demuestra por qué la defensa en profundidad es crucial en la seguridad de las aplicaciones web.
Para proteger tus aplicaciones Next.js:
- Actualiza a las versiones parcheadas inmediatamente
- Implementa múltiples capas de autenticación
- No confíes únicamente en el middleware para los controles de seguridad
- Considera implementar reglas WAF para bloquear cabeceras sospechosas
- Prueba regularmente tu aplicación en busca de vulnerabilidades de seguridad
Si estás considerando alejarte de Vercel, Cloudflare ofrece características de seguridad robustas que pueden ayudar a mitigar vulnerabilidades similares en el futuro. Al aprovechar la red perimetral de Cloudflare, las capacidades de WAF y la plataforma Workers, puedes construir una aplicación Next.js más segura y resistente.
Recuerda que la seguridad es un proceso continuo: mantenerse informado sobre nuevas vulnerabilidades y mantener las dependencias actualizadas es esencial para proteger tus aplicaciones y los datos de los usuarios.
