
Questo repository contiene una proof of concept (PoC) per CVE-2025-29927, una vulnerabilità nel middleware di Next.js che consente di aggirare i controlli di autenticazione e autorizzazione tramite la manipolazione degli header.
Versioni interessate: >= 11.1.4, <= 1 3.5.6, > 14.0.0, < 14.2.25, > 15.0.0, < 15.2.3
ID CVE: CVE-2025-29927
Gravità: Alta (CVSS: 9.1)
La vulnerabilità risiede nell'esecuzione della catena middleware di Next.js, dove un attaccante può manipolare l'header x-middleware-subrequest per aggirare i controlli di sicurezza del middleware. Creando un valore specifico per l'header, il middleware può essere indotto a trattare la richiesta come se fosse già stata elaborata, aggirando di fatto i controlli di autenticazione.
Questo strumento è testato su: Next.js dalla 15.0.0 alla 15.2.2; altre versioni potrebbero richiedere modifiche.
Installa le dipendenze con:
pip install -r requirements.txt
python poc-cve-2025-29927.py http://example.com/protected-route
usage: poc-cve-2025-29927.py [-h] [-r REPEAT] [-o OUTPUT] [--no-browser] [-f] url
PoC for CVE-2025-29927 - Next.js Middleware Bypass
positional arguments:
url Target URL to test (e.g., http://localhost:3000/admin/dashboard)
options:
-h, --help show this help message and exit
-r REPEAT, --repeat REPEAT
Number of middleware repeats in header (default: 5)
-o OUTPUT, --output OUTPUT
Output file name (default: response.html)
--no-browser Do not open result in browser
-f, --force Skip version check and force exploit attempt
python poc-cve-2025-29927.py http://localhost:3000/admin/dashboard
python poc-cve-2025-29927.py http://target-site.com/admin/dashboard -f
python poc-cve-2025-29927.py http://vulnerable-app.com/protected-page -r 10 -o result.html --no-browser
Lo script tenta innanzitutto di rilevare la versione di Next.js dell'applicazione target utilizzando vari metodi di rilevamento
Se viene rilevata una versione vulnerabile (15.0.0-15.2.2), procede con l'exploit
Viene inviata una richiesta con un header x-middleware-subrequest appositamente costruito
La risposta viene salvata in un file e analizzata per individuare indicatori di successo
In caso di successo, il contenuto protetto sarà accessibile senza autenticazione
Se stai eseguendo una versione vulnerabile di Next.js, aggiorna alla versione 15.2.3 o successiva per correggere questa vulnerabilità.
Questo strumento è fornito esclusivamente a scopo educativo e di ricerca sulla sicurezza. Usalo solo contro applicazioni di tua proprietà o per le quali hai esplicita autorizzazione al test. I test non autorizzati potrebbero violare le leggi applicabili.
Questo progetto è concesso in licenza secondo i termini della Licenza MIT - consulta il file LICENSE per i dettagli.
Heimd411
Ricercatore di sicurezza
Profilo GitHub
Questo repository