
Ce laboratoire, je l'ai entièrement créé de zéro. J'ai préparé les pages de connexion, d'accueil et d'administration dans l'application Next.js. Après avoir mis en place le mécanisme d'autorisation avec le middleware, j'ai démontré la vulnérabilité CVE-2025-29927 dans un environnement contrôlé en utilisant Burp Suite.
Dans les applications Next.js, le middleware s'exécute avant que les requêtes n'atteignent l'application et effectue des contrôles tels que l'authentification et l'autorisation.
Dans le cas de la vulnérabilité CVE-2025-29927, le middleware peut, dans certaines situations, considérer la requête comme vérifiée en raison de l'en-tête HTTP x-middleware-subrequest ajouté de façon spécifique. Cette situation peut permettre à des utilisateurs non autorisés d'accéder à des pages protégées.
Dans ce projet, j'ai démontré la vulnérabilité CVE-2025-29927, qui affecte les applications Next.js, dans un environnement de laboratoire que j'ai créé avec Docker.
J'ai créé l'environnement de laboratoire moi-même, de zéro. J'ai préparé les pages login, index et admin avec Next.js, puis j'ai ajouté un contrôle d'autorisation à la page admin à l'aide du middleware.
En interceptant les requêtes HTTP avec Burp Suite, j'ai ajouté l'en-tête x-middleware-subrequest et montré qu'il est possible d'accéder à la page admin sans autorisation en contournant le contrôle du middleware.
.
├── pages
│ ├── admin.js
│ ├── index.js
│ └── login.js
├── middleware.js
├── Dockerfile
├── package.json
└── README.md
Les éléments suivants doivent être installés avant d'exécuter le projet.
Téléchargez le dépôt sur votre ordinateur.
git clone https://github.com/berraesen/nextjs-middleware-auth-bypass-lab.git
Accédez au dossier.
cd nextjs-middleware-auth-bypass-lab
Créez l'image Docker.
docker build -t nextjs-auth-bypass .
Démarrez le conteneur.
docker run -d -p 3000:3000 --name nextjs-lab nextjs-auth-bypass
Dans votre navigateur, rendez-vous à l'adresse suivante.
http://localhost:3000
Le projet comprend les pages suivantes.
L'accès à la page admin est contrôlé par le middleware.
Commencez par essayer d'accéder à la page /admin depuis votre navigateur.
Vous serez redirigé vers la page de connexion, car vous n'avez pas l'autorisation.
Interceptez la requête avec Burp Suite.
Ajoutez l'en-tête HTTP suivant à la requête.
x-middleware-subrequest: middleware
Renvoyez la requête.
Une fois le contrôle du middleware contourné, vous constaterez que la page admin est accessible.
Une fois l'installation terminée :
İstemci
│
▼
HTTP Request
│
▼
Next.js Middleware
│
├──────────────► Normal İstek
│ │
│ ▼
│ Yetki Kontrolü
│ │
│ ▼
│ Login Sayfasına Yönlendirme
│
▼
x-middleware-subrequest
Header Eklendi
│
▼
Middleware Kontrolü Atlandı
│
▼
Admin Sayfasına Erişim
Pour corriger cette vulnérabilité, il est recommandé de remplacer les versions concernées de Next.js par des versions à jour.
Par ailleurs, l'autorisation ne doit pas reposer uniquement sur le middleware ; des contrôles d'autorisation supplémentaires doivent également être mis en place côté serveur.