🚨 紧急!Next.js 中间件曝高危漏洞!开发者必看!
漏洞速览
CVE编号:CVE-2025-29927
严重性:Critical(最高级!CVSS 10分!)
影响范围:通过中间件做权限校验的Next.js应用
攻击手段:利用 x-middleware-subrequest
请求头绕过授权,直接访问敏感页面/接口!
🔥 漏洞影响范围?
-
受影响版本:
- 11.1.4 ~ 13.5.6
- 14.0 ~ 14.2.25 之前的版本
- 15.0 ~ 15.2.3 之前的版本
-
已修复版本:
- 14.2.25
- 15.2.3
如果你在使用自托管(self-hosted)的 Next.js,并且依赖中间件来做权限验证,小心!你需要赶紧升级或者采取临时处理措施。
漏洞原理
Next.js中间件常用于拦截请求做权限检查(比如重定向未登录用户)。但攻击者可通过伪造请求头 x-middleware-subrequest: true
,让中间件误以为是内部子请求,直接放行!
GET /admin HTTP/1.1
Host: your-site.com
x-middleware-subrequest: true 👈 恶意注入!
如何修复?
1️⃣ 立刻升级到安全版本!
2️⃣ 临时方案(若无法升级):在中间件中拦截该请求头!
// middleware.ts
export function middleware(request: NextRequest) {
if (request.headers.get('x-middleware-subrequest')) {
return new Response('Blocked!', { status: 401 });
}
return NextResponse.next();
}
社区热议🔥
来自Reddit开发者们的血泪经验:
- @information-general: “中间件只能做乐观检查!真正的权限验证必须放在页面和数据库层!”
- @VanitySyndicate: “别在中间件里调数据库!连接池炸了谁背锅?”
- @happybday90: “用Postgres行级安全(RLS)兜底,即使中间件被绕,数据也不泄露!”
💡 关键教训:中间件是第一道防线,而非唯一防线!
自查清单
- 检查Next.js版本并升级
- 审查中间件逻辑,移除敏感操作(如DB查询)
- 在页面/API路由中追加权限校验
- 监控日志中异常
x-middleware-subrequest
请求
Vercel官方响应
- 已火速发布补丁,历史漏洞修复评分A+!
- 详细公告:Next.js博客