| 插件名称 | @nuxt/nitro-server |
|---|---|
| 漏洞类型 | 跨站脚本攻击(XSS) |
| CVE 编号 | CVE-2026-46342 |
| 紧急程度 | 低 |
| CVE 发布日期 | 2026-05-20 |
| 来源网址 | CVE-2026-46342 |
Nuxt Nitro ‘__nuxt_island’ 共享缓存中毒 (CVE-2026-46342) — WordPress 网站所有者需要知道的事项
摘要: 最近披露的 Nuxt Nitro 服务器漏洞影响版本 ≥ 4.2.0 和 ≤ 4.4.5。它可能导致共享缓存中毒和跨站脚本攻击 (XSS) 通过 __nuxt_island 端点。该问题在 4.4.6 中已修复。如果您的 WordPress 网站与 JavaScript 前端、无头架构、CDN 边缘渲染集成,或在工具链中使用 Nuxt/Nitro 组件,本通知解释了风险、检测方法、缓解措施(包括紧急防火墙/边缘规则)和长期供应链加固策略。.
这对 WordPress 网站所有者的重要性
大多数 WordPress 部署仍然基于 PHP,使用 WordPress 堆栈进行服务器端渲染。然而,香港及该地区的运营商越来越多地使用现代 JavaScript 前端(Nuxt、Next、Remix)以提高性能和改善开发者工作流程——一种无头或解耦架构。这些前端通常依赖于基于 Node 的服务器、Nitro 中间件和边缘缓存/CDN。.
报告的问题 (CVE-2026-46342) 影响 Nuxt 前端使用的 Nitro 服务器端点: __nuxt_island. 当响应未与原始请求属性紧密绑定时,共享缓存可能会将为一个用户创建的响应提供给另一个用户。如果该响应包含攻击者控制的内容(例如,未清理的 HTML 或脚本片段),攻击者可以中毒缓存并对许多网站访问者触发跨站脚本攻击。.
即使您的 WordPress 后端没有直接运行 Node,当以下情况发生时,WordPress 系统也可能受到影响:
- 您的 WordPress 网站使用从 WordPress REST API 或 GraphQL 拉取数据的 Nuxt 或 Nitro 前端。.
- 您的托管环境使用包含基于 Nitro 组件的服务器端渲染或边缘渲染服务。.
- 您的 CI/CD、构建管道或第三方服务使用易受攻击的包生成预览、部署前端或在边缘渲染页面。.
本通知采取务实的立场,语气如同香港安全专家:直接、操作性强,专注于网站所有者和运营者现在必须做的事情。.
技术概述 — 什么是破损的
- 该
__nuxt_island端点在 Nuxt 的混合渲染模型中渲染或水合孤立组件(小型交互片段)。. - 脆弱的行为:来自端点的响应未与请求属性(来源、头部、Cookie、查询参数)充分绑定。如果缓存层在没有适当的 Vary/Cache-Control 头或缓存键的情况下存储该响应,则缓存的响应可能会被提供给在关键请求属性上有所不同的其他请求。.
- 如果攻击者能够构造一个包含攻击者控制内容的请求(例如,通过注入属性或反射数据)并导致该响应被缓存,攻击者可以中毒共享缓存。当其他用户接收到该缓存响应时,任何恶意脚本将在他们的浏览器中执行——导致潜在的广泛影响。.
最终结果:一次成功的利用可以通过一个中毒的缓存孤立片段转变为大规模 XSS。.
WordPress 网站的攻击面
使 WordPress 驱动的网站暴露于此问题的常见集成模式:
- 无头 WordPress + Nuxt 前端:
- WordPress 通过 REST API / GraphQL 提供内容。.
- Nuxt 前端使用 Nitro 服务器渲染包含 WP 内容的岛屿。.
- 前端过程中使用的易受攻击的 Nitro 包可能导致缓存中毒。.
- 边缘渲染 / CDN 预览/OG 图像生成:
- 一些边缘预览生成器或图像端点包括基于 Nitro 的渲染。.
- 如果您的托管提供商或 CI 使用 Nitro 组件,这些端点可能会受到影响。.
- 开发者工具:
- 安装易受攻击依赖项的构建和预览系统(storybook、SSR 预览、静态网站生成器)可能会创建或上传中毒的工件或缓存输出。.
- 第三方集成:
- 插件供应商、主题构建者或无头服务提供商可能正在运行基于 Nitro 的预览。如果他们使用的是易受攻击的版本,客户的网站可能会受到间接影响。.
如果您的 WordPress 网站完全是经典的(没有无头前端,没有 Node 工具在部署中),风险要低得多。但在现代 DevOps 环境中,值得检查。.
攻击者如何利用它(实际场景)
- 通过缓存岛屿片段的反射 XSS:
- 攻击者向发送一个精心制作的请求
__nuxt_island带有攻击者控制的参数。. - Nitro 生成一个包含该参数的片段,但没有适当的清理。.
- CDN 为共享密钥缓存该片段。.
- 随后的访问者接收到缓存的片段;攻击者的 JavaScript 在他们的浏览器中运行。.
- 攻击者向发送一个精心制作的请求
- 通过上游数据的存储型注入:
- 如果前端从第三方 API 或用户输入(例如评论)渲染数据,攻击者会在上游存储恶意输入。.
- 服务器渲染包含恶意内容的岛屿;响应被缓存并随后提供给其他人。.
- 大规模滥用: 边缘缓存意味着单个缓存对象可以影响成千上万的访客;缓存中毒路径放大了影响。.
修补和更新——最重要的修复
如果您在堆栈中的任何地方使用 Nuxt/Nitro,请立即更新受影响的包:
- 受影响:
@nuxt/nitro-server≥ 4.2.0 且 ≤ 4.4.5 - 已修补于: 4.4.6 — 升级到 4.4.6 或更高版本
操作:
- 对于使用 npm/yarn/pnpm 的项目:
- 运行
npm install @nuxt/nitro-server@^4.4.6(或更新package.json并运行您的包管理器)。. - 更新锁定文件(
package-lock.json,yarn.lock,pnpm-lock.yaml)并提交它们。.
- 运行
- 对于容器化构建:
- 更新包和锁定文件后,重建镜像并重新部署。.
- 避免依赖隐式最新版本 — 使用固定版本并频繁重建镜像。.
- 对于您无法控制的边缘或预览服务:
- 联系您的提供商或服务所有者并请求确认修补。.
- 请他们更新到 4.4.6+ 并在修补后使缓存失效。.
如果您无法立即更新,请应用以下缓解措施。.
您现在可以立即应用的缓解措施(即使在修补之前)
您可以快速实施的实际措施以减少暴露: