Skip to main content

CVE-2025-29927 : contournement de l’autorisation dans le middleware Next.js

Écrit par
blog feature code vulnerability warning

23 mars 2025

0 minutes de lecture

The CRITICAL Next.js Vulnerability you NEED to be aware of...

CVE-2025-29927 : contournement de l’autorisation dans le middleware Next.js

Le vendredi 21 mars 2025 à 9 h 00 UTC, un avis de sécurité portant l’identifiant CVE-2025-29927 a été publié. Il signalait une vulnérabilité critique, notée 9,1, dans les applications Next.js courantes.

Versions de Next.js vulnérables :

  • Versions 15.x de Next.js antérieures à 15.2.3

  • Versions 14.x de Next.js antérieures à 14.2.25

  • Versions 13.x de Next.js antérieures à 13.5.9

  • Toutes les versions de Next.js jusqu’à la version corrigée 13.5.9 sont considérées comme vulnérables. Toutefois, l’annonce de la vulnérabilité par Vercel indique qu’une solution de contournement ou un rétroportage du correctif pourrait être publié prochainement.

Nous recommandons vivement à tous les développeurs de mettre à niveau Next.js et de déployer la dernière version corrigée afin d’éviter tout contournement critique de l’autorisation ou toute autre neutralisation de la logique du middleware.

Périmètre de l’impact de CVE-2025-29927

Vercel a annoncé que cette vulnérabilité n’affecte pas les applications hébergées sur sa plateforme.

Netlify, une autre plateforme d’hébergement Web populaire, a annoncé que cette vulnérabilité n’affecte pas les applications déployées sur Netlify.

Cloudflare, souvent utilisé comme CDN, mais également capable d’héberger des applications Next.js, permet aux développeurs d’activer une règle WAF gérée comme solution de contournement facultative.

À propos du middleware Next.js

Le concept de middleware de Next.js s’inspire du framework d’applications Web Express. Un middleware est un prédicat HTTP qui peut enrichir une requête, la rediriger et déterminer le comportement d’une requête HTTP entrante adressée à un serveur Node.js.

La définition du middleware de Next.js suit une signature de fonction similaire à celle d’Express : elle reçoit un objet de requête HTTP (NextRequest) et renvoie une NextResponse afin d’imposer un comportement précis, par exemple une réponse HTTP 401 Unauthorized, une redirection HTTP ou la poursuite du traitement de la requête au moyen d’une directive NextResponse.next().

    export function middleware(req: NextRequest) {
      const token = req.cookies.get("auth-token")?.value;

      // Define protected routes
      const protectedRoutes = ["/admin"];

      if (protectedRoutes.some((route) => req.nextUrl.pathname.startsWith(route))) {
if (!token) {
  // Redirect to login page if not authorized
  const loginUrl = new URL("/login", req.nextUrl.origin);
  return NextResponse.redirect(loginUrl);
}
      }

      // Allow request to proceed
      return NextResponse.next();
    }

Comme l’indique la documentation officielle de Next.js, les développeurs utilisent souvent le middleware pour prendre des décisions d’authentification et d’autorisation, par exemple en validant un cookie ou un JWT dans la requête avant d’autoriser l’accès à des routes protégées.

Documentation Next.js sur les cas d’utilisation des middlewares

Contournement de l’autorisation dans Next.js

Les chercheurs en sécurité Allam Rachid et Allam Yasser, qui ont étudié et signalé cette vulnérabilité (ainsi que des vulnérabilités antérieures de Next.js), ont montré que des clients externes peuvent contourner la logique du middleware lorsqu’ils envoient des requêtes vers des routes protégées gérées par Next.js.

Pour contourner le middleware, les clients doivent spécifier l’en-tête HTTP suivant dans leurs requêtes :

    x-middleware-subrequest: middleware

La logique de Next.js traite l’en-tête HTTP x-middleware-subrequest pour déterminer quand et comment autoriser des requêtes à passer sans traverser le middleware, afin d’éviter les boucles infinies. Toutefois, cette logique est défectueuse dans les versions vulnérables de Next.js mentionnées ci-dessus : toute requête entrante vers un serveur Next.js peut contourner le middleware si l’en-tête HTTP x-middleware-subrequest est présent avec une valeur précise.

Pour reproduire le problème, notez que la valeur exacte de l’en-tête HTTP varie selon votre version de Next.js.

Suis-je affecté par le contournement de l’autorisation CVE-2025-29927 dans Next.js ?

Les développeurs qui utilisent Snyk Open Source pour détecter les vulnérabilités des dépendances dans leur IDE, leur système de gestion du code source Git, leur CI ou le workflow de surveillance de Snyk recevront une alerte concernant CVE-2025-29927, comme le montre ce dépôt GitHub importé dans les projets Snyk :

Tableau de bord de sécurité affichant le projet vulnerable-nextjs-14-CVE-2025-29927 avec une vulnérabilité critique dans package.json.

La page de la vulnérabilité Next.js sur Snyk indique la marche à suivre pour effectuer une mise à niveau (par exemple, next@14.2.25 dans mon cas). Les utilisateurs de Snyk peuvent également corriger rapidement la vulnérabilité en cliquant sur un bouton (ou choisir d’automatiser entièrement la correction) :

Détails de la vulnérabilité CVE-2025-29927 de Next.js par Snyk, avec les étapes pour la corriger

Vous êtes probablement concerné et vulnérable à un contournement de l’autorisation dans Next.js si :

  • Vous utilisez des versions de Next.js comprises entre 11.1.4 et 13.5.6

  • Vous hébergez vous-même des versions vulnérables de Next.js (14.x < 14.2.25 ou 15.x < 15.2.3)

Correction de la CVE-2025-29927 et solutions de contournement

Des correctifs et des mesures de correction sont disponibles, selon les versions de Next.js que vous utilisez et l’endroit où vous les déployez :

  • Effectuez la mise à niveau vers une version corrigée de Next.js en utilisant la dernière version des branches 14.x ou 15.x.

  • Appliquez une règle de pare-feu qui empêche les requêtes HTTP externes contenant l’en-tête x-middleware-subrequest d’atteindre l’infrastructure interne de l’application Next.js.

  • Les déploiements sur Vercel et Netlify ne sont pas affectés, comme l’ont indiqué ces plateformes d’hébergement cloud

Découvrez l’état de la sécurité des logiciels open source

Découvrez les tendances et les approches actuelles en matière de logiciels open source et de sécurité de la chaîne d’approvisionnement.