NextJS 彻底完了…… 13 个新增安全漏洞

원제 · Yeah it’s over for NextJS... 13 NEW vulnerabilities

16:033분 읽기Better Stack2026. 05. 11.컴퓨터/소프트웨어 · 경제 뉴스 · AI/미래기술

핵심 요약

Next.js 与 React 近期爆出的 13 个 CVE 漏洞暴露了 Server Components 序列化协议的复杂性风险,开发者需立即升级至最新版本以防御包括 8.6 分高危 SSRF 在内的多项核心安全威胁。

하이라이트

  • Next.js 和 React 近期修复了 13 个 CVE 漏洞,其中包括 6 个评分高达 7.5 至 8.6 的高危漏洞。

  • Server Components 的拒绝服务漏洞(DoS)通过构造 20 万个键的恶意载荷,可将服务器响应时间从 0.02 秒延长至 6 秒。

  • Next.js 的 SSRF 漏洞(CVE 评分 8.6)允许攻击者通过构造 curl 请求绕过访问控制,直接访问服务器内部私有 URL。

  • Pages Router 在启用 i18n 时存在中间件绕过风险,攻击者通过访问 _next/data 路径下的 JSON 文件可直接获取受保护的敏感数据。

  • Next.js 的 script 标签在 before-interactive 策略下由于 JSON.stringify 转义不当,导致攻击者能通过查询参数注入恶意脚本进行 XSS 攻击。

  • React Server Component 的缓存投毒漏洞通过向带有查询参数的 URL 发送特定 Header,使 CDN 错误地将乱码数据缓存为 HTML 页面。

타임라인

  1. Pages Router 中的中间件与代理绕过

    在开启 i18n 的 Pages Router 应用中,Next.js 的 matcher 逻辑存在缺陷,导致基础路径可能未被包含在安全过滤范围内。通过检查元素获取 build ID 后,任何人都能构造特定的 .json 请求来绕过登录重定向。这种漏洞直接暴露了原本仅限授权用户访问的邮箱、Flag 等敏感数据信息。

    • i18n 配置错误导致基础路径在中间件匹配中失去保护。
    • 攻击者利用 _next/data 路径结构配合 build ID 可直接读取服务器端属性(server-side props)。
    • 中间件不应作为保护敏感数据的唯一防御手段。
  2. Server Components 拒绝服务攻击原理

    该漏洞利用了 React 处理 Server Action 载荷时的递归查找机制。当攻击者发送包含大量以不同数量下划线开头的 key 时,服务器线程会因高频率的匹配操作而被长时间阻塞。通过引入基于游标(cursor-based)且不可回退的查找系统,Next.js 成功将无效比较次数减少了近一千倍,从而恢复了响应速度。

    • React Flight 协议的反序列化过程在处理大量指针时存在性能瓶颈。
    • 恶意构造的 20 万个 key 载荷会导致服务器进行 2 亿次字符串比较。
    • 修复方案将操作复杂度从引用量与键数量的乘积降低为线性相加。
  3. 高危服务器端请求伪造(SSRF)漏洞

    攻击者通过简单的 curl 命令并将目标指向 localhost,即可诱导 Next.js 服务器去请求其内网环境中的私有服务。此漏洞不影响 Vercel 托管环境,但对私有云部署具有破坏性。目前的修复逻辑是在路由解析阶段强制检查请求是否符合重写或中间件规则,并识别 WebSocket 代理之外的异常 HTTP 状态码。

    • 自托管环境下的 Next.js 应用极易受到 8.6 评分的 SSRF 攻击。
    • resolve routes 函数在旧版本中会盲目执行未经校验的代理请求。
    • 新版通过引入 finished 哨兵和状态码校验来拦截非法代理。
  4. RSC 缓存投毒与跨站脚本攻击

    缓存投毒源于 Next.js 在判断 .rsc 后缀时忽略了查询参数,导致恶意请求生成的序列化数据覆盖了正常的页面 HTML。而在 XSS 漏洞中,dangerouslySetInnerHTML 配合未转义的 JSON 字符串化过程,使攻击者能提前闭合原有的 script 标签并嵌入任意 JS 代码。这种手段可以构造极其逼真的虚假界面,在用户无感的情况下完成权限窃取。

    • 查询字符串的校验缺失导致 RSC 数据被错误地作为 HTML 缓存到 CDN。
    • before-interactive 脚本策略下的 JSON.stringify 未转义 HTML 闭合标签。
    • 注入虚假登录表单可窃取 Chrome 浏览器会话 cookie。

설명

Next.js 刚刚发布了一个安全更新,修复了 13 个 CVE 漏洞——其中 6 个为高危漏洞。在本视频中,我们将深入解析中间件绕过、通过 React Flight 协议发起的拒绝服务攻击(DoS)、服务端请求伪造(SSRF)以及跨站脚本攻击(XSS)。服务端组件(Server Components)难道是一个错误吗? 🔗 相关链接 安全博客:[https://vercel.com/changelog/next-js-may-2026-security-release](https://vercel.com/changelog/next-js-may-2026-security-release) ❤️ 关于我们 更出色的可观测性技术栈:[https://betterstack.com/](https://betterstack.com/) 文字版教程:[https://betterstack.com/community/](https://betterstack.com/community/) 示例项目:[https://github.com/BetterStackHQ](https://github.com/BetterStackHQ) 📱 社交媒体 Twitter: [https://twitter.com/betterstackhq](https://twitter.com/betterstackhq) Instagram: [https://www.instagram.com/betterstackhq/](https://www.instagram.com/betterstackhq/) TikTok: [https://www.tiktok.com/@betterstack](https://www.tiktok.com/@betterstack) LinkedIn: [https://www.linkedin.com/company/betterstack](https://www.linkedin.com/company/betterstack) 📌 章节: 00:00 开场 00:41 中间件绕过 03:50 拒绝服务攻击 07:50 请求伪造(最高危) 10:57 缓存污染 12:45 跨站脚本攻击 (XSS) 15:09 这是一个错误吗

커뮤니티 글

모든 글 보기
이 영상에 대해 글쓰기