前端开发圈今天炸锅了。Vercel一口气发布了十多条安全公告,Next.js从13.x到16.x版本全线中招,连带着React Server Components 19.x也未能幸免。拒绝服务攻击、中间件绕过、服务器端请求伪造、跨站脚本——四大高危漏洞类型集齐,堪称近年前端框架最严重的安全事件之一。
先说最棘手的。编号CVE-2026-23870的高危漏洞,影响范围极广:React Server Components 19.x全版本,以及所有使用App Router的Next.js 13.x至16.x部署。攻击手法并不复杂——向任意App Router Server Function端点发送精心构造的HTTP请求,反序列化时就能触发CPU资源耗尽,直接拖垮服务。
根因藏在React的"Flight"协议里。这个负责服务端组件数据传输的协议,反序列化逻辑缺乏足够的结构和类型约束,恶意payload长驱直入。Vercel的修复方案是加强payload校验,但在此之前,任何暴露Server Function的站点都是活靶子。
中间件绕过漏洞更隐蔽,一口气来了三个(GHSA-267c-6grr-h53f、GHSA-26hh-7cqf-hhc6、GHSA-492v-c6pp-mqqv)。问题出在.rsc和segment-prefetch URL的解析逻辑上——这些URL能绕到目标页面,却不触发中间件匹配规则。开发者以为加了个middleware就安全了,实际上保护内容裸奔在外。
修复方案是生成中间件匹配器时纳入App Router的传输变体,确保prefetch请求也走授权检查。但Vercel的临时建议很扎心:在升级之前,别信中间件,直接在路由或页面逻辑里写死授权判断。
CVE-2026-44578(GHSA-c4j6-fc7j-m34r)瞄准的是自托管Node.js部署。攻击者通过构造WebSocket升级请求,能把服务器变成任意请求的代理,内网服务、云元数据接口都可能被扒出来。云原生环境下这尤其致命——想想那些藏在VPC里的数据库管理界面。
唯一的好消息:Vercel官方托管服务不受影响。修复逻辑是把现有HTTP请求的安全检查同步套用到WebSocket握手流程。自托管用户得赶紧排查了。
Pages Router用户也别庆幸太早。CVE-2026-44573(GHSA-36qx-fr4f-26g5)专门伺候i18n+中间件授权的组合。不带locale前缀的/_next/data//.json请求能完全跳过中间件,攻击者直接拉取受保护页面的服务端渲染JSON,连登录都免了。
修复是统一了带前缀和不带前缀数据路由的匹配逻辑。但这里有个细节值得玩味:Next.js的i18n路由设计最初就没把data路由和中间件的交互考虑周全,这个坑埋了不止一个版本。
除此之外,中等和低危漏洞还有一批。CSP nonce场景下的XSS(GHSA-ffhc-5mcf-pf4q)、beforeIn开头的某个截断内容——从上下文看应该是beforeInteractive脚本相关的注入问题。原文在这里被截断,具体细节不得而知。
这次漏洞风暴有几个值得咀嚼的点。首先是App Router的"新架构原罪"——作为Next.js主推的未来方向,它的安全模型明显还没经过足够打磨。Flight协议、prefetch机制、Server Function,这些新抽象层都带来了传统SSR不曾有的攻击面。
其次是中间件的信任危机。Next.js文档一直把middleware塑造成"边缘计算时代的授权利器",结果连续三个CVE证明它的匹配逻辑存在结构性盲区。开发者被建议"在路由里写死授权",这几乎是在否定中间件的核心价值主张。
最后是自托管与托管服务的安全分野。两个高危漏洞(DoS和SSRF)都明确排除Vercel官方部署,这既是商业策略也是技术现实——平台方能在基础设施层做更激进的防护,而自托管用户得独自面对完整的攻击面。
升级路径相对清晰:Next.js 13.x、14.x、15.x、16.x都有对应补丁版本,React Server Components 19.x也需同步更新。但对于大型存量项目,"直接升级"四个字背后可能是数周的回归测试——尤其是深度使用Server Components和Edge Runtime的代码库。
一个尴尬的事实是,Next.js的安全公告发布机制本身也成了话题。十几个CVE一次性放出,开发者得在CHANGELOG和安全公告之间来回跳转才能拼出完整图景。相比之下,Node.js核心或Express的安全披露流程要系统化得多。
这次事件或许会加速两个趋势:一是企业对Next.js自托管部署的安全审计收紧,二是竞品框架(Remix、Astro、甚至回归Vite+纯前端路由)的评估重新升温。前端基础设施的"默认安全"假设,正在被逐一打破。
热门跟贴