CVE-2025-29927:Next.js 中间件授权绕过漏洞深度分析

本文详细分析了Next.js框架中的CVE-2025-29927漏洞,该漏洞由于错误信任x-middleware-subrequest头导致中间件逻辑被完全绕过,攻击者可借此越权访问受保护路由。文章包含漏洞原理、影响版本、检测方法和修复方案。

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
2
3
GET /admin HTTP/1.1
Host: vulnerable-app.com
x-middleware-subrequest: middleware

服务器误判为可信内部请求,从而绕过会话/角色验证等中间件逻辑。

攻击影响

  • 无需认证访问受保护路由
  • 绕过关键授权逻辑
  • 实现权限提升
  • 访问中间件暴露的内部功能

检测方案

  1. 版本检查

    1
    
    npm list next 或 yarn list next
    

    低于以下版本即存在风险:

    • 12.3.5
    • 13.5.9
    • 14.2.25
    • 15.2.3
  2. 中间件审计
    检查依赖中间件进行访问控制的路由

  3. 日志分析
    监控外部IP使用x-middleware-subrequest头的异常请求

修复建议

紧急修复
升级至以下版本:

  • 12.3.5+
  • 13.5.9+
  • 14.2.25+
  • 15.2.3+

临时方案
在反向代理层(如Nginx、Cloudflare)拦截或剥离x-middleware-subrequest

长期实践

  • 避免仅依赖中间件进行认证/授权
  • 在路由/控制器层实现备用访问控制

参考链接

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计