Node.js 已发布安全更新,以解决 CVE-2026-111497,这是其内置的 Brotli 解压缩代码中的一个高危漏洞,可能导致远程代码执行。该漏洞是在脆弱的解码器处理特殊构造的 Brotli 压缩数据时触发的越界写入。
该问题影响当前支持的所有 Node.js 分支——22.x,24.x 和 26.x。Node.js 在 22.23.4、24.22.1 和 26.12.1 版本中解决了该漏洞,这些版本是 2026 年 10 月 21 日安全发布的一部分,总共修复了十个漏洞。
该风险尤为相关,因为 Brotli 压缩常用于 HTTP 流量。Node.js 应用程序可以通过 node:zlib 直接调用脆弱的解码器,或在 fetch() 接收到使用 Content-Encoding: br 的响应时自动调用解码器。因此,每当攻击者控制的 Brotli 内容通过入站请求、远程响应、代理工作流或其他数据处理路径到达解码器时,应用程序可能会暴露。
对于 CVE-2026-111497 检测,安全团队应优先考虑处理不受信任的压缩内容的 Node.js 应用程序,并在 Brotli 解压缩后立即监控崩溃、异常内存行为、不寻常的子进程和可疑活动。
SOC Prime 的 AI 原生检测智能平台使安全团队能够加强对新出现的漏洞利用和相关事后妥协行为的可见性,并提供可在 SIEM、EDR 和数据湖技术中部署的检测内容。
点击 探索检测 以访问相关的检测内容和狩猎逻辑。要检测 CVE-2026-111497,防御者应将 Node.js 应用程序遥测与端点、代理、网页和网络活动相关联,以识别围绕压缩 HTTP 流量的可疑行为。
安全团队还可以利用 Prime Architect 将新鲜的漏洞情报转化为 Sigma 规则和狩猎查询,验证检测逻辑,并在支持的安全平台之间翻译相关的检测内容。
CVE-2026-111497 分析
漏洞存在于 Node.js 捆绑的 Brotli 解码器中。Brotli 是一种广泛用于减少网页内容大小的压缩算法,而 Node.js 包含其自身版本的库。
一个格式错误的压缩流可能会触发越界写入,导致解码器在为解压缩数据分配的内存缓冲区之外写入。上游修复更改了解码器,以便在无效输入继续进入不安全的内存写入状态之前提前拒绝。
CVE-2026-111497 影响在 10 月 21 日安全发布之前的 Node.js 22.x、24.x 和 26.x。修补版本为:
- Node.js 22.23.4
- Node.js 24.22.1
- Node.js 26.12.1
Node.js 20.x 和更早版本已经结束寿命,不会收到安全更新,因此使用这些版本的组织应迁移到支持的分支。
根本问题不仅限于 Node.js 漏洞代码来自 Brotli 项目本身,对应的修复在 Brotli 1.0.10、1.1.1 和 1.2.1 中发布。其他集成脆弱 Brotli 版本的应用程序可能需要单独的更新,即使它们不使用 Node.js。
攻击面取决于压缩数据如何到达应用程序。直接使用 Brotli 解压缩 API 是一个显而易见的路径。然而,当应用程序使用 fetch() 时,Node.js 也可以自动处理 Brotli 压缩的 HTTP 响应。
这使得检索攻击者控制内容的应用程序尤其相关。例子包括 URL 预览服务、爬虫、Webhook 处理器、代理平台、内容扫描器、转换服务和允许用户提交远程 URL 的应用程序。
入站流量可以创建另一条路径,其中 Web 应用程序或中间件接受 Brotli 压缩的请求体。因此,安全团队应检查实际的应用程序数据流,而不应将暴露评估仅限于源代码中的显式 Brotli 调用。
CVE-2026-111497 的详细信息显示了该问题为何会产生超出简单服务崩溃的后果。内存损坏可能会影响附近的进程状态,具体取决于平台保护和运行时条件,导致内存泄露或任意代码执行。
Node.js 明确描述了该漏洞具有远程代码执行的能力,但其实用性需要考虑。从安全性来看,Node.js 项目将其评为高,而非关键。
在披露后发布的公开 CVE-2026-111497 PoC 在故意削弱的测试构建中实现了代码执行。对于标准的 Node.js 构建,研究人员报告了崩溃和有限的进程内存泄露,但未实现可靠的代码执行。这意味着内存损坏原语已被演示,而对正常生产构建的成功远程代码执行取决于额外的漏洞利用条件。
修补后的 Node.js 版本拒绝用于演示的格式错误内容。截至 10 月 22 日,尚未报告野外利用。
因此,特定于活动的 CVE-2026-111497 IOC 如恶意 IP 地址、域名、有效载荷哈希或确认的漏洞请求签名尚未在引述的研究中发布。
安全团队应改为关注行为指示,例如:
- 处理压缩流量的 Node.js 服务意外崩溃
- 分段故障或本机解码器故障
- 异常的内存保护或漏洞防护警报
- Node.js 生成 shell 或命令解释器
- 在 Brotli 处理后立即出现的不寻常的出站连接
- 来自不熟悉来源的可疑压缩请求
- 服务器端 fetch() 活动到达不受信任的基础设施
- 从 Node.js 服务帐户发起的意外的文件或进程更改
10 月 21 日的 Node.js 发布还修复了涉及 TLS 主机名验证和 DNS 处理的其他高严重性问题。CybersecurityNews 指出,企业应将该发布视为广泛的运行时安全更新,而不应仅专注于 Brotli 漏洞。
同一版本还在 eMudhra 证书颁发机构妥协后刷新了证书信任信息,进一步增加了更新而不是仅尝试回溯一个修复的价值。
CVE-2026-111497 缓解措施
CVE-2026-111497 的主要缓解措施是将所有受支持的 Node.js 安装升级到已修补版本:
- 22.x → 22.23.4 或更高
- 24.x → 24.22.1 或更高
- 26.x → 26.12.1 或更高
Node.js 项目没有提供等效的临时运行时解决方案来处理 Brotli 漏洞,升级是可靠的修正路径。
更新运行时后,管理员应重启所有受影响的 Node.js 服务。长时间运行的进程在重启前会继续使用旧的运行时。
容器化工作负载需要额外的关注。CybersecurityNews 特别建议重建容器镜像,以便部署的应用程序包含已修补的 Node.js 运行时。在宿主机上更新 Node.js 不会替换已嵌入容器镜像中的脆弱运行时。
独立使用 Brotli 的组织也应更新脆弱的库版本。软件清单和 SBOM 可以帮助识别本机应用程序、设备、开发工具和第三方包中的捆绑副本。
当升级不是立即可能时,组织可以通过以下方式临时减少攻击面:
- 拒绝不必要的 Brotli 压缩的请求体
- 限制服务器端 HTTP 请求到可信目的地
- 阻止用户提供任意的远程 URL
- 限制来自脆弱工作负载的出站连接
- 在操作上可行的情况下禁用可选的 Brotli 处理
- 密切监控应用程序崩溃和内存相关错误
- 检查由 Node.js 启动的不寻常子进程
Vercel 引入了防火墙保护以阻止通过入站请求到达的恶意 Brotli 数据。但是,《黑客新闻》注意到,这些规则无法保护独立从外部服务器获取恶意 Brotli 响应的应用程序,说明了为何 WAF 筛选不能替代运行时升级。
管理员还应确认修补后生产工作负载实际使用的运行时。当旧的 Node.js 二进制文件仍位于容器、无服务器捆绑包、打包应用程序或手动安装的运行时目录中时,仅凭包管理器输出是不足够的。
如果怀疑受到利用,响应人员应隔离受影响的工作负载并保留应用程序、端点、代理和网络遥测。崩溃转储可能尤为有价值,因为漏洞直接影响进程内存。
安全团队应调查:
- 意外的 Node.js 子进程
- 新创建的文件或持久机制
- 不寻常的出站连接
- 应用程序或部署配置的更改
- 环境变量中可用的凭据和密钥
- Node.js 进程可访问的 API 密钥、令牌和云凭据
- 可通过应用程序的服务身份访问的后端数据存储
由于有限的进程内存泄露已被演示,当检测到可疑的漏洞利用活动时,脆弱应用程序内存中驻留的机密应被视为潜在暴露,即使无法确凿地证明任意代码执行。
组织还应审查分配给受影响服务的特权。成功利用最低特权容器与利用持有云凭据、数据库管理访问、CI/CD 令牌或部署权限的 Node.js 进程之间的后果差异很大。
SOC Prime 客户可以利用基于行为的检测内容来识别漏洞利用和相关攻击者活动,同时发现和修复脆弱的系统。
免责声明: 检测内容可能不适用于每个 CVE。请查看 SOC Prime 平台的当前覆盖范围。如果相关检测尚不可用,请稍后再查,因为新威胁情报和检测内容会不断添加。
FAQ
什么是 CVE-2026-111497 以及它如何工作?
CVE-2026-111497 是 Node.js 附带的 Brotli 解码器中的一个越界写漏洞。恶意构造的 Brotli 流可以导致解码器超目标内存缓冲区之外写入。根据环境和利用条件,这可能导致进程崩溃、进程内存泄露,或潜在的攻击者控制代码执行。脆弱的解码器可以通过直接解压缩 API 访问,或者在 Node.js 处理 Brotli 压缩的 HTTP 响应时自动访问。
CVE-2026-111497 何时首次被发现?
Node.js 项目于 2026 年 10 月 21 日公开披露并修复了该漏洞。OpenAI Codex Security 的研究人员 Khai Tran 和 Sylvie Mayer 获得了 Node.js 帐号的报告。黑客新闻报道,对应的 Brotli 源代码更改首次在 2026 年 2 月上游实施,但在 10 月才作为安全修复发行。
CVE-2026-111497 对系统有何影响?
成功利用可以在脆弱的 Node.js 进程中损坏内存。可能的后果包括通过应用程序崩溃的服务拒绝、进程内存泄露,以及可能的远程代码执行。实际影响取决于是否攻击者控制的 Brotli 内容到达解码器,以及内存损坏原语是否可以绕过目标运行时和操作系统的保护。如果实现代码执行,攻击者将继承被攻陷 Node.js 进程可用的权限和访问,可能暴露应用数据、凭据、云资源或连接的后端系统。
到 2026 年,CVE-2026-111497 还能影响我吗?
是的。如果没有更新到 10 月 21 日的补丁发行,Node.js 22.x、24.x 和 26.x 安装仍然易受攻击。运行 Node.js 20.x 或更旧版本的组织应迁移到受支持的发行版,因为生命终止的分支不会收到此修复。如果独立嵌入脆弱的 Brotli 库,即使 Node.js 本身已更新,应用程序也可能继续暴露。
我如何保护自己不受 CVE-2026-111497 的影响?
升级 Node.js 至 22.23.4、24.22.1、26.12.1 或更新的受支持发行,并重启受影响的工作负载。重建容器镜像,更新独立捆绑的 Brotli 库,确保生产服务实际运行已修补的二进制文件。在修补完成之前,减少接触不信任 Brotli 输入的可能性,限制服务器端请求到已批准的目的地。监控脆弱的服务是否崩溃、不寻常的子进程、意外的网络活动和其他内存利用的迹象。如果发现可疑活动,隔离工作负载,保留法证证据,并旋转可以在影响的 Node.js 进程中获得的敏感凭证。