
Exploit de preuve de concept pour CVE-2025-29927 qui ajoute x-middleware-subrequest pour contourner les contrôles d'authentification du middleware Next.js.
Ce dépôt contient une preuve de concept pour la vulnérabilité CVE-2025-29927 dans Next.js, où l'en-tête interne x-middleware-subrequest peut être exploité pour contourner les contrôles du middleware tels que l'authentification.
🧪 Ce projet a été testé avec Next.js v13.4.19.
git clone https://github.com/goncalocsousa1/CVE-2025-29927.git
cd CVE-2025-29927
npm install
npm run dev
http://localhost:3000
L'application démontre un système d'authentification simple avec une route protégée qui peut être contournée en utilisant la vulnérabilité CVE-2025-29927. Voici comment cela fonctionne :
Page d'accueil (/)
auth-token)Page protégée (/protected)
auth-tokenProtection du middleware
auth-token/protected/*, il redirige vers la page d'accueilDémonstration de la vulnérabilité
x-middleware-subrequest peut être exploitéauth-token valide, les attaquants peuvent accéder aux routes protégéesCette application inclut une route protégée à /protected qui nécessite normalement une authentification. Cependant, en utilisant l'en-tête x-middleware-subrequest: middleware dans une requête comme curl -H "x-middleware-subrequest: middleware" http://localhost:3000/protected, vous pouvez contourner la vérification d'authentification.
Vous pouvez également reproduire ce comportement en utilisant Burp Suite en interceptant la requête et en ajoutant manuellement l'en-tête.
Pour essayer cela avec Burp Suite, ouvrez l'onglet Proxy et allez dans le sous-onglet Intercept. Assurez-vous que Intercept is On, puis cliquez sur Open Browser et naviguez vers la route protégée : http://localhost:3000/protected

Burp Suite capturera la requête vers la route protégée. À partir de là, ajoutez l'en-tête suivant : x-middleware-subrequest: middleware (surligné dans la capture d'écran ci-dessus). Enfin, transmettez la requête et accédez à la route protégée.

Mettez à jour vers l'une des versions corrigées suivantes :