CVE-2025-29927: omisión de autorización en el middleware de Next.js
23 de marzo de 2025
0 minutos de lectura
CVE-2025-29927: omisión de autorización en el middleware de Next.js
El viernes 21 de marzo de 2025, a las 9:00 a. m. UTC, se publicó un aviso de seguridad identificado como CVE-2025-29927. En él se reportó una vulnerabilidad crítica, con una gravedad de 9.1, en las aplicaciones convencionales de Next.js.
Versiones de Next.js consideradas vulnerables:
Versiones 15.x de Next.js anteriores a 15.2.3
Versiones 14.x de Next.js anteriores a 14.2.25
Versiones 13.x de Next.js anteriores a 13.5.9
Todas las versiones de Next.js hasta la versión corregida 13.5.9 se consideran vulnerables, pero el anuncio de vulnerabilidad de Vercel señaló que posiblemente se publique próximamente una solución temporal o una corrección retroportada.
Recomendamos a todos los desarrolladores actualizar e implementar la versión más reciente de Next.js que incluya una corrección para evitar sufrir una omisión crítica de autorización y otras formas de eludir la lógica del middleware.
Alcance del impacto de CVE-2025-29927
Vercel anunció que esta vulnerabilidad no afecta a las aplicaciones alojadas en su plataforma de hosting.
Netlify, otra plataforma popular de hosting web, anunció que esta vulnerabilidad no afecta a las aplicaciones implementadas en Netlify.
Cloudflare, que se usa con frecuencia como CDN y también puede alojar aplicaciones de Next.js, permite a los desarrolladores activar una regla de WAF administrada como solución temporal opcional.
Acerca del middleware de Next.js
El concepto de middleware de Next.js está tomado del framework de aplicaciones web Express. La idea del middleware consiste en un predicado HTTP que puede modificar, redirigir y decidir cómo se comportará una solicitud HTTP entrante a un servidor Node.js.
La definición de middleware de Next.js sigue una firma de función similar a la de Express: recibe un objeto de solicitud HTTP (NextRequest) y devuelve un NextResponse para forzar un comportamiento específico, como devolver una respuesta HTTP 401 Unauthorized, una redirección HTTP o permitir que la lógica de manejo de solicitudes continúe mediante una directiva NextResponse.next().
Como se menciona en la documentación oficial de Next.js, los desarrolladores suelen usar middleware para tomar decisiones de autenticación y autorización, por ejemplo, validar una cookie o un JWT en la solicitud antes de permitir el acceso a rutas restringidas y protegidas.

Omisión de autorización en Next.js
Los investigadores de seguridad Allam Rachid y Allam Yasser, quienes estudiaron y reportaron esta vulnerabilidad (y vulnerabilidades anteriores de Next.js), demostraron cómo los clientes externos pueden eludir la lógica del middleware al enviar solicitudes a rutas protegidas administradas por Next.js mediante el middleware.
Para eludir el middleware, los clientes deben especificar el siguiente encabezado HTTP en las solicitudes:
La lógica de Next.js administra el encabezado HTTP x-middleware-subrequest para decidir cómo y cuándo permitir que las solicitudes pasen sin atravesar la lógica del middleware, y así evitar bucles infinitos. Sin embargo, esa lógica es defectuosa en las versiones vulnerables de Next.js mencionadas anteriormente y permite que cualquier solicitud entrante a un servidor Next.js eluda el middleware si el encabezado HTTP x-middleware-subrequest está presente con un valor específico.
Nota para reproducir el problema: el valor exacto del encabezado HTTP varía según la versión de Next.js.
¿Me afecta la omisión de autorización de Next.js CVE-2025-29927?
Los desarrolladores que usan Snyk Open Source para detectar vulnerabilidades en las dependencias desde su IDE, Git SCM, CI o el flujo de monitoreo de Snyk recibirán una alerta sobre CVE-2025-29927, como se muestra en este repositorio de GitHub importado a los proyectos de Snyk:

Los detalles de la vulnerabilidad de Next.js en Snyk indican una ruta de actualización (por ejemplo, next@14.2.25, como en mi caso), y los usuarios de Snyk también pueden corregir rápidamente la vulnerabilidad con un clic (o elegir automatizar todo el proceso):

Es probable que te afecte y seas vulnerable a una omisión de autorización en Next.js si:
Usas versiones de Next.js de la 11.1.4 a la 13.5.6
Alojas por tu cuenta versiones vulnerables de Next.js (14.x < 14.2.25 o 15.x < 15.2.3)
Corrección de CVE-2025-29927 y soluciones temporales
Hay correcciones o medidas de mitigación disponibles, según las versiones de Next.js que uses y dónde las implementes:
Actualiza a una versión corregida de Next.js mediante las ramas más recientes de las versiones 14.x o 15.x.
Aplica una regla de firewall que impida que las solicitudes HTTP externas con el encabezado x-middleware-subrequest lleguen a la infraestructura interna de la aplicación Next.js.
Las implementaciones en Vercel y Netlify no se ven afectadas, según lo declarado por estas plataformas de hosting en la nube
Explora el estado de la seguridad del código abierto
Conoce las tendencias y los enfoques actuales sobre el software de código abierto y la seguridad de la cadena de suministro.
