Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2025-29927 — Análisis en profundidad y PoC para CVE-2025-29927, una vulnerabilidad de omisión de autorización en middleware de Next.js a través del encabezado x-middleware-subrequest. Incluye plantillas de Nuclei y un script de escaneo masivo para pruebas. | Kitploit
Herramientas/GitHubGitHub/iteride/cve-2025-29927
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónPapers e InvestigaciónAprendizaje y Educación
GitHubiteride/cve-2025-29927

CVE-2025-29927

Análisis en profundidad y PoC para CVE-2025-29927, una vulnerabilidad de omisión de autorización en middleware de Next.js a través del encabezado x-middleware-subrequest. Incluye plantillas de Nuclei y un script de escaneo masivo para pruebas.

Ver Repositorio
18hace 1 añoAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2025-29927

Introducción

Este documento presenta la investigación de la vulnerabilidad CVE-2025-29927, que afecta al mecanismo Middleware en el framework Next.js.
Next.js es un popular framework de código abierto de Vercel para desarrollar aplicaciones basadas en React. Admite renderizado del lado del servidor, generación estática y un sistema flexible de middleware, utilizado para enrutamiento, redirecciones, encabezados de seguridad y verificación de permisos de acceso.

En marzo de 2025 se identificó una vulnerabilidad crítica CVE-2025-29927, relacionada con el procesamiento del encabezado interno de subpeticiones.
La esencia del problema es la posibilidad de evitar las comprobaciones de autorización en aplicaciones donde el control de acceso está implementado precisamente en el middleware, mediante la inserción de un valor especial en el encabezado HTTP x-middleware-subrequest. Si la seguridad depende únicamente del middleware, un atacante puede acceder a rutas o datos protegidos.

Versiones afectadas de Next.js y correcciones (según fuentes públicas y materiales oficiales):

  • 11.1.4 ≤ versión < 12.3.5
  • 13.0.0 ≤ versión < 13.5.9
  • 14.0.0 ≤ versión < 14.2.25
  • 15.0.0 ≤ versión < 15.2.3

Las correcciones están disponibles en los lanzamientos 12.3.5 / 13.5.9 / 14.2.25 / 15.2.3.

Next.js se usa ampliamente en producción; una vulnerabilidad que afecta la capa de middleware (a menudo utilizada para autenticación/autorización y políticas de seguridad) conlleva un alto riesgo práctico.


Objetivo del informe

Analizar paso a paso la vulnerabilidad y documentar el ciclo completo de investigación:

Recopilación y estructuración de materiales.
Sistematizar las fuentes públicas sobre CVE-2025-29927; exponer la esencia del defecto, las condiciones de activación y las versiones/parches confirmados.

Determinación de CPE y condiciones de configuración.
Proporcionar una lista de CPE/versiones y describir las configuraciones en las que la vulnerabilidad es reproducible (por ejemplo, despliegue self-hosted y autorización a nivel de middleware).

Demostración segura.
Preparar una demo reproducible en un entorno de prueba (sin acciones destructivas) que confirme la evasión del middleware en versiones vulnerables.

Metodologías de verificación masiva.
Describir e implementar tres enfoques seguros:

  • nuclei (modo activo con impacto minimizado),
  • nuclei (modo pasivo basado en versiones/indicadores indirectos),
  • script propio en Python/Go (verificación activa multi-hilo en hosts de prueba).

Esencia de la vulnerabilidad

middleware

  • Causa raíz. En Next.js, el encabezado interno x-middleware-subrequest se utiliza para rastrear subpeticiones internas y evitar recursividad en el middleware. En las ramas vulnerables, los clientes externos pueden inyectar este encabezado con un valor «esperado» y el runtime omite la ejecución del middleware, pasando la solicitud directamente al manejador de la ruta.

  • Rol del encabezado. El encabezado x-middleware-subrequest fue diseñado originalmente como un indicador interno de que la solicitud HTTP actual fue iniciada por el propio framework como una subpetición intermedia, no directamente por el usuario.
    Es necesario para el correcto funcionamiento de los mecanismos internos de Next.js: además del enrutamiento, esta bandera ayuda a evitar la recursividad infinita «marcando» cada capa intermedia invocada.
    Pero precisamente esta lógica generó un agujero de seguridad no intencionado: un cliente que agregue dicho encabezado puede hacer que el sistema trate su solicitud como interna y, por lo tanto, eluda las comprobaciones de autorización.

  • Evolución de la lógica.

    • En versiones anteriores, el encabezado se interpreta como una lista de valores separados por dos puntos, y el mecanismo lo compara con el nombre/ruta del middleware activo.
    • En ramas más recientes se agregó una protección contra la recursividad infinita en forma de un contador de profundidad; al alcanzar un límite (por defecto 5), el middleware también se omite. Este mecanismo puede ser engañado si el encabezado se forma «como si» la cadena de subpeticiones ya hubiera agotado el límite.

Impacto

  • Confidencialidad e integridad. Acceso no autorizado a páginas protegidas o API cuando el control de acceso se implementa solo a nivel de middleware; posible modificación de datos a través de endpoints protegidos.
  • Disponibilidad. Efectos secundarios como cache poisoning pueden provocar un almacenamiento en caché incorrecto y degradación de la disponibilidad en ciertas configuraciones.

CPE y condiciones de configuración

CPE oficiales (CPE 2.3)

Los registros actuales de NVD indican el producto Vercel Next.js con el software objetivo node.js. Para las ramas vulnerables se aplican las siguientes configuraciones (rangos de versiones definidos a nivel de configuración CPE en NVD):

URI CPERango de versiones vulnerable
cpe:2.3:a:vercel:next.js:*:*:*:*:*:node.js:*:*11.1.4 ≤ v < 12.3.5
cpe:2.3:a:vercel:next.js:*:*:*:*:*:node.js:*:*13.0.0 ≤ v < 13.5.9
cpe:2.3:a:vercel:next.js:*:*:*:*:*:node.js:*:*14.0.0 ≤ v < 14.2.25
cpe:2.3:a:vercel:next.js:*:*:*:*:*:node.js:*:*15.0.0 ≤ v < 15.2.3

Nota: en la descripción del CVE también se indica que, en general, «desde 11.1.4 hasta 12.3.5 / 13.5.9 / 14.2.25 / 15.2.3» la vulnerabilidad es reproducible si se cumplen las condiciones siguientes.

Condiciones de relevancia en entorno de producción

  • El control de acceso (autenticación/autorización) está implementado en el middleware y no se duplica en los manejadores/backend.
  • Despliegue self-hosted (por ejemplo, next start, compilación con output: 'standalone') o cualquier entorno donde el middleware se ejecute en las solicitudes entrantes sin filtrado perimetral de encabezados internos.
  • Ausencia de mecanismos externos que descarten las solicitudes de usuario con x-middleware-subrequest (por ejemplo, reglas WAF).

Mecanismo interno de x-middleware-subrequest

Para evitar la recursividad infinita del middleware, el runtime genera y lee el encabezado interno:

  1. El valor del encabezado se interpreta como una cadena con elementos separados por dos puntos : — se obtiene una matriz de «subpeticiones».
  2. Luego el runtime verifica:
    • si el nombre/ruta del middleware actual aparece en esa matriz (en ramas antiguas, esto llevaba a la omisión inmediata mediante NextResponse.next()),
    • o si se ha alcanzado la profundidad máxima de recursión (en ramas nuevas se aplica un límite, por defecto 5), y entonces el middleware también se omite.
  3. En los parches, para proteger contra la falsificación, se agregó un identificador de subpetición separado (x-middleware-subrequest-id), vinculado a la sesión actual del proceso; si no coincide, el x-middleware-subrequest entrante se limpia en el lado del servidor.

Método de explotación

El atacante envía una solicitud HTTP a la aplicación Next.js objetivo, agregando el encabezado interno x-middleware-subrequest.
En el valor se indica la ruta al archivo del middleware — por ejemplo pages/_middleware, middleware o src/middleware.
El valor necesario depende de la versión de Next.js utilizada y de la estructura del proyecto.

Cuando dicha solicitud llega a la aplicación, la lógica interna del framework la interpreta como una subpetición interna y asume que la capa de middleware ya se ha ejecutado.
Como resultado, las comprobaciones de autenticación y autorización que normalmente ocurren en el middleware, se omiten en la práctica.


PoC / Exploit

Descargar herramienta