CVE-2025-29927:Next.js中间件授权绕过
漏洞概述
2025年3月,流行的React框架Next.js披露了编号为CVE-2025-29927的关键漏洞。该漏洞影响12.3.5、13.5.9、14.2.25和15.2.3之前的版本,源于框架对x-middleware-subrequest
头的盲目信任。攻击者通过伪造该头可完全绕过中间件逻辑(包括认证授权机制),从而越权访问受保护路由。由于Next.js应用普遍依赖中间件,该漏洞影响范围广泛。
漏洞详情:
- CVE ID: CVE-2025-29927
- 危险等级: 严重
- CVSS评分: 9.1
- EPSS评分: 92.56
- 发布时间: 2025年3月
- 受影响版本: < 12.3.5, < 13.5.9, < 14.2.25, < 15.2.3
- 已修复版本: 12.3.5, 13.5.9, 14.2.25, 15.2.3
技术原理
Next.js使用中间件在路由请求前执行安全策略(如认证授权)。为避免内部重定向或服务端渲染(SSR)时的无限循环,框架会在内部请求中添加特殊头x-middleware-subrequest
。
漏洞本质在于框架未验证该头的来源。攻击者伪造该头即可欺骗服务器跳过中间件层,导致所有由中间件实施的访问控制逻辑失效。
攻击示例
攻击者发送包含伪造头的请求:
|
|
服务器误判为可信内部请求,从而绕过会话/角色验证等中间件逻辑。
攻击影响:
- 无需认证访问受保护路由
- 绕过关键授权逻辑
- 实现权限提升
- 访问中间件暴露的内部功能
检测方案
-
版本检查
1
npm list next 或 yarn list next
低于以下版本即存在风险:
- 12.3.5
- 13.5.9
- 14.2.25
- 15.2.3
-
中间件审计
检查依赖中间件进行访问控制的路由 -
日志分析
监控外部IP使用x-middleware-subrequest
头的异常请求
修复建议
紧急修复:
升级至以下版本:
- 12.3.5+
- 13.5.9+
- 14.2.25+
- 15.2.3+
临时方案:
在反向代理层(如Nginx、Cloudflare)拦截或剥离x-middleware-subrequest
头
长期实践:
- 避免仅依赖中间件进行认证/授权
- 在路由/控制器层实现备用访问控制