【漏洞复现】Next.js 中间件认证绕过漏洞(CVE-2025-29927)漏洞复现

❤️博客主页 iknow181
🔥系列专栏 网络安全、 PythonJavaSEJavaWebCCNP
🎉欢迎大家点赞👍收藏⭐评论✍


在这里插入图片描述

0x00 免责声明

本文所述漏洞复现方法仅供安全研究及授权测试使用;任何个人/组织须在合法合规前提下实施,严禁用于非法目的。作者不对任何滥用行为及后果负责,如发现新漏洞请及时联系厂商并遵循漏洞披露规则。

0x01 组件介绍

Next.js 是由 Vercel 开发的基于 React 的现代 Web 应用框架,具备前后端一体的开发能力,提供服务器端渲染、静态网站生成和集成路由系统等功能。

fofa语法:app="NEXT.JS"

0x02 漏洞描述

近日,Next.js 官方披露了一个严重级别的安全漏洞(CVE-2025-29927),该漏洞影响了大量使用 Next.js 中间件实现授权功能的应用程序。该漏洞源于Next.js使用中间件进行身份验证和授权的过程存在漏洞,该漏洞允许攻击者通过操作 x-middleware-subrequest 请求头来绕过基于中间件的安全控制,从而可能获得对受保护资源和敏感数据的未授权访问。

该漏洞的根本原因在于 Next.js 中间件处理子请求的机制存在缺陷:

  1. 内部子请求标识:当中间件需要向内部路由发出请求时(例如获取数据或验证信息),Next.js 会自动添加x-middleware-subrequest头,以标识这是一个内部请求,防止中间件陷入无限循环。
  2. 来源验证缺失:漏洞出现的关键点是 Next.js 没有正确验证这个头的来源。当外部请求携带此头时,中间件错误地将其识别为内部子请求。
  3. 中间件执行逻辑:当检测到x-middleware-subrequest头时,Next.js 会跳过对该请求的中间件执行,直接将请求传递给目标路由或 API。
  4. 授权绕过实现:攻击者只需在请求中添加特殊的头部信息,就能使中间件的授权检查被完全跳过,直接访问受保护资源。

0x03 影响版本

15.* <= Next.js <15.2.3

14.* <= Next.js <14.2.25

11.1.4 <= Next.js <= 13.5.6

0x04 漏洞复现

搭建靶场

GitHub - t3tra-dev/cve-2025-29927-demo: Next.js における認可バイパスの脆弱性を再現するデモです。

使用 nvm

启动

漏洞验证

(1)正常访问,无法绕过权限认证

直接访问protected 是需要认证的

(2)在请求头中加入特殊头部信息,即可直接访问到需要权限的页面

0x05 防护措施

  • 临时缓解措施

拦截访问Nextjs应用中HTTP请求头包含的x-middleware-subrequest字段。

如果暂时没法升级,可以在中间件里手动拦截这个恶意请求

export function middleware(request: NextRequest) {  
    if (request.headers.has('x-middleware-subrequest')) {    
        return new Response('Unauthorized', { status: 401 });  
}  
return NextResponse.next();
}
  • 修复建议

目前,官方已发布修复建议,建议受影响的用户尽快升级至安全版本:

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

参考文章:

【已复现】Next.js middleware 权限绕过漏洞(CVE-2025-29927)

知名React框架Next.js被爆出重大漏洞!黑客无需登录即可绕过权限访问你的网站

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iknow181

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值