Il framework open-source Next.JS ha una CVE con severità 9.1 che permette il bypass dell’autenticazione

22 hours ago 51

Recentemente, è stata scoperta una grave vulnerabilità nel framework Next.JS, sviluppato da Vercel, identificata come CVE-2025-29927, con un punteggio di severità CVSS di 9.1. Questa falla consente agli aggressori di bypassare i controlli di autenticazione implementati tramite middleware, permettendo l’accesso non autorizzato a risorse protette.
La scoperta di questa vulnerabilità ha suscitato preoccupazione nella comunità di sviluppatori e ha spinto Vercel a intraprendere azioni tempestive (ma non troppo) per mitigarne l’impatto.

Cos’è un middleware di autenticazione?

Un middleware di autenticazione è un componente software riutilizzabile, ormai presente in quasi tutti i framework, che gestisce l’accesso autenticato alle risorse web. Grazie a questo tipo di controllo il server lascia passare o blocca il caricamento di un determinato tipo di contenuti, che può essere accessibile solo avendo permessi, ruoli o autorizzazioni specifiche.

Il funzionamento è riassunto in questo schema e nell’esempio di codice successivo:

export function middleware(request: NextRequest) { const userToken = request.cookies.get('your-key')?.value; if(!userToken) { return NextResponse.redirect(new URL('/login',request.url)) } else { return NextResponse.redirect(new URL('/', request.url)) } }

In caso la richiesta sia autenticata e abbia la possibilità di accedere alla pagina web cercata, il middleware lascia passare la richiesta effettuata, altrimenti gestisce la risposta tramite un redirect dell’utente verso un’altra pagina.
È quindi importantissimo avere un corretto funzionamento di questo tipo di componente, che senza avere le opportune misure di sicurezza potrebbe essere abusato e portare a visualizzazione di contenuti che dovrebbero rimanere privati, come ad esempio la home di un utente, la pagina di amministratore di un e-commerce e molto altro.

Dove si trova la vulnerabilità?

Il problema risiede nell’header interno x-middleware-subrequest, utilizzato da Next.JS per prevenire richieste che potrebbero causare loop infiniti durante l’esecuzione del programma.
Manipolando questo header (cosa che può essere fatta da chiunque), un attaccante può attuare un bypass completo del middleware ed evitare l’esecuzione della parte di codice responsabile dei controlli di autorizzazione, ottenendo accesso a contenuti riservati senza le necessarie verifiche.

A quando il fix?

Al 29 marzo 2025, analizzando il commit direttamente dalle repo di Vercel possiamo vedere che è stata implementata una mitigation tramite l’aggiunta di un “secret” da usare in combinazione con l’header x-middleware-subrequest che deve essere impostato, altrimenti la richiesta viene scartata e il rispettivo header cancellato.

Il fix però è arrivato in ritardo: la vulnerabilità è stata segnalata il 27 febbraio e corretta il 18 marzo, un intervallo di quasi tre settimane che ha suscitato preoccupazione nella comunità degli sviluppatori. Inoltre, la situazione ha innescato tensioni tra aziende del settore, con scambi di accuse riguardo alla gestione della sicurezza, tanto che il CEO di Cloudflare Matthew Prince in un tweet si è soffermato sulla critica situazione di NextJS e il CEO di Vercel (la compagnia proprietaria di NextJS) Guillermo Rauch ha attaccato Cloudflare dicendo che loro sono stati la causa di uno degli attacchi informatici più gravi su ambiente cloud: Cloudbleed. ​

Next.JS è stato patchato? Lo stato di sicurezza di NextJS è il seguente, come specificato nel Github Advisory Database.

Affected VersionsPatched Versions
>= 13.0.0, < 13.5.913.5.9
>= 14.0.0, < 14.2.2514.2.25
>= 15.0.0, < 15.2.315.2.3
>= 11.1.4, < 12.3.512.3.5

Per mitigare il rischio, è fondamentale aggiornare Next.JS a una versione successiva a quelle elencate. Se l’aggiornamento immediato non è possibile, suggeriamo di bloccare le richieste che includono l’header x-middleware-subrequest come misura temporanea. ​

Ma quindi l’exploit?

Il punto critico di tutta la situazione è proprio l’exploit che può essere facilmente creato usando una semplice richiesta curl, proprio come nel caso della recente vulnerabilità all’ingress di Kubernetes.
In questo caso basta aggiungere solamente l’header x-middleware-subrequest e si è in grado di bypassare i controlli del middleware. Ecco un exploit funzionante per le ultime versioni di NextJS.

curl -X GET "https://super.secure.application/admin" -H "x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware"

A cosa può portare questo tipo di attacco?

  1. Authentication Bypass: Gli attaccanti possono accedere a percorsi protetti senza richiedere credenziali valide o token di sessione.
  2. Content Security Policy (CSP) Bypass: Se le intestazioni CSP sono applicate tramite middleware, questo exploit può bypassare queste protezioni, consentendo potenzialmente attacchi cross-site scripting (XSS).
  3. Geographic Restrictions Bypass: Le applicazioni che utilizzano il middleware per implementare restrizioni di contenuto basate sulla regione possono essere bypassate da questi controlli.
  4. Security Header Removal: Le intestazioni protettive come HSTS, X-Frame-Options o X-Content-Type-Options applicate dal middleware possono essere annullate.
  5. Cache Poisoning: In alcune configurazioni, l’aggiramento di una riscrittura può portare alla memorizzazione nella cache di un errore 404 o 500 (attacco CPDoS).

Se la tua applicazione utilizza una versione vulnerabile di NextJS con autenticazione, è molto probabile che sia esposta a questo tipo di attacchi. Aggiorna immediatamente!

Security Engineer
Appassionato di sicurezza informatica offensive, Linux e Open Source.

Read Entire Article