CVE-2025-29927
Introducción

En este write-up se documenta la explotación de la vulnerabilidad CVE-2025-29927.
🚨 Nueva vulnerabilidad crítica en Next.js (CVE-2025-29927) 🚨
Recientemente se ha identificado un bypass de autorización en aplicaciones desarrolladas con Next.js, que permite a un atacante eludir controles de autenticación y acceder a recursos sensibles mediante el encabezado interno x-middleware-subrequest.
Este fallo afecta a versiónes anteriores a 12.3.5, 13.5.9, 14.2.25 y 15.2.3, por lo que es fundamental aplicar actualizaciones cuanto antes para mitigar el riesgo. En este post te comparto un análisis práctico de cómo funciona la vulnerabilidad y un laboratorio donde se puede experimentar de forma controlada.
🔒 Mantenerse al día con estos incidentes es clave para la seguridad de nuestras aplicaciones web.
Mostramos página web del sitio
En esta imagen se puede ver una página de login la cual en la URL se puede ver un redirect a ’/’, si no te autenticas.

Aquí vamos a hacer login con un email y password, erróneos para ver su reacción, y ver el fallo de autenticación.
Ahora hacemos un comprobación usando wappalyzer acerca de la versión de nextjs que usa y así confirmamos que es vulnerable.


Aquí lo vamos a ver mejor interceptando, petición con burp suite y vemos que si vamos a barra nos redirige al login, pero con esta vulnerabilidad vemos que usando el middleware podemos bypassear ese login añadiendo una cabecera.

Aquí ahora lo que vamos a hacer sera anadir la cabecera x-middleware-subrequest y vemos como ya nos a mostrado la web, lo cual ha sido este pequeño fallo de la autenticación de nextjs, el cual usa middleware.

De Acuerdo, ahora que ya hemos podido acceder vemos que hay una página llamada eventos, la cual probamos de acceder y vemos que hay una flag, y el paso seria lo mismo ir donde / poner /events, y la misma cabecera.

Por ultimo, tambien consegui acceder a un subdominio que el cual posee la misma vulnerabilidad, puesto que tiene autenticación y consegui acceder a la página de eventos.

Y ahora podemos acceder a /events/create y vemos que aparece una opcion para crear retos.

En pocas palabras: Next.js trataba nuestra petición como si fuese una sub-request interna, confiando en algo que el cliente podía falsificar fácilmente.
Analogía para entenderlo
Este caso me recordó a cuando en una discoteca usaban pulseras para los clientes VIP. Si alguien conseguía falsificar una de esas pulseras, podía entrar sin pasar ningún control. Aquí pasa lo mismo: al no validar bien esa cabecera, cualquiera podía “ponerse la pulsera” y acceder donde no debía.
Otra forma de verlo es como los antiguos DNIs en papel: si alguien fotocopiaba y alteraba los datos, podía hacerse pasar por otra persona. En este caso, la cabecera era ese “documento falso” que engañaba al sistema.
Conclusión
La vulnerabilidad CVE-2025-29927 demuestra cómo un detalle aparentemente pequeño (una cabecera interna) puede abrir la puerta a fallos críticos de seguridad.
✅ Solución: actualizar Next.js a las versiónes parcheadas y filtrar/ignorar cabeceras internas en el proxy o servidor.
Aprender este tipo de fallos en un laboratorio controlado no solo ayuda a reforzar nuestros conocimientos, sino que también nos recuerda la importancia de mantener buenas prácticas de seguridad en todo el ciclo de desarrollo.