❤️博客主页: iknow181
🔥系列专栏: 网络安全、 Python、JavaSE、JavaWeb、CCNP
🎉欢迎大家点赞👍收藏⭐评论✍
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 中间件处理子请求的机制存在缺陷:
- 内部子请求标识:当中间件需要向内部路由发出请求时(例如获取数据或验证信息),Next.js 会自动添加
x-middleware-subrequest
头,以标识这是一个内部请求,防止中间件陷入无限循环。 - 来源验证缺失:漏洞出现的关键点是 Next.js 没有正确验证这个头的来源。当外部请求携带此头时,中间件错误地将其识别为内部子请求。
- 中间件执行逻辑:当检测到
x-middleware-subrequest
头时,Next.js 会跳过对该请求的中间件执行,直接将请求传递给目标路由或 API。 - 授权绕过实现:攻击者只需在请求中添加特殊的头部信息,就能使中间件的授权检查被完全跳过,直接访问受保护资源。
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被爆出重大漏洞!黑客无需登录即可绕过权限访问你的网站