Next.js 中间件曝高危漏洞!开发者必看!

🚨 紧急!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博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值