
Next.js et le middleware corrompu...ESSAYEZ DE LE PIRATER..!
Ceci est un exemple de projet Next.js initialisé avec [create-next-app] pour expliquer de manière pratique le fonctionnement de cve-2025-29927. (https://nextjs.org/docs/app/api-reference/cli/create-next-app).
Tout d'abord, lancez le serveur de développement :
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
Ouvrez http://localhost:3000 dans votre navigateur pour voir le résultat.
Vous pouvez maintenant utiliser Burp ou d'autres extensions de navigateur pour modifier les en-têtes et exploiter le Middleware à l'aide de la payload.

Lorsqu'une application next.js utilise un middleware, la fonction runMiddleware est utilisée. Cette dernière - au-delà de son utilité principale - récupère la valeur de l'en-tête x-middleware-subrequest et l'utilise pour savoir si le middleware doit être appliqué ou non. La valeur de l'en-tête est divisée pour créer une liste en utilisant le caractère deux-points (:) comme séparateur, puis vérifie si cette liste contient la valeur middlewareInfo.name.
Cela signifie que si nous ajoutons l'en-tête x-middleware-subrequest avec la valeur correcte à notre requête, le middleware - quel que soit son objectif - sera complètement ignoré, et la requête sera transmise via NextResponse.next() et effectuera son trajet jusqu'à sa destination d'origine sans que le middleware n'ait d'impact/influence sur elle. L'en-tête et sa valeur agissent comme une clé universelle permettant de passer outre les règles. À ce stade, nous savons déjà que nous venons de découvrir quelque chose de fou.
Uploading next-middleware-2.png…
Notez que nous utilisons ici "next": "14.0.4".