漏洞利用方式
该漏洞可通过添加x-middleware-subrequest: middleware标头来绕过 Next.js 的身份验证检查。
漏洞编号
CVE-2025-29927
漏洞原理
这里稍稍引用大佬的原文内容。
主要的漏洞原因就是这段标圈的代码会取header头x-middleware-subrequest的值,然后使用:进行分割,最后问题在于只要校验这个请求头内容里面包含middlewareInfo.name就无视next.js的认证直接bypass。
这里的middlewareInfo.name即中间件所在的路径。
在12.2版本之前,中间件文件的命名为_middleware.ts,在之后的版本则为middleware.ts,因此可能的payload包含:
x-middleware-subrequest: pages/_middleware
x-middleware-subrequest: middleware
x-middleware-subrequest: src/middleware
......
而在较新的版本中,代码逻辑相比之前稍稍有些许变化,看以下这段代码,可以看到需要进行5次分割。
因此在较新版本里面payload为:
x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware
x-middleware-subrequest: src/middleware:src/middleware:src/middleware:src/middleware:src/middleware
.....
漏洞复现
如下,内部刚好有一个使用next.js进行身份验证的应用,直接访问可以看到,无法认证,授权不通过。
原文始发于微信公众号(安全无界):next.js再出严重安全漏洞
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论