Next.js 出现严重安全漏洞

Next.js中间件曝高危漏洞:数万应用面临授权绕过风险

一、事件概述

2025年3月,Next.js官方披露编号为CVE到2025-29927(GHSA-f82v-jwr5-mffw)的严重安全漏洞。该漏洞影响所有使用Next.js中间件进行权限控制的应用程序,可能导致攻击者绕过授权检查,直接访问敏感数据或管理后台。

1.1 漏洞基本信息

  • 漏洞类型:授权绕过
  • CVSS评分:9.8(严重)
  • 影响版本
    • Next.js 11.1.4 13.5.6
    • Next.js 14.0.0 14.2.24
    • Next.js 15.0.0 15.2.2

二、漏洞技术解析

2.1 漏洞原理

漏洞源于Next.js中间件处理子请求的特殊机制:当应用程序通过中间件进行权限验证时,攻击者可通过构造特殊的请求头(X-Forwarded-Host),使系统将外部请求误判为内部子请求,从而绕过权限检查。

攻击示例:

GET /admin HTTP/1.1
Host: victim.com
X-Forwarded-Host: attacker.com

2.2 攻击场景

  1. 电子商务平台后台权限绕过
  2. 企业OA系统敏感数据泄露
  3. SaaS应用多租户隔离失效

三、影响范围与检测

3.1 受影响系统特征

特征项 判断标准
中间件使用 项目包含middleware.js文件
权限验证逻辑 在中间件中使用req.nextUrl.pathname进行路由判断
版本范围 使用受影响版本的Next.js框架

3.2 快速检测方法

  1. 执行命令:npm list next 查看版本号
  2. 检查package.json中next版本是否在安全范围内

四、修复方案

4.1 官方补丁升级

  • Next.js 14.x 用户升级至 14.2.25+
  • Next.js 15.x 用户升级至 15.2.3+

4.2 临时缓解措施

在中间件开头添加过滤逻辑:

export function middleware(req) {
  // 修复代码
  if(req.headers.get('x-middleware-rewrite')) {
    return new Response('Unauthorized', { status: 401 })
  }
}

五、最佳实践建议

  1. 采用分层防御机制:不在中间件中单独处理关键权限
  2. 启用请求签名验证:对内部子请求添加JWT签名校验
  3. 配置WAF规则:拦截包含X-Forwarded-Host的可疑请求

六、漏洞时间线

  • 2025到03-15:白帽黑客提交漏洞报告
  • 2025到03-17:Vercel发布安全公告
  • 2025到03-18:GitHub自动扫描通知受影响仓库

七、总结

本次Next.js中间件漏洞再次提醒开发者:框架级安全漏洞的影响范围和修复成本远高于业务代码漏洞。建议所有Next.js用户立即执行以下操作:

  1. 48小时内完成版本升级
  2. 72小时内进行渗透测试验证
  3. 建立框架漏洞监控机制

特别提醒:使用Next.js 13.5.6及以下版本的用户,由于官方已停止维护,建议直接升级至最新LTS版本。

上一篇
下一篇