Tornar al blog
Desenvolupament

CVE-2025-29927: bypass d'autorització a Next.js self-hosted

El CVE-2025-29927 permet saltar-se l'autenticació de Next.js amb una capçalera HTTP. Per què molts self-hosted encara hi són exposats.

Blurtek
6 min lectura220 palabras

El CVE-2025-29927 permet saltar-se l'autenticació de Next.js afegint la capçalera x-middleware-subrequest a qualsevol petició HTTP. Afecta versions anteriors a 12.3.5, 13.5.9, 14.2.25 i 15.2.3, amb CVSS 9.1 (NVD). No és execució remota de codi: és un bypass d'autorització (CWE-284). Molts desplegaments self-hosted encara hi són exposats mesos després del pedaç.

01

Què és realment el CVE-2025-29927 (i per què no és un RCE)

El CVE-2025-29927 (GHSA-f82v-jwr5-mffw) és CWE-284, control d'accés inadequat, no execució de codi arbitrari. L'atacant no obté una shell: aconsegueix que el servidor el tracti com si ja hagués superat un control que mai va passar. La puntuació 9.1 respon a la facilitat d'explotació —xarxa, sense autenticació, complexitat baixa—, no a la gravetat del payload.

02

El mecanisme: per què existeix x-middleware-subrequest

Next.js utilitza aquesta capçalera internament per evitar bucles infinits quan el middleware dispara una subpetició que tornaria a passar pel mateix middleware. El fallo és que aquesta capçalera viatjava com un header HTTP normal, sense cap validació que garantís que només el runtime intern la podia escriure. Qualsevol client extern podia fabricar-la a mà i aconseguir que el middleware se saltés per complet.

03

Self-hosted vs Vercel gestionat: la veritat incòmoda

La infraestructura d'edge de Vercel normalitza les capçaleres internes abans que arribin al codi de l'aplicació, cosa que neutralitzava bona part dels intents d'injecció des de fora. Els desplegaments self-hosted —Docker, Node standalone, nginx genèric— no tenen aquesta capa intermèdia, i per això moltes instàncies segueixen exposades sense que ningú se n'hagi adonat.

  • Comprova la versió de Next.js a cada desplegament actiu, no només al repositori.
  • Actualitza a la versió corregida corresponent a la teva branca major.
  • Si no pots actualitzar ja, bloqueja la capçalera x-middleware-subrequest al proxy invers.
  • Replica la lògica d'autorització del middleware a cada route handler que serveixi dades sensibles.

Si tens un desplegament Next.js self-hosted i no saps si el middleware és l'única barrera d'autorització, a Blurtek revisem la configuració abans que el problema el trobi algú altre.

Solicitar diagnóstico