跳到主内容

Brotli 解码器漏洞 CVE-2026-111497:Node.js 已在 10-21 修复,但 Agent CLI 自带运行时才是补丁盲区

Node.js 于 2026-10-21 修复 Brotli 解码器漏洞 CVE-2026-111497(定级 High)。但 Agent CLI 自带 Bun 运行时,升级系统 Node.js 并不会替换它。

2026-10-26 · Node.js 官方安全公告 / OpenCode v1.19.4 Release Notes / google-brotli Releases / oven-sh-bun Releases

发布 2026-10-26核实 2026-10-26

要点

  • 2026-10-21 Node.js 发布安全更新,其中 CVE-2026-111497 被描述为「Node.js Brotli decoder out-of-bounds write permits remote code execution」,Node.js 官方定级 high。
  • 成因(官方原文口径):Brotli 解码器把「非法的 block switch」误报成「暂时需要更多输入」而非永久性格式错误,于是流式解码器持续往一个八字节内部缓冲区追加输入字节。能向 node:zlib 提供 Brotli 数据的人可破坏进程内存,后果是崩溃、进程内存泄露或远程代码执行。
  • 影响范围:官方公告只列 Node.js 26.x / 24.x / 22.x;修复版本为 22.23.4 / 24.22.1 / 26.12.1。
  • 谁发现的:Node.js 公告致谢 OpenAI Codex Security 的 Khai Tran 与 Sylvie Mayer 报告该漏洞,由 mcollina 与 aduh95 修复。
  • 上游同日补发:google/brotli 在 2026-10-21T19:26–19:27 UTC 这一分钟内连发 v1.0.10 / v1.1.1 / v1.2.1 三个版本线,而上一个正式版 v1.2.0 停在 2025-10-27——整整一年没有版本,补丁是集中补发的。
  • Bun 次日跟进:bun-v1.4.4 于 2026-10-22T10:11:32Z 发布(上一版 bun-v1.4.3 为 2026-10-10)。
  • 一手实锤落在 Agent 工具上:OpenCode v1.19.4(2026-10-22)官方 Release Notes 原文写明——「Upgraded the bundled Bun runtime to 1.4.4, which includes security fixes for Brotli, TLS, HTTP/1.1, HTTP/2, HTTP/3, WebSocket, and fetch, and updates root certificates to NSS 3.131.1」。

为什么这条对用 Agent CLI 的人格外重要

关键在于一句话:你升级的 Node.js,和你实际在跑的那个解码器,可能不是同一份。

传统 Web 服务的补丁心智模型是「升级运行时 → 全站生效」。但 2026 年的 Agent CLI 普遍自带(bundle)一份运行时:Claude Code 自带 Bun、OpenCode 自带 Bun、Codex 是 Rust 单二进制。这份内嵌副本不会因为你在系统里 brew upgrade node 而更新——它由工具厂商在自己的发布流程里单独升级。

而 Agent 恰恰是最容易碰到这类攻击面的程序形态:

环节传统服务Agent CLI
谁触发解码外部请求进站Agent 主动 fetch 网页 / 文档 / API
解码发生在哪模型看到内容之前同样在模型看到正文之前——Content-Encoding: br 的响应先被解码,才交给模型
边界设备能否覆盖WAF 挡入站请求WAF 管的是别人发给你的请求,管不了你的 Agent 自己取回来的响应
补丁责任方运维升级系统 Node工具厂商升级内嵌运行时,用户必须升级 CLI 本体

这意味着:一个只读文档、不碰你代码的「查资料」动作,本身就在扩大解码攻击面。 而这类动作在 Agent 工作流里恰恰是自动、高频、无人值守的。

组件对照:该更新的是哪一份

组件修复版本 / 状态证据来源你该做什么
Node.js22.23.4 / 24.22.1 / 26.12.1(10-21)Node.js 官方公告升级到对应版本线的修复版;注意版本线要对齐——Node 24 需要 24.22.1 或之后,不是「数字大于 22.23.4」就行
Google Brotli 上游1.0.10 / 1.1.1 / 1.2.1(10-21 同日)google/brotli Releases自建解码链路的项目按自己的版本线对齐
Bunv1.4.4(10-22)oven-sh/bun Releases独立安装的 Bun 用 bun upgrade
OpenCodev1.19.4(10-22,内嵌 Bun 升至 1.4.4)OpenCode 官方 Release Notes 原文升级到 ≥ v1.19.4
Claude Code未取得官方确认,见下方待核实—升级到最新 stable,但不要用版本号代替验证

同一份 Node.js 10-21 公告里还包含另一项值得注意的依赖更新:ca-cert(eMudhra Intermediate CA Compromise)。这一项与 Brotli 无关,但它指向同一个结构性问题——自带信任库的 CLI,其证书信任链更新同样独立于操作系统。

现在该做的四件事

# 1. 先数清楚这台机器上到底有几个 node(版本管理器很会藏旧版本)
for n in $(which -a node) ~/.nvm/versions/node/*/bin/node; do
  [ -x "$n" ] && echo "$n $("$n" -v)"
done

# 2. 确认独立安装的 Bun 是否 >= 1.4.4
bun --version

# 3. 确认各 Agent CLI 本体版本(升级命令以各自官方安装文档为准)
claude --version
opencode --version    # 需 >= v1.19.4
codex --version

# 4. 升级 CLI 本体(示例:Claude Code 为 claude update,Bun 为 bun upgrade)
claude update

两个容易漏的地方:

  1. CI 镜像与容器。本地升级了不等于流水线升级了,Agent 跑在 CI 里同样是自带运行时。
  2. 长驻进程。已加载旧解码库的进程在重启前会一直持有旧版本内存映像,升级后必须重启。

AI 之家 观点

  1. 「自带运行时」是 Agent 工具被低估的一层供应链。 过去我们讨论 AI 工具的安全,集中在「模型会不会被提示词注入」和「沙箱能不能拦住 shell」。这次的 Brotli 漏洞提醒的是更下面一层:Agent 是一个会主动去互联网取数据的程序,它自带的那份解码器、证书库、HTTP 栈,都是需要单独跟踪补丁的第三方组件。
  2. 「版本号合规」不等于「二进制合规」。 一个团队完全可能做到「系统 Node 已是 26.12.1」,同时跑着一个内嵌未修复解码器的 CLI。合规审计如果只查系统运行时版本,这份报告是假的。 建议把「CLI 本体版本」单独列进资产清单,并要求厂商在 Release Notes 里明示内嵌运行时版本——OpenCode 这次的做法(直接在 Release Notes 写出 bundled Bun 1.4.4)值得其他工具学习。
  3. 别把「厂商没说」当成「厂商没修」,也别把「第三方测出来」当成「官方确认」。 本站核对 Claude Code 的 v2.1.308 / v2.1.309 / v2.1.310 官方 Release Notes,均未出现 Bun 或 Brotli 字样。因此本站不采用「某版本起已修复」的第三方结论,只给出可执行的动作:升级到最新 stable,并保留你自己的验证证据。

相关阅读

来源

待核实:① Claude Code 内嵌 Bun 的版本,以及从哪个版本起包含修复——本站未取得官方说明,第三方以二进制字符串标记测试推断「2.1.306/2.1.307 未修、2.1.308 已修」,该结论未获官方确认,本站不采信为事实。② **CVSS 9.2(Critical)**系第三方转引的 Google CVE 记录口径,Node.js 公告自身定级为 high,两者不矛盾但勿混用。③ 是否存在实际在野利用,本站未取得权威结论。④ 本次修复仅覆盖 22.x / 24.x / 26.x(官方公告原文),未覆盖的旧版本线需另行处置。

相关对比

Aider vs Claude Code:终端 AI 编程双雄怎么选

Aider vs Claude Code 2026 选型对比:开源 BYOK 多模型 vs Anthropic 订阅长任务 Agent,从编程能力、多模型支持、价格、Git 集成、国内可用性和适合人群判断,帮你选对终端 AI 编程工具。

Aider vs OpenCode:两个开源终端 Agent,选哪个?2026 对比

Aider 与 OpenCode 2026 选型对比:同为开源终端 agent,Aider 以 Git-native 工作流与多语言支持见长,OpenCode 主打模型无关与 TUI 体验。从 6 个维度给出取舍建议。

Claude Code vs Cline:CLI AI Agent 怎么选?2026 对比

Claude Code vs Cline 2026 选型对比:Anthropic 官方闭源 CLI Agent vs Apache-2.0 开源 VS Code 插件。从模型绑定、工作流、MCP 支持、价格、隐私和适合人群 6 个维度帮你选对 CLI AI 编程工具。

Claude Code vs Codex CLI:终端 AI Agent 双雄对比

Claude Code vs Codex CLI 2026 选型对比:Anthropic 与 OpenAI 两大官方终端 Agent 的模型、长任务、MCP 生态、Windows 支持、订阅打包价格和国内可用性全方位对比,帮你判断该用哪个终端 AI Agent,以及能不能两个一起用。

Claude Code vs Crush:Anthropic 官方 vs 多模型 TUI(2026 实测选型)

Claude Code vs Crush 怎么选:Anthropic 官方 CLI(长任务最稳),对上 Charmbracelet 开源 TUI(多模型切换 + LSP)。按模型、长任务、价格对比。

Cursor vs Claude Code:什么时候用哪个?(2026 实测选型)

Cursor 和 Claude Code 到底怎么选?一句话结论 + 决策树 + 价格实测 + 国内可用性对比。GUI 派选 Cursor,终端长任务派选 Claude Code,最优解其实是共存。

相关评测