{"id":174412,"date":"2026-09-15T11:29:03","date_gmt":"2026-09-15T09:29:03","guid":{"rendered":"https:\/\/jfrog.com\/blog\/cve-2025-29927-vulnerabilite-de-contournement-dautorisation-dans-next-js-tout-ce-que-vous-devez-savoir\/"},"modified":"2026-09-15T13:13:21","modified_gmt":"2026-09-15T11:13:21","slug":"cve-2025-29927-next-js-authorization-bypass","status":"publish","type":"post","link":"https:\/\/jfrog.com\/fr\/blog\/cve-2025-29927-next-js-authorization-bypass\/","title":{"rendered":"CVE-2025-29927 &#8211; Vuln\u00e9rabilit\u00e9 de contournement d\u2019autorisation dans Next.js\u00a0: Tout ce que vous devez savoir"},"content":{"rendered":"<p>CVE-2025-29927 &#8211; <img decoding=\"async\" src=\"https:\/\/media.jfrog.com\/wp-content\/uploads\/2025\/03\/23164146\/Next.js_CVE-2025-29927_863x300.png\" alt=\"CVE-2025-29927 - \" width=\"863\" height=\"300\" \/><\/p>\n<p>Le 21 mars 2025, les mainteneurs de Next.js <a href=\"https:\/\/nextjs.org\/blog\/cve-2025-29927\" target=\"_blank\" rel=\"noopener\">ont annonc\u00e9 une nouvelle vuln\u00e9rabilit\u00e9 permettant de contourner les m\u00e9canismes d\u2019autorisation\u00a0:<\/a> CVE-2025-29927. Cette vuln\u00e9rabilit\u00e9 peut \u00eatre facilement exploit\u00e9e afin de contourner les m\u00e9canismes d\u2019autorisation. Dans certains cas, son exploitation peut \u00e9galement entra\u00eener un empoisonnement du cache et un d\u00e9ni de service.<\/p>\n<h2>Quelles versions de Next.js sont concern\u00e9es\u00a0?<\/h2>\n<p>Next.js 15.x \u2013 \u00e0 partir de la version 15.0.0 jusqu&#8217;\u00e0 la version 15.2.2 incluse.<\/p>\n<p>Next.js 14.x \u2013 \u00e0 partir de la version 14.0.0 jusqu&#8217;\u00e0 la version 14.2.24 incluse.<\/p>\n<p>Versions ant\u00e9rieures de Next.js \u2013 \u00e0 partir de la version 11.1.4 jusqu&#8217;\u00e0 la version 13.5.6 incluse.<\/p>\n<h2>Sc\u00e9narios d\u2019attaque pour la CVE-2025-29927<\/h2>\n<p>Pour que cette vuln\u00e9rabilit\u00e9 puisse \u00eatre exploit\u00e9e, le serveur Next.js cibl\u00e9 doit utiliser un middleware Next.js. Cela implique la pr\u00e9sence d\u2019un fichier <code>middleware.js<\/code> ou <code>middleware.ts<\/code> (<code>_middleware.js<\/code> ou <code>_middleware.ts<\/code>\u00a0 pour les anciennes versions de Next.js). Ce fichier d\u00e9finit et exporte la fonction de <code>middleware<\/code> contenant la logique ex\u00e9cut\u00e9e \u00e0 la r\u00e9ception de chaque requ\u00eate HTTP.<\/p>\n<h3>Contournement des m\u00e9canismes d\u2019autorisation<\/h3>\n<p>Il s\u2019agit du sc\u00e9nario d\u2019exploitation le plus probable pour CVE-2025-29927.<\/p>\n<p>Ce sc\u00e9nario concerne les serveurs Next.js cibl\u00e9s qui utilisent la fonctionnalit\u00e9 de middleware pour effectuer les contr\u00f4les d\u2019autorisation (et dont l\u2019application sous-jacente n\u2019utilise aucune autre couche d\u2019autorisation).<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-150102 aligncenter\" src=\"https:\/\/media.jfrog.com\/wp-content\/uploads\/2025\/03\/24115029\/auth_nobypass.png\" alt=\"\" width=\"1185\" height=\"286\" \/><\/p>\n<p style=\"text-align: center;\"><em>Sc\u00e9nario avec un middleware d\u2019autorisation sans exploitation de la CVE-2025-29927<\/em><\/p>\n<p style=\"text-align: center;\"><img decoding=\"async\" class=\"alignnone size-full wp-image-150105\" src=\"https:\/\/media.jfrog.com\/wp-content\/uploads\/2025\/03\/24115144\/auth_bypass.png\" alt=\"\" width=\"1202\" height=\"286\" \/><\/p>\n<p style=\"text-align: center;\"><em>Sc\u00e9nario avec un middleware d\u2019autorisation et exploitation de la CVE-2025-29927<\/em><\/p>\n<h3>D\u00e9ni de service par empoisonnement du cache<\/h3>\n<p>Le middleware Next.js peut \u00e9galement faciliter la localisation des sites web. Il peut, par exemple, rediriger automatiquement les utilisateurs en fonction de leur emplacement, en ajoutant <code>\/en<\/code> pour les anglophones ou <code>\/fr<\/code> pour les visiteurs francophones. Si une personne exploite la CVE-2025-29927 et contourne le middleware charg\u00e9 de ces redirections, elle n\u2019acc\u00e9dera pas \u00e0 une page localis\u00e9e, mais \u00e0 la racine du site web (<code>\/<\/code>), pour laquelle les d\u00e9veloppeurs n\u2019ont jamais cr\u00e9\u00e9 de page. Le r\u00e9sultat\u00a0? Une erreur 404 ou une erreur serveur 500, selon la configuration.<\/p>\n<p>Si le site utilise un <strong>CDN ou une autre couche de mise en cache<\/strong>, ces r\u00e9ponses d\u2019erreur peuvent \u00eatre enregistr\u00e9es dans le cache et pr\u00e9sent\u00e9es aux visiteurs suivants. Une fois ces r\u00e9ponses mises en cache, les utilisateurs l\u00e9gitimes risquent de voir des pages d\u00e9fectueuses <strong>partout dans le monde<\/strong>. Cela provoque une panne auto-inflig\u00e9e qui compromet gravement la disponibilit\u00e9 du service, sans qu\u2019une seule ligne de code ait \u00e9t\u00e9 modifi\u00e9e.<\/p>\n<p style=\"text-align: center;\"><img decoding=\"async\" class=\"alignnone size-full wp-image-150107\" src=\"https:\/\/media.jfrog.com\/wp-content\/uploads\/2025\/03\/24115148\/dos_nobypass.png\" alt=\"\" width=\"808\" height=\"286\" \/><\/p>\n<p style=\"text-align: center;\"><em>Sc\u00e9nario avec un middleware de redirection sans exploitation de la CVE-2025-29927<\/em><\/p>\n<p style=\"text-align: center;\"><img decoding=\"async\" class=\"alignnone size-full wp-image-150106\" src=\"https:\/\/media.jfrog.com\/wp-content\/uploads\/2025\/03\/24115146\/dos_bypass.png\" alt=\"\" width=\"1730\" height=\"539\" \/><\/p>\n<p style=\"text-align: center;\"><em>Sc\u00e9nario avec un middleware de redirection et exploitation de la CVE-2025-29927<\/em><\/p>\n<h2>Comprendre le middleware Next.js<\/h2>\n<p>Le middleware Next.js est une fonctionnalit\u00e9 puissante, introduite dans Next.js v12, qui permet aux d\u00e9veloppeurs d\u2019ex\u00e9cuter du code avant qu\u2019une requ\u00eate ne soit finalis\u00e9e. Ex\u00e9cut\u00e9 \u00e0 la p\u00e9riph\u00e9rie du r\u00e9seau, plus pr\u00e8s de l\u2019utilisateur que le code traditionnel c\u00f4t\u00e9 serveur, le middleware peut modifier les en-t\u00eates de r\u00e9ponse, r\u00e9\u00e9crire ou rediriger les requ\u00eates et, surtout, mettre en \u0153uvre des contr\u00f4les d\u2019authentification et d\u2019autorisation.<\/p>\n<p>Dans Next.js, le middleware s\u2019ex\u00e9cute avant le rendu et peut \u00eatre configur\u00e9 de mani\u00e8re \u00e0 s\u2019activer sur des chemins sp\u00e9cifiques gr\u00e2ce aux param\u00e8tres matcher.<\/p>\n<p>Voici quelques exemples d\u2019utilisation du middleware Next.js\u00a0:<\/p>\n<ul>\n<li aria-level=\"1\">V\u00e9rification des jetons d\u2019authentification<\/li>\n<li aria-level=\"1\">Mise en place d\u2019un contr\u00f4le d\u2019acc\u00e8s bas\u00e9 sur les r\u00f4les<\/li>\n<li aria-level=\"1\">Redirection des utilisateurs non authentifi\u00e9s<\/li>\n<\/ul>\n<p>Une impl\u00e9mentation typique de middleware Next.js qui effectue l\u2019authentification pourrait ressembler \u00e0 ceci\u00a0:<\/p>\n<pre class=\"language-javascript\"><code> \r\n\r\n import { NextResponse } from 'next\/server'\r\n import type { NextRequest } from 'next\/server'\r\n\r\n export function middleware(request: NextRequest) {\r\n   \/\/ R\u00e9cup\u00e9rer le jeton de l\u2019utilisateur dans les cookies\r\n   const token = request.cookies.get('token').value\r\n  \r\n   \/\/ V\u00e9rifier que l\u2019utilisateur est authentifi\u00e9\r\n   const isAuthenticated = validateToken(token)\r\n  \r\n   \/\/ Si l\u2019utilisateur n\u2019est pas authentifi\u00e9, le rediriger vers la page de connexion\r\n   if (!isAuthenticated) {\r\n     return NextResponse.redirect(new URL('\/login', request.url))\r\n   }\r\n  \r\n   \/\/ Poursuivre vers la route prot\u00e9g\u00e9e si l\u2019utilisateur est authentifi\u00e9\r\n   return NextResponse.next()\r\n }\r\n\r\n \/\/ Configurer les routes qui utilisent ce middleware\r\n export const config = {\r\n   matcher: ['\/dashboard\/:path*', '\/settings\/:path*'],\r\n }\r\n\u00a0\r\n<\/code><\/pre>\n<h2>Analyse technique de la CVE-2025-29927<\/h2>\n<p>La CVE-2025-29927 r\u00e9v\u00e8le une faille critique dans la fa\u00e7on dont le middleware Next.js traite certains types de requ\u00eates. Cette faille peut permettre de contourner les m\u00e9canismes d\u2019authentification et d\u2019autorisation.<\/p>\n<p>Cette vuln\u00e9rabilit\u00e9 affecte les applications qui, dans certaines configurations, utilisent un middleware pour contr\u00f4ler les acc\u00e8s.<\/p>\n<p>Elle provient du traitement incoh\u00e9rent, par Next.js, des en-t\u00eates personnalis\u00e9s <code>x-middleware-subrequest<\/code>. Lorsque cet en-t\u00eate est inclus dans les requ\u00eates adress\u00e9es \u00e0 des routes prot\u00e9g\u00e9es, Next.js autorise \u00e0 tort la requ\u00eate \u00e0 contourner enti\u00e8rement l\u2019ex\u00e9cution du middleware. Cet en-t\u00eate force l\u2019environnement d\u2019ex\u00e9cution de Next.js \u00e0 ignorer la phase d\u2019\u00e9valuation du middleware, tout en continuant \u00e0 traiter le gestionnaire de la route sous-jacente.<\/p>\n<p>Pour exploiter cette vuln\u00e9rabilit\u00e9, il suffit \u00e0 un pirate d\u2019ajouter l\u2019en-t\u00eate <code>x-middleware-subrequest<\/code> \u00e0 ses requ\u00eates HTTP lorsqu\u2019il tente d\u2019acc\u00e9der \u00e0 des ressources prot\u00e9g\u00e9es. Par exemple, une requ\u00eate adress\u00e9e \u00e0 <code>\/api\/admin\/users<\/code>, normalement bloqu\u00e9e par les contr\u00f4les d\u2019autorisation du middleware, sera trait\u00e9e normalement si cet en-t\u00eate est pr\u00e9sent. Le serveur traite la requ\u00eate comme si le middleware l\u2019avait d\u00e9j\u00e0 examin\u00e9e et approuv\u00e9e, ce qui entra\u00eene un contournement complet des m\u00e9canismes de s\u00e9curit\u00e9. Cette manipulation de l\u2019en-t\u00eate peut \u00eatre facilement r\u00e9alis\u00e9e \u00e0 l\u2019aide des outils de d\u00e9veloppement d\u2019un navigateur, de commandes curl ou de scripts simples.<\/p>\n<p>Voici le <a href=\"https:\/\/github.com\/vercel\/next.js\/blob\/v15.2.2\/packages\/next\/src\/server\/web\/sandbox\/sandbox.ts#L94-L114\">code vuln\u00e9rable<\/a> de la derni\u00e8re version affect\u00e9e (v15.2.2)\u00a0:<\/p>\n<pre class=\"language-javascript\"><code>\r\n export const run = withTaggedErrors(async function runWithTaggedErrors(params) {\r\n const runtime = await getRuntimeContext(params)\r\n const subreq = params.request.headers[`x-middleware-subrequest`]        [1]\r\n const subrequests = typeof subreq === 'string' ? subreq.split(':') : [] [2]\r\n\r\n const MAX_RECURSION_DEPTH = 5\r\n const depth = subrequests.reduce(                                       [3]\r\n  (acc, curr) =&gt; (curr === params.name ? acc + 1 : acc),\r\n  0\r\n )\r\n\r\n if (depth &gt;= MAX_RECURSION_DEPTH) {                                     [4]\r\n  return {\r\n     waitUntil: Promise.resolve(),\r\n     response: new runtime.context.Response(null, {\r\n       headers: {\r\n         'x-middleware-next': '1',\r\n       },\r\n     }),\r\n   }\r\n }\r\n\u00a0\r\n<\/code><\/pre>\n<p>\u00c0 l\u2019\u00e9tape [1], l\u2019en-t\u00eate <code>x-middleware-subrequest<\/code> est r\u00e9cup\u00e9r\u00e9 dans la requ\u00eate.<br \/>\n\u00c0 l\u2019\u00e9tape [2], sa valeur est divis\u00e9e \u00e0 l\u2019aide du d\u00e9limiteur <code>:<\/code>. Une fonction reduce compte ensuite, \u00e0 l\u2019\u00e9tape [3], le nombre d\u2019\u00e9l\u00e9ments de ce tableau (<code>subrequests<\/code>) qui correspondent au nom de fichier du middleware.<br \/>\nSi ce nombre est sup\u00e9rieur ou \u00e9gal \u00e0 <code>MAX_RECURSION_DEPTH<\/code> (dont la valeur est <code>5<\/code>) \u00e0 l\u2019\u00e9tape [4], la fonctionnalit\u00e9 du middleware est contourn\u00e9e et la requ\u00eate est dirig\u00e9e vers sa route.<\/p>\n<h2>Valeurs possibles de l\u2019en-t\u00eate d\u2019attaque<\/h2>\n<div class=\"p-rich_text_section\">\n<p>Comme expliqu\u00e9 pr\u00e9c\u00e9demment, le nom de l\u2019en-t\u00eate vuln\u00e9rable est <code>x-middleware-subrequest<\/code>. La valeur qui lui est attribu\u00e9e d\u00e9pend de Next.js, car elle est d\u00e9finie en fonction de la valeur de <code>middlewareInfo.name<\/code>, qui correspond essentiellement au chemin du fichier <code>middleware.js<\/code> ou <code>middleware.ts<\/code>.<\/p>\n<p>Avant la version\u00a012.2, le fichier du middleware s\u2019appelait <code>_middleware.js<\/code> ou <code>_middleware.ts<\/code> et pouvait se trouver \u00e0 n\u2019importe quel niveau du sous-r\u00e9pertoire auquel nous tentions d\u2019acc\u00e9der. Dans notre cas, nous cherchons \u00e0 acc\u00e9der \u00e0 <code>\/admin\/dashboard<\/code>. La valeur de <code>middlewareInfo.name<\/code> pouvait donc \u00eatre <code class=\"c-mrkdwn__code\" data-stringify-type=\"code\">pages\/_middleware<\/code> ou <code class=\"c-mrkdwn__code\" data-stringify-type=\"code\">pages\/admin\/_middleware<\/code>. Si <code class=\"c-mrkdwn__code\" data-stringify-type=\"code\">dashboard<\/code> avait \u00e9t\u00e9 configur\u00e9 comme un r\u00e9pertoire contenant un fichier <code class=\"c-mrkdwn__code\" data-stringify-type=\"code\">index.js<\/code>,\u00a0cette valeur aurait \u00e9galement pu \u00eatre <code class=\"c-mrkdwn__code\" data-stringify-type=\"code\">pages\/admin\/dashboard\/_middleware<\/code>.<\/p>\n<p>Par exemple, si nous avions utilis\u00e9 notre code de d\u00e9monstration avec une version de Next.js ant\u00e9rieure \u00e0 la version\u00a012.2, nous aurions d\u00fb d\u00e9placer <code class=\"c-mrkdwn__code\" data-stringify-type=\"code\">middleware.js<\/code> dans le r\u00e9pertoire <code class=\"c-mrkdwn__code\" data-stringify-type=\"code\">pages<\/code> et le renommer <code class=\"c-mrkdwn__code\" data-stringify-type=\"code\">_middleware.js<\/code>. Notre requ\u00eate HTTP \u00ab\u00a0malveillante\u00a0\u00bb aurait alors \u00e9t\u00e9 la suivante\u00a0:<\/p>\n<pre class=\"language-javascript\"><code>\r\n GET \/admin\/dashboard HTTP\/1.1\r\n x-middleware-subrequest: pages\/_middleware\r\n\u00a0\r\n<\/code><\/pre>\n<p>\u00c0 partir de la version 12.2 et jusqu\u2019\u00e0 la version\u00a013, le fichier du middleware doit se trouver \u00e0 la racine du projet et porter le nom <code class=\"c-mrkdwn__code\" data-stringify-type=\"code\">middleware.js\/middleware.ts<\/code>. Pour attaquer ces versions de Next.js, la charge utile de l\u2019en-t\u00eate serait donc simplement <code class=\"c-mrkdwn__code\" data-stringify-type=\"code\">middleware<\/code>, et nous savons avec certitude que le fichier se trouve dans le r\u00e9pertoire racine.<\/p>\n<p>Si nous avions utilis\u00e9 une version de Next.js comprise entre les versions\u00a012.2 et 13, notre requ\u00eate \u00ab\u00a0malveillante\u00a0\u00bb aurait \u00e9t\u00e9 modifi\u00e9e comme suit\u00a0:<\/p>\n<pre class=\"language-javascript\"><code>\r\n GET \/admin\/dashboard HTTP\/1.1\r\n x-middleware-subrequest: middleware\r\n\u00a0\r\n<\/code><\/pre>\n<p>\u00c0 partir de la version 13 de Next.js, le contr\u00f4le de r\u00e9cursivit\u00e9 pr\u00e9sent\u00e9 pr\u00e9c\u00e9demment a \u00e9t\u00e9 mis en \u0153uvre. Un pirate doit donc attribuer \u00e0 l\u2019en-t\u00eate malveillant la valeur <code class=\"c-mrkdwn__code\" data-stringify-type=\"code\">middleware:middleware:middleware:middleware:middleware<\/code> afin de simuler cinq niveaux de r\u00e9cursivit\u00e9.<\/p>\n<p>Notre PoC utilisant cette version, voici un extrait de la requ\u00eate employ\u00e9e\u00a0:<\/p>\n<pre class=\"language-javascript\"><code>\r\n GET \/admin\/dashboard HTTP\/1.1\r\n x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware\r\n\u00a0\r\n<\/code><\/pre>\n<p>Gardez \u00e0 l\u2019esprit que, dans tous les cas, le code du middleware pouvait se trouver dans un r\u00e9pertoire <code class=\"c-mrkdwn__code\" data-stringify-type=\"code\">src<\/code>. Pour exploiter la vuln\u00e9rabilit\u00e9, il aurait alors \u00e9t\u00e9 n\u00e9cessaire d\u2019ajouter <code class=\"c-mrkdwn__code\" data-stringify-type=\"code\">src<\/code> au d\u00e9but des valeurs pr\u00e9sent\u00e9es pr\u00e9c\u00e9demment. Par exemple, si nous avions plac\u00e9 le code de notre PoC dans un r\u00e9pertoire <code class=\"c-mrkdwn__code\" data-stringify-type=\"code\">src<\/code>, notre charge utile aurait d\u00fb \u00eatre la suivante\u00a0:<\/p>\n<pre class=\"language-javascript\"><code>\r\n GET \/admin\/dashboard HTTP\/1.1\r\n x-middleware-subrequest: src\/middleware:src\/middleware:src\/middleware:src\/middleware:src\/middleware.\r\n\u00a0\r\n<\/code><\/pre>\n<h2>Exploitation de la CVE-2025-29927<\/h2>\n<p>Comme toujours, il est pr\u00e9f\u00e9rable d\u2019observer une exploitation compl\u00e8te de la vuln\u00e9rabilit\u00e9 afin de comprendre quelles instances de Next.js seraient vuln\u00e9rables.<\/p>\n<p>Nous avons mis en place notre propre site web de PoC avec l\u2019arborescence suivante\u00a0:<\/p>\n<p>\u251c\u2500\u2500 middleware.js<br \/>\n\u251c\u2500\u2500 package-lock.json<br \/>\n\u251c\u2500\u2500 package.json<br \/>\n\u2514\u2500\u2500 pages<br \/>\n\u251c\u2500\u2500 admin<br \/>\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 dashboard.js<br \/>\n\u2514\u2500\u2500 index.js<\/p>\n<p>Tout d\u2019abord, notre page de connexion\u00a0:<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-150120\" src=\"https:\/\/media.jfrog.com\/wp-content\/uploads\/2025\/03\/24120746\/image-4.png\" alt=\"\" width=\"403\" height=\"258\" \/><\/p>\n<div class=\"c-message_kit__blocks c-message_kit__blocks--rich_text\">\n<div class=\"c-message__message_blocks c-message__message_blocks--rich_text\" data-qa=\"message-text\">\n<div class=\"p-block_kit_renderer\" data-qa=\"block-kit-renderer\">\n<div class=\"p-block_kit_renderer__block_wrapper p-block_kit_renderer__block_wrapper--first\">\n<div class=\"p-rich_text_block\" dir=\"auto\">\n<div class=\"p-rich_text_section\">Voici ce qui se passe lorsqu\u2019un utilisateur non administrateur tente de se connecter\u00a0:<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p><img decoding=\"async\" class=\"alignnone wp-image-150121\" src=\"https:\/\/media.jfrog.com\/wp-content\/uploads\/2025\/03\/24120823\/image-5.png\" alt=\"\" width=\"405\" height=\"395\" \/><\/p>\n<div class=\"c-message_kit__blocks c-message_kit__blocks--rich_text\">\n<div class=\"c-message__message_blocks c-message__message_blocks--rich_text\" data-qa=\"message-text\">\n<div class=\"p-block_kit_renderer\" data-qa=\"block-kit-renderer\">\n<div class=\"p-block_kit_renderer__block_wrapper p-block_kit_renderer__block_wrapper--first\">\n<div class=\"p-rich_text_block\" dir=\"auto\">\n<div class=\"p-rich_text_section\">Voici le tableau de bord d\u2019administration accessible \u00e0 l\u2019adresse <code class=\"c-mrkdwn__code\" data-stringify-type=\"code\">\/admin\/dashboard<\/code> avec les identifiants appropri\u00e9s\u00a0:<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-150122\" src=\"https:\/\/media.jfrog.com\/wp-content\/uploads\/2025\/03\/24120835\/image-6.png\" alt=\"\" width=\"1223\" height=\"567\" \/><\/p>\n<div class=\"c-message_kit__blocks c-message_kit__blocks--rich_text\">\n<div class=\"c-message__message_blocks c-message__message_blocks--rich_text\" data-qa=\"message-text\">\n<div class=\"p-block_kit_renderer\" data-qa=\"block-kit-renderer\">\n<div class=\"p-block_kit_renderer__block_wrapper p-block_kit_renderer__block_wrapper--first\">\n<div class=\"p-rich_text_block\" dir=\"auto\">\n<div class=\"p-rich_text_section\">Passons \u00e0 l&#8217;exploitation\u00a0: essayons d&#8217;abord d&#8217;envoyer une requ\u00eate GET \u00e0 <code class=\"c-mrkdwn__code\" data-stringify-type=\"code\">\/admin\/dashboard<\/code> sans l&#8217;en-t\u00eate malveillant\u00a0:<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-150123\" src=\"https:\/\/media.jfrog.com\/wp-content\/uploads\/2025\/03\/24120901\/image-7.png\" alt=\"\" width=\"1289\" height=\"175\" \/><\/p>\n<div class=\"c-message_kit__blocks c-message_kit__blocks--rich_text\">\n<div class=\"c-message__message_blocks c-message__message_blocks--rich_text\" data-qa=\"message-text\">\n<div class=\"p-block_kit_renderer\" data-qa=\"block-kit-renderer\">\n<div class=\"p-block_kit_renderer__block_wrapper p-block_kit_renderer__block_wrapper--first\">\n<div class=\"p-rich_text_block\" dir=\"auto\">\n<div class=\"p-rich_text_section\">Nous recevons une r\u00e9ponse 401 Unauthorized, car notre middleware s\u2019active et constate qu\u2019il ne s\u2019agit pas d\u2019un compte administrateur\u00a0:<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p><img decoding=\"async\" class=\"alignnone wp-image-150124\" src=\"https:\/\/media.jfrog.com\/wp-content\/uploads\/2025\/03\/24120909\/image-8.png\" alt=\"\" width=\"237\" height=\"195\" \/><\/p>\n<div class=\"c-message_kit__blocks c-message_kit__blocks--rich_text\">\n<div class=\"c-message__message_blocks c-message__message_blocks--rich_text\" data-qa=\"message-text\">\n<div class=\"p-block_kit_renderer\" data-qa=\"block-kit-renderer\">\n<div class=\"p-block_kit_renderer__block_wrapper p-block_kit_renderer__block_wrapper--first\">\n<div class=\"p-rich_text_block\" dir=\"auto\">\n<div class=\"p-rich_text_section\">Essayons maintenant de r\u00e9p\u00e9ter la m\u00eame op\u00e9ration en ajoutant l\u2019en-t\u00eate <code class=\"c-mrkdwn__code\" data-stringify-type=\"code\">x-middleware-subrequest<\/code>\u00a0:<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-150125\" src=\"https:\/\/media.jfrog.com\/wp-content\/uploads\/2025\/03\/24120918\/image-9.png\" alt=\"\" width=\"1164\" height=\"238\" \/><\/p>\n<div class=\"c-message_kit__blocks c-message_kit__blocks--rich_text\">\n<div class=\"c-message__message_blocks c-message__message_blocks--rich_text\" data-qa=\"message-text\">\n<div class=\"p-block_kit_renderer\" data-qa=\"block-kit-renderer\">\n<div class=\"p-block_kit_renderer__block_wrapper p-block_kit_renderer__block_wrapper--first\">\n<div class=\"p-rich_text_block\" dir=\"auto\">\n<div class=\"p-rich_text_section\">Nous recevons une r\u00e9ponse 200 OK\u00a0!<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p><img decoding=\"async\" class=\"alignnone wp-image-150126\" src=\"https:\/\/media.jfrog.com\/wp-content\/uploads\/2025\/03\/24120925\/image-10.png\" alt=\"\" width=\"239\" height=\"266\" \/><\/p>\n<div class=\"c-message_kit__blocks c-message_kit__blocks--rich_text\">\n<div class=\"c-message__message_blocks c-message__message_blocks--rich_text\" data-qa=\"message-text\">\n<div class=\"p-block_kit_renderer\" data-qa=\"block-kit-renderer\">\n<div class=\"p-block_kit_renderer__block_wrapper p-block_kit_renderer__block_wrapper--first\">\n<div class=\"p-rich_text_block\" dir=\"auto\">\n<div class=\"p-rich_text_section\">Gr\u00e2ce \u00e0 l\u2019aper\u00e7u web, nous pouvons \u00e9galement constater que nous avons bien re\u00e7u le document pr\u00e9sent\u00e9 pr\u00e9c\u00e9demment\u00a0:<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-150128\" src=\"https:\/\/media.jfrog.com\/wp-content\/uploads\/2025\/03\/24120950\/image-12.png\" alt=\"\" width=\"1262\" height=\"538\" \/><\/p>\n<h2>Correction de la CVE-2025-29927<\/h2>\n<h3>Mise \u00e0 niveau de la version<\/h3>\n<p>La meilleure fa\u00e7on de corriger la CVE-2025-29927 consiste \u00e0 mettre \u00e0 niveau votre version de Next.js vers l\u2019une des versions corrig\u00e9es\u00a0:<\/p>\n<ul>\n<li>15.2.3<\/li>\n<li>14.2.25<\/li>\n<\/ul>\n<p>Veillez \u00e0 identifier toutes les versions potentiellement vuln\u00e9rables, de la version\u00a011.1.4 \u00e0 la version\u00a013.5.6 incluse, ainsi que les versions\u00a014.2.24 et 15.2.2, puis \u00e0 les remplacer par cette nouvelle version corrig\u00e9e.<\/p>\n<h3>Blocage de l\u2019en-t\u00eate vuln\u00e9rable sur le serveur web<\/h3>\n<p>S\u2019il n\u2019est pas possible d\u2019effectuer la mise \u00e0 niveau, vous pouvez att\u00e9nuer la vuln\u00e9rabilit\u00e9 en configurant votre serveur web de mani\u00e8re \u00e0 supprimer l\u2019en-t\u00eate x-middleware-subrequest des requ\u00eates entrantes.<\/p>\n<p>Dans Apache, ajoutez la directive suivante au fichier <code>.htaccess<\/code> (<code>mod_headers<\/code> doit \u00eatre install\u00e9 et activ\u00e9)\u00a0:<\/p>\n<pre class=\"language-bash\"> &lt;IfModule mod_headers.c&gt;\r\n   RequestHeader unset x-middleware-subrequest\r\n &lt;\/IfModule&gt;<\/pre>\n<p>Dans NGINX, modifiez le fichier <code>nginx.conf<\/code> et ajoutez la directive <code>proxy_set_header<\/code> suivante au bloc server\u00a0:<\/p>\n<p><code>\u00a0proxy_set_header x-middleware-subrequest \"\";<\/code><\/p>\n<p>Par exemple\u00a0:<\/p>\n<pre class=\"language-bash\"> server {\r\n\u00a0  listen 80;\r\n\u00a0  server_name your_domain.com;\r\n\u00a0  location \/ {\r\n\u00a0 \u00a0  proxy_set_header x-middleware-subrequest \"\";\r\n\u00a0  }\r\n }<\/pre>\n<p>Dans Express.js, ajoutez la directive suivante \u00e0 votre code source JavaScript\u00a0:<\/p>\n<pre class=\"language-python\"> \/\/ Middleware permettant de supprimer l\u2019en-t\u00eate x-middleware-subrequest\r\n app.use((req, res, next) =&gt; {\r\n   delete req.headers['x-middleware-subrequest'];\r\n   next();\r\n });<\/pre>\n<h3>Blocage de l\u2019en-t\u00eate vuln\u00e9rable \u00e0 l\u2019aide d\u2019un WAF<\/h3>\n<p>S\u2019il n\u2019est pas possible d\u2019effectuer la mise \u00e0 niveau, vous pouvez att\u00e9nuer la vuln\u00e9rabilit\u00e9 en utilisant un pare-feu d\u2019applications web afin de bloquer les requ\u00eates contenant l\u2019en-t\u00eate HTTP <code>x-middleware-subrequest<\/code>.<\/p>\n<h3>Correction de la CVE-2025-29927 avec JFrog Xray et JFrog Advanced Security<\/h3>\n<p>Comme toujours, <a class=\"c-link\" href=\"https:\/\/jfrog.com\/fr\/xray\/\" target=\"_blank\" rel=\"noopener noreferrer\" data-stringify-link=\"https:\/\/jfrog.com\/fr\/xray\/\" data-sk=\"tooltip_parent\">JFrog Security Essentials (Xray)<\/a> permet d\u2019identifier chaque occurrence de Next.js dans l\u2019ensemble de votre base de code et de vos artefacts compil\u00e9s, notamment les conteneurs Docker, les packages de d\u00e9p\u00f4ts et m\u00eame les fichiers binaires autonomes.<\/p>\n<p><a class=\"c-link\" href=\"https:\/\/jfrog.com\/fr\/devops-native-security\/\" target=\"_blank\" rel=\"noopener noreferrer\" data-stringify-link=\"https:\/\/jfrog.com\/fr\/devops-native-security\/\" data-sk=\"tooltip_parent\">JFrog Advanced Security<\/a> a \u00e9galement \u00e9t\u00e9 mis \u00e0 jour avec un scanner d\u2019<a href=\"https:\/\/jfrog.com\/fr\/xray\/contextual-vulnerabilities\/\">analyse contextuelle<\/a> qui v\u00e9rifie automatiquement si votre d\u00e9ploiement Next.js est r\u00e9ellement vuln\u00e9rable \u00e0 la CVE-2025-29927, en d\u00e9terminant si un middleware Next.js est utilis\u00e9.<\/p>\n<p><a href=\"https:\/\/media.jfrog.com\/wp-content\/uploads\/2025\/03\/24162310\/image-13-e1742826359138.png\"><img decoding=\"async\" class=\"alignnone wp-image-150155\" src=\"https:\/\/jfrog.com\/fr\/wp-content\/uploads\/2025\/03\/image-13-e1742826359138.png\" alt=\"\" width=\"1138\" height=\"539\" srcset=\"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2025\/03\/24162310\/image-13-e1742826359138.png?speedsize=w_1670 1670w, https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2025\/03\/24162310\/image-13-e1742826359138.png?speedsize=w_300 300w, https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2025\/03\/24162310\/image-13-e1742826359138.png?speedsize=w_768 768w, https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2025\/03\/24162310\/image-13-e1742826359138.png?speedsize=w_1024 1024w, https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2025\/03\/24162310\/image-13-e1742826359138.png?speedsize=w_1536 1536w\" sizes=\"(max-width: 1138px) 100vw, 1138px\" \/><\/a><br \/>\n<em>Plateforme JFrog\u00a0: analyse contextuelle JFrog de la CVE-2025-29927 dans Next.js (cliquez sur l\u2019image pour l\u2019afficher en taille r\u00e9elle)<\/em><\/p>\n<p>Consultez le centre de <a href=\"https:\/\/research.jfrog.com\/\">recherche en s\u00e9curit\u00e9 de JFrog<\/a> pour en savoir plus sur les derni\u00e8res CVE, vuln\u00e9rabilit\u00e9s et correctifs.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>CVE-2025-29927 &#8211; Le 21 mars 2025, les mainteneurs de Next.js ont annonc\u00e9 une nouvelle vuln\u00e9rabilit\u00e9 permettant de contourner les m\u00e9canismes d\u2019autorisation\u00a0: CVE-2025-29927. Cette vuln\u00e9rabilit\u00e9 peut \u00eatre facilement exploit\u00e9e afin de contourner les m\u00e9canismes d\u2019autorisation. Dans certains cas, son exploitation peut \u00e9galement entra\u00eener un empoisonnement du cache et un d\u00e9ni de service. Quelles versions de Next.js &hellip;<\/p>\n","protected":false},"author":590,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[10529,10153],"tags":[11406,11362,11286,9999,10000],"class_list":["post-174412","post","type-post","status-publish","format-standard","hentry","category-communaute","category-securite-et-devsecops","tag-next-js","tag-cve","tag-vulnerabilites","tag-securite-recherche","tag-cve-analyse"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v22.6 (Yoast SEO v22.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Comprendre le contournement d\u2019autorisation de Next.js li\u00e9 \u00e0 la CVE-2025-29927<\/title>\n<meta name=\"description\" content=\"Prot\u00e9gez vos applications contre la CVE-2025-29927, une attaque peu complexe capable de contourner les m\u00e9canismes d\u2019authentification de Next.js et d\u2019\u00e9viter des contr\u00f4les essentiels d\u2019autorisation et de validation\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jfrog.com\/fr\/wp-json\/wp\/v2\/posts\/174412\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"CVE-2025-29927 - Vuln\u00e9rabilit\u00e9 de contournement d\u2019autorisation dans Next.js\u00a0: Tout ce que vous devez savoir\" \/>\n<meta property=\"og:description\" content=\"Prot\u00e9gez vos applications contre la CVE-2025-29927, une attaque peu complexe capable de contourner les m\u00e9canismes d\u2019authentification de Next.js et d\u2019\u00e9viter des contr\u00f4les essentiels d\u2019autorisation et de validation\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jfrog.com\/fr\/blog\/cve-2025-29927-next-js-authorization-bypass\/\" \/>\n<meta property=\"og:site_name\" content=\"JFrog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/artifrog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-15T09:29:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-15T11:13:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/media.jfrog.com\/wp-content\/uploads\/2025\/03\/23164150\/Next.js_CVE-2025-29927_1200x628.png\" \/>\n<meta name=\"author\" content=\"drewt\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@jfrog\" \/>\n<meta name=\"twitter:site\" content=\"@jfrog\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"drewt\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jfrog.com\/fr\/blog\/cve-2025-29927-next-js-authorization-bypass\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jfrog.com\/fr\/blog\/cve-2025-29927-next-js-authorization-bypass\/\"},\"author\":{\"name\":\"drewt\",\"@id\":\"https:\/\/jfrog.com\/fr\/#\/schema\/person\/c84b32acf61c0b7c85a306cb03697b28\"},\"headline\":\"CVE-2025-29927 &#8211; Vuln\u00e9rabilit\u00e9 de contournement d\u2019autorisation dans Next.js\u00a0: Tout ce que vous devez savoir\",\"datePublished\":\"2026-09-15T09:29:03+00:00\",\"dateModified\":\"2026-09-15T11:13:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jfrog.com\/fr\/blog\/cve-2025-29927-next-js-authorization-bypass\/\"},\"wordCount\":1871,\"publisher\":{\"@id\":\"https:\/\/jfrog.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/jfrog.com\/fr\/blog\/cve-2025-29927-next-js-authorization-bypass\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/jfrog.com\/wp-content\/uploads\/2025\/03\/Next.js_CVE-2025-29927_863x300.png\",\"keywords\":[\"next.js\",\"CVE\",\"vuln\u00e9rabilit\u00e9s\",\"securite-recherche\",\"cve-analyse\"],\"articleSection\":[\"Communaut\u00e9\",\"S\u00e9curit\u00e9 et DevSecOps\"],\"inLanguage\":\"fr-FR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jfrog.com\/fr\/blog\/cve-2025-29927-next-js-authorization-bypass\/\",\"url\":\"https:\/\/jfrog.com\/fr\/blog\/cve-2025-29927-next-js-authorization-bypass\/\",\"name\":\"Comprendre le contournement d\u2019autorisation de Next.js li\u00e9 \u00e0 la CVE-2025-29927\",\"isPartOf\":{\"@id\":\"https:\/\/jfrog.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/jfrog.com\/fr\/blog\/cve-2025-29927-next-js-authorization-bypass\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/jfrog.com\/fr\/blog\/cve-2025-29927-next-js-authorization-bypass\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/jfrog.com\/wp-content\/uploads\/2025\/03\/Next.js_CVE-2025-29927_863x300.png\",\"datePublished\":\"2026-09-15T09:29:03+00:00\",\"dateModified\":\"2026-09-15T11:13:21+00:00\",\"description\":\"Prot\u00e9gez vos applications contre la CVE-2025-29927, une attaque peu complexe capable de contourner les m\u00e9canismes d\u2019authentification de Next.js et d\u2019\u00e9viter des contr\u00f4les essentiels d\u2019autorisation et de validation\",\"breadcrumb\":{\"@id\":\"https:\/\/jfrog.com\/fr\/blog\/cve-2025-29927-next-js-authorization-bypass\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jfrog.com\/fr\/blog\/cve-2025-29927-next-js-authorization-bypass\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/jfrog.com\/fr\/blog\/cve-2025-29927-next-js-authorization-bypass\/#primaryimage\",\"url\":\"https:\/\/jfrog.com\/wp-content\/uploads\/2025\/03\/Next.js_CVE-2025-29927_863x300.png\",\"contentUrl\":\"https:\/\/jfrog.com\/wp-content\/uploads\/2025\/03\/Next.js_CVE-2025-29927_863x300.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jfrog.com\/fr\/blog\/cve-2025-29927-next-js-authorization-bypass\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jfrog.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"CVE-2025-29927 &#8211; Vuln\u00e9rabilit\u00e9 de contournement d\u2019autorisation dans Next.js\u00a0: Tout ce que vous devez savoir\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jfrog.com\/fr\/#website\",\"url\":\"https:\/\/jfrog.com\/fr\/\",\"name\":\"JFrog\",\"description\":\"Deliver Trusted Software Releases at Speed and Scale\",\"publisher\":{\"@id\":\"https:\/\/jfrog.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jfrog.com\/fr\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jfrog.com\/fr\/#organization\",\"name\":\"JFrog\",\"url\":\"https:\/\/jfrog.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/jfrog.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2025\/05\/27095207\/Logo.svg\",\"contentUrl\":\"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2025\/05\/27095207\/Logo.svg\",\"width\":74,\"height\":73,\"caption\":\"JFrog\"},\"image\":{\"@id\":\"https:\/\/jfrog.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/artifrog\",\"https:\/\/x.com\/jfrog\",\"https:\/\/www.linkedin.com\/company\/455737\",\"https:\/\/www.youtube.com\/channel\/UCh2hNg76zo3d1qQqTWIQxDg\",\"https:\/\/www.wikidata.org\/wiki\/Q98608948\"],\"description\":\"We set out on our Liquid Software journey in 2008, with the mission to transform the way enterprises manage and release software updates. The world expects software to update continuously, securely, non-intrusively and without user intervention. This hyper-connected experience can only be enabled by automation with an end-to-end DevOps platform and a binary-centric focus. With this in mind, we\u2019ve developed the JFrog Platform, ushering in a new era of DevOps and DevSecOps standards that power continuous updates. More than a decade after our founding, with thousands of customers and millions of users globally, JFrog has become the \u201cDatabase of DevOps\u201d and the de-facto standard in release and update management.\",\"legalName\":\"Jfrog, Inc.\",\"numberOfEmployees\":{\"@type\":\"QuantitativeValue\",\"minValue\":\"1001\",\"maxValue\":\"5000\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jfrog.com\/fr\/#\/schema\/person\/c84b32acf61c0b7c85a306cb03697b28\",\"name\":\"drewt\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/jfrog.com\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a9566b6b2e5e2e34deeb94dfeae460f70d7c7d08606c66ebb53f94a07386253c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a9566b6b2e5e2e34deeb94dfeae460f70d7c7d08606c66ebb53f94a07386253c?s=96&d=mm&r=g\",\"caption\":\"drewt\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Comprendre le contournement d\u2019autorisation de Next.js li\u00e9 \u00e0 la CVE-2025-29927","description":"Prot\u00e9gez vos applications contre la CVE-2025-29927, une attaque peu complexe capable de contourner les m\u00e9canismes d\u2019authentification de Next.js et d\u2019\u00e9viter des contr\u00f4les essentiels d\u2019autorisation et de validation","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jfrog.com\/fr\/wp-json\/wp\/v2\/posts\/174412","og_locale":"fr_FR","og_type":"article","og_title":"CVE-2025-29927 - Vuln\u00e9rabilit\u00e9 de contournement d\u2019autorisation dans Next.js\u00a0: Tout ce que vous devez savoir","og_description":"Prot\u00e9gez vos applications contre la CVE-2025-29927, une attaque peu complexe capable de contourner les m\u00e9canismes d\u2019authentification de Next.js et d\u2019\u00e9viter des contr\u00f4les essentiels d\u2019autorisation et de validation","og_url":"https:\/\/jfrog.com\/fr\/blog\/cve-2025-29927-next-js-authorization-bypass\/","og_site_name":"JFrog","article_publisher":"https:\/\/www.facebook.com\/artifrog","article_published_time":"2026-09-15T09:29:03+00:00","article_modified_time":"2026-09-15T11:13:21+00:00","og_image":[{"url":"https:\/\/media.jfrog.com\/wp-content\/uploads\/2025\/03\/23164150\/Next.js_CVE-2025-29927_1200x628.png"}],"author":"drewt","twitter_card":"summary_large_image","twitter_creator":"@jfrog","twitter_site":"@jfrog","twitter_misc":{"Written by":"drewt","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jfrog.com\/fr\/blog\/cve-2025-29927-next-js-authorization-bypass\/#article","isPartOf":{"@id":"https:\/\/jfrog.com\/fr\/blog\/cve-2025-29927-next-js-authorization-bypass\/"},"author":{"name":"drewt","@id":"https:\/\/jfrog.com\/fr\/#\/schema\/person\/c84b32acf61c0b7c85a306cb03697b28"},"headline":"CVE-2025-29927 &#8211; Vuln\u00e9rabilit\u00e9 de contournement d\u2019autorisation dans Next.js\u00a0: Tout ce que vous devez savoir","datePublished":"2026-09-15T09:29:03+00:00","dateModified":"2026-09-15T11:13:21+00:00","mainEntityOfPage":{"@id":"https:\/\/jfrog.com\/fr\/blog\/cve-2025-29927-next-js-authorization-bypass\/"},"wordCount":1871,"publisher":{"@id":"https:\/\/jfrog.com\/fr\/#organization"},"image":{"@id":"https:\/\/jfrog.com\/fr\/blog\/cve-2025-29927-next-js-authorization-bypass\/#primaryimage"},"thumbnailUrl":"https:\/\/jfrog.com\/wp-content\/uploads\/2025\/03\/Next.js_CVE-2025-29927_863x300.png","keywords":["next.js","CVE","vuln\u00e9rabilit\u00e9s","securite-recherche","cve-analyse"],"articleSection":["Communaut\u00e9","S\u00e9curit\u00e9 et DevSecOps"],"inLanguage":"fr-FR"},{"@type":"WebPage","@id":"https:\/\/jfrog.com\/fr\/blog\/cve-2025-29927-next-js-authorization-bypass\/","url":"https:\/\/jfrog.com\/fr\/blog\/cve-2025-29927-next-js-authorization-bypass\/","name":"Comprendre le contournement d\u2019autorisation de Next.js li\u00e9 \u00e0 la CVE-2025-29927","isPartOf":{"@id":"https:\/\/jfrog.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/jfrog.com\/fr\/blog\/cve-2025-29927-next-js-authorization-bypass\/#primaryimage"},"image":{"@id":"https:\/\/jfrog.com\/fr\/blog\/cve-2025-29927-next-js-authorization-bypass\/#primaryimage"},"thumbnailUrl":"https:\/\/jfrog.com\/wp-content\/uploads\/2025\/03\/Next.js_CVE-2025-29927_863x300.png","datePublished":"2026-09-15T09:29:03+00:00","dateModified":"2026-09-15T11:13:21+00:00","description":"Prot\u00e9gez vos applications contre la CVE-2025-29927, une attaque peu complexe capable de contourner les m\u00e9canismes d\u2019authentification de Next.js et d\u2019\u00e9viter des contr\u00f4les essentiels d\u2019autorisation et de validation","breadcrumb":{"@id":"https:\/\/jfrog.com\/fr\/blog\/cve-2025-29927-next-js-authorization-bypass\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jfrog.com\/fr\/blog\/cve-2025-29927-next-js-authorization-bypass\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/jfrog.com\/fr\/blog\/cve-2025-29927-next-js-authorization-bypass\/#primaryimage","url":"https:\/\/jfrog.com\/wp-content\/uploads\/2025\/03\/Next.js_CVE-2025-29927_863x300.png","contentUrl":"https:\/\/jfrog.com\/wp-content\/uploads\/2025\/03\/Next.js_CVE-2025-29927_863x300.png"},{"@type":"BreadcrumbList","@id":"https:\/\/jfrog.com\/fr\/blog\/cve-2025-29927-next-js-authorization-bypass\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jfrog.com\/fr\/"},{"@type":"ListItem","position":2,"name":"CVE-2025-29927 &#8211; Vuln\u00e9rabilit\u00e9 de contournement d\u2019autorisation dans Next.js\u00a0: Tout ce que vous devez savoir"}]},{"@type":"WebSite","@id":"https:\/\/jfrog.com\/fr\/#website","url":"https:\/\/jfrog.com\/fr\/","name":"JFrog","description":"Deliver Trusted Software Releases at Speed and Scale","publisher":{"@id":"https:\/\/jfrog.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jfrog.com\/fr\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/jfrog.com\/fr\/#organization","name":"JFrog","url":"https:\/\/jfrog.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/jfrog.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2025\/05\/27095207\/Logo.svg","contentUrl":"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2025\/05\/27095207\/Logo.svg","width":74,"height":73,"caption":"JFrog"},"image":{"@id":"https:\/\/jfrog.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/artifrog","https:\/\/x.com\/jfrog","https:\/\/www.linkedin.com\/company\/455737","https:\/\/www.youtube.com\/channel\/UCh2hNg76zo3d1qQqTWIQxDg","https:\/\/www.wikidata.org\/wiki\/Q98608948"],"description":"We set out on our Liquid Software journey in 2008, with the mission to transform the way enterprises manage and release software updates. The world expects software to update continuously, securely, non-intrusively and without user intervention. This hyper-connected experience can only be enabled by automation with an end-to-end DevOps platform and a binary-centric focus. With this in mind, we\u2019ve developed the JFrog Platform, ushering in a new era of DevOps and DevSecOps standards that power continuous updates. More than a decade after our founding, with thousands of customers and millions of users globally, JFrog has become the \u201cDatabase of DevOps\u201d and the de-facto standard in release and update management.","legalName":"Jfrog, Inc.","numberOfEmployees":{"@type":"QuantitativeValue","minValue":"1001","maxValue":"5000"}},{"@type":"Person","@id":"https:\/\/jfrog.com\/fr\/#\/schema\/person\/c84b32acf61c0b7c85a306cb03697b28","name":"drewt","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/jfrog.com\/fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/a9566b6b2e5e2e34deeb94dfeae460f70d7c7d08606c66ebb53f94a07386253c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a9566b6b2e5e2e34deeb94dfeae460f70d7c7d08606c66ebb53f94a07386253c?s=96&d=mm&r=g","caption":"drewt"}}]}},"_links":{"self":[{"href":"https:\/\/jfrog.com\/fr\/wp-json\/wp\/v2\/posts\/174412","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jfrog.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jfrog.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jfrog.com\/fr\/wp-json\/wp\/v2\/users\/590"}],"replies":[{"embeddable":true,"href":"https:\/\/jfrog.com\/fr\/wp-json\/wp\/v2\/comments?post=174412"}],"version-history":[{"count":4,"href":"https:\/\/jfrog.com\/fr\/wp-json\/wp\/v2\/posts\/174412\/revisions"}],"predecessor-version":[{"id":174484,"href":"https:\/\/jfrog.com\/fr\/wp-json\/wp\/v2\/posts\/174412\/revisions\/174484"}],"wp:attachment":[{"href":"https:\/\/jfrog.com\/fr\/wp-json\/wp\/v2\/media?parent=174412"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jfrog.com\/fr\/wp-json\/wp\/v2\/categories?post=174412"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jfrog.com\/fr\/wp-json\/wp\/v2\/tags?post=174412"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}