Next.js 中间件身份认证绕过漏洞(CVE-2025-29927)

admin 2025年3月25日13:36:33评论33 views字数 1505阅读5分1秒阅读模式

先关注,不迷路

免责声明

       请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。

漏洞介绍

Next.js 是一个用于构建全栈 Web 应用程序的 React 框架。在 14.2.25 和 15.2.3 之前,该漏洞允许攻击者通过操纵 x-middleware-subrequest 请求头绕过基于中间件的安全控制,导致未经授权访问受保护资源和敏感数据。如果修补到安全版本不可行,建议您阻止包含 x-middleware-subrequest 标头的外部用户请求到达您的 Next.js 应用程序。此漏洞已在 14.2.25 和 15.2.3 中修复。

影响范围

11.1.4 < Next.js ≤ 13.5.614.0 < Next.js < 14.2.2515.0 < Next.js < 15.2.3

漏洞复现

环境搭建(提前安装npm)

git clone https://github.com/azu/nextjs-cve-2025-29927-pocnpm install next@15.2.2npm run dev
Next.js 中间件身份认证绕过漏洞(CVE-2025-29927)
Next.js 中间件身份认证绕过漏洞(CVE-2025-29927)
Next.js 中间件身份认证绕过漏洞(CVE-2025-29927)

POC:

(这微信页面直接复制代码格式会乱,可以浏览器打开复制)

使用 CVE-2025-29927 绕过中间件

x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware
Next.js 中间件身份认证绕过漏洞(CVE-2025-29927)

漏洞分析

旧版本的框架 (v12.0.7) 时,存在以下代码:

Next.js 中间件身份认证绕过漏洞(CVE-2025-29927)

当 next.js 应用程序使用中间件时,会使用 runMiddleware 函数,后者 - 除了其主要实用程序之外 - 检索 x-middleware-subrequest 标头的值,并使用它来了解是否应该应用中间件 。拆分标题值以使用列字符 (:) 作为分隔符创建列表,然后检查此列表是否包含 middlewareInfo.name 值。

这意味着,如果我们将具有正确值的 x-middleware-subrequest 标头添加到我们的请求中,中间件 - 无论其目的如何 - 都将被完全忽略 ,请求将通过 NextResponse.next() 转发,并将完成其到原始目的地的旅程 ,而不会受到中间件的任何影响 。

在较新的版本中,逻辑又发生了轻微的变化

Next.js 中间件身份认证绕过漏洞(CVE-2025-29927)

常量深度的值必须大于或等于常量 MAX_RECURSION_DEPTH 的值(即 5),分配后,每当列表 -subrequests- 的值之一(是标头值的结果,以 : 分隔)等于值 params.name 时,常量深度就会增加 1,该值只是中间件的路径 。如前所述, 只有两种可能性 :middleware 或 src/middleware

因此,我们只需要将以下 header添加到我们的请求中,以绕过中间件:

x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware

or

x-middleware-subrequest: src/middleware:src/middleware:src/middleware:src/middleware:src/middleware

修复意见

目前厂商已发布可更新版本15.2.3,建议用户尽快更新至 Next.js 的修复版本或更高的版本:

官方补丁下载:

https://github.com/vercel/next.js/releases

原文始发于微信公众号(PokerSec):【漏洞复现】Next.js 中间件身份认证绕过漏洞(CVE-2025-29927)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年3月25日13:36:33
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Next.js 中间件身份认证绕过漏洞(CVE-2025-29927)https://cn-sec.com/archives/3882162.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息