CVE-2025-29927 : contournement d’autorisation dans Next.js

Matthew Mathur

Chercheur principal en sécurité, Fastly

Équipe de recherche en sécurité Fastly

Équipe de recherche en sécurité Fastly, Fastly

Ce que vous devez savoir

  • Le 21 mars 2025, Vercel a publié un avis de sécurité concernant la vulnérabilité CVE-2025-29927 dans Next.js

  • CVE-2025-29927 est une vulnérabilité de contournement d’autorisation dans le middleware Next.js.

  • La vulnérabilité affecte les versions :

    • 15.x avant la version 15.2.3

    • 14.x avant la version 14.2.25

    • 13.x avant la version 13.5.9

    • 12.x avant la version 12.3.5

    • 11.x, toutes les versions

Les clients NGWAF Fastly peuvent se protéger de cette vulnérabilité en activant la règle prédéfinie pour CVE-2025-29927.

Détails de la vulnérabilité CVE-2025-29927

Next.js est un framework React populaire pour le développement d’applications web full-stack. Dans Next.js, le middleware est une fonctionnalité qui vous permet d’exécuter du code avant qu’une requête ne soit traitée par un chemin. Il permet la gestion dynamique des requêtes, telles que l’autorisation, les redirections et les modifications de réponse, avant d’atteindre un chemin ou une page de l’API. Cette vulnérabilité concerne la manière dont Next.js décide d’appliquer un middleware à une requête spécifique. Lorsqu’une requête est traitée, Next.js récupère la valeur de l’en-tête x-middleware-subrequest et l’utilise pour déterminer s’il convient d’appliquer un middleware. Lorsque la valeur de l’en-tête contient une valeur spécifique (différente pour chaque version vulnérable), Next.js ne prendra pas en compte l’application d’un middleware et transmettra la requête.

En bref, lorsqu’une requête contient l’en-tête x-middleware-subrequest et une valeur spécifique à la version, le middleware Next.js sera contourné.

Les versions antérieures de Next.js recherchent la valeur de la variable middlewareInfo.name dans la valeur de l’en-tête. Il s’agit simplement du chemin où se trouve le middleware, mais cela peut varier selon les versions et les installations.

Voici à quoi cela ressemble selon la version :

  • Avant la version 12.2

    • Le middleware existe par défaut à l’emplacement pages/_middelware.ts, la charge utile est donc pages/_middleware. Il doit être dans un répertoire pages/ dans ces versions.

    • Cependant, vous pouvez avoir des répertoires imbriqués avec un middleware. Dans ce cas, cela ressemblerait à pages/example/_middleware, selon la configuration de l’application.

  • Après la version 12.2 et avant la version 15.x

    • Le middleware n’est plus situé dans le répertoire des pages, et le préfixe de soulignement a été supprimé. Cependant, Next.js prend également en charge un répertoire /src où le fichier middleware pourrait être situé.

    • La charge utile contient soit middleware soit src/middleware.

  • Version 15.x

    • Next.js vérifie maintenant que le middlewareInfo.name soit présent au moins 5 fois pour contourner le middleware, et le répertoire /src reste également une possibilité.

    • La charge utile contient soit middleware:middleware:middleware:middleware:middleware soit src/middleware:src/middleware:src/middleware:src/middleware:src/middleware.

Pour en savoir plus sur les vulnérabilités et leur découverte, Rachid et Yasser les détaillent dans leur article. En plus du contournement de l’autorisation, ils montrent également comment la vulnérabilité peut être exploitée pour lancer une attaque par déni de service par empoisonnement du cache.

Recommandations exploitables

Fastly recommande de mettre à jour, si possible, vers les versions corrigées suivantes de Next.js qui corrigent cette vulnérabilité :

  • Pour les versions 15.x, corrigée dans la version 15.2.3

  • Pour les versions 14.x, corrigée dans la version 14.2.25

  • Pour 13.x, corrigé dans 13.5.9

  • Pour les versions 12.x, corrigée dans la version 12.3.5

  • Pour les versions 11.x, il n’existe aucun correctif disponible

Pour les clients NGWAF Fastly

Si vous ne pouvez pas mettre à jour votre version de Next.js, si vous avez besoin de temps pour appliquer le correctif ou si vous recherchez des protections supplémentaires pour cette vulnérabilité, vous pouvez activer la règle prédéfinie pour CVE-2025-29927. Si vous avez besoin d’aide supplémentaire pour appliquer un correctif virtuel, veuillez contacter notre équipe d’assistance sécurité.

Références