紧急吃瓜!Next.js 爆出惊天漏洞:黑客也能“抄近道”?(附独家防御秘籍)
技术大揭秘:x-middleware-subrequest
头,是“后门”还是“捷径”?
想要彻底搞懂这个漏洞,就得先摸清 Next.js 的 Middleware 工作机制。Middleware 就像个“保安”,在请求到达最终目的地之前,负责各种安全检查、请求预处理等重要任务,比如:
-
验证身份:
检查 JWT 令牌、Session Cookie,确认你是不是“自己人”。
-
权限管理:
根据你的角色,决定你能看啥、能干啥。
-
日志记录:
你的每一步操作,都会被“小本本”记下来,方便日后审计。
-
花式操作:
重定向、AB 测试、IP 围栏、限流… Middleware 简直是万能的!
为了防止 Middleware 在内部跳转(比如路由重写 rewrite
)时被重复触发,Next.js 搞了个内部通信暗号——特殊的 HTTP 请求头 x-middleware-subrequest
。框架里的 runMiddleware
函数,每次处理请求都会先看看有没有这个“暗号”。
问题就出在这个“暗号”上!runMiddleware
对这个头过于信任,只要检测到请求里带了 x-middleware-subrequest
头,并且值和 Next.js 内部定义的特定标识符一模一样,就直接认定这是“自己人”发来的可信请求,然后… 然后就直接跳过整个 Middleware 执行链,把请求“放行”了!
这下可好,黑客们乐开了花!他们只需要在发送给 Next.js 应用的 HTTP 请求里,手动添加 x-middleware-subrequest
头,再附上那个公开的“暗号”,就能轻松绕过所有 Middleware 安全检查,简直就是拿到了一把“万能钥匙”!
影响范围大摸底:谁才是“天选倒霉蛋”?
成功绕过 Middleware,就相当于把你的第一道防线彻底攻破。黑客们可以为所欲为:
-
偷窥狂模式:
无需登录,就能访问敏感页面或数据接口。
-
越权狂魔:
本来没权限的操作,现在也能随便搞。
-
无视规则:
绕过支付验证、风控规则,想怎么玩就怎么玩。
不过,各位也别太慌,这次漏洞并非“地图炮”,而是有严格的限定条件:
-
部署环境:
只有自托管 (Self-hosted) 的 Next.js 应用才会受到影响。
-
启动方式与配置:
必须使用
next start
命令启动,并且在next.config.js
文件里显式配置output: 'standalone'
选项。 -
“幸运儿”:
部署在 Vercel 或 Netlify 平台上的 Next.js 应用通常不受影响。猜测是因为这些平台有强大的边缘网络架构和请求处理流程,在请求到达 Next.js 应用之前,就已经把 HTTP 头处理得妥妥当当了。另外,使用
next export
生成的纯静态网站也不受影响。 -
安全依赖:
只有那些严重依赖 Middleware 作为唯一安全检查点的应用,才会受到致命打击。如果在后续的 API 路由处理器、页面组件 (
getServerSideProps
,getInitialProps
等) 或业务逻辑层中,缺乏额外的安全校验,那可就真的凉凉了。
安全敲黑板:鸡蛋别放一个篮子里!
CVE-2025-29927 再次告诉我们,纵深防御 (Defense-in-Depth) 才是王道!千万别把所有安全希望都寄托在单一的技术环节或组件上。一个靠谱的应用,应该在网络入口、Web 服务器、应用框架(如 Middleware)、业务逻辑代码、数据库访问等多个层面都设置安全关卡。
紧急通知!受影响版本和修复方案来了!
-
危险名单:
Next.js 版本低于 15.2.3, 14.2.25, 13.5.9, 或 12.3.5 的所有实例(覆盖 v12 至 v15 主要版本线)。
-
“解药”已到:
官方已经发布了包含补丁的新版本,赶紧升级到 15.2.3, 14.2.25, 13.5.9, 12.3.5 或更高版本!
由于漏洞细节已经曝光,估计很快就会有公开的利用代码或扫描工具出现。强烈建议所有符合上述条件的自托管 Next.js 用户,立刻评估风险,火速升级!
亡羊补牢:临时抱佛脚方案
如果实在没办法立刻升级,可以试试以下临时方案,先稳住阵脚:
-
流量入口拦截:
在你的 Web 应用防火墙 (WAF)、Nginx/Apache 等反向代理服务器、云服务商提供的负载均衡器(如 AWS ALB/ELB, GCP Load Balancer)、或边缘网关(如 Cloudflare Rules, Akamai EdgeWorkers)上设置规则,拦截所有包含
x-middleware-subrequest
头的外部入站 HTTP 请求。一般来说,正常的外部客户端不会发送这个头,所以不用担心误伤。
Next.js CVE-2025-29927 漏洞再次提醒我们,即使是再流行的框架,也可能存在意想不到的安全风险。时刻关注安全动态,及时打补丁,坚持纵深防御,才是保护应用安全的正确姿势。赶紧检查你的 Next.js 应用,行动起来吧!
网络安全工程师(白帽子)企业级学习路线
第一阶段:安全基础(入门)
第二阶段:Web渗透(初级网安工程师)
第三阶段:进阶部分(中级网络安全工程师)
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!
学习资源分享
