CVE-2026-111497Brotli 解码器越界写入
解压攻击者可控的 Brotli 数据时可能发生越界写入,进而可能导致代码执行。
说人话: 有人往马桶里冲了块砖,管子直接在你机房里爆了。
Node.js 10月安全更新覆盖 22、24、26 三条版本线:十个 CVE,含一个 Brotli RCE 和两处 TLS 主机名校验绕过
四个高危、三个中危、三个低危。Brotli 解码器越界写入,dns.resolve 遇到 NUL 字节就把域名截断,还有几种 IP 写法能混过证书主机名校验。这次发版还会拒绝已失陷的 eMudhra 密钥。
给服务器发一个精心构造的 Brotli 压缩请求体,它就会写出缓冲区边界;或者拿出一张 IP 写得稀奇古怪的证书,Node 可能会把它认作某个主机的证书,哪怕它根本不属于那个主机。
看着像一次例行安全更新,里面却夹着几个狠角色。头号问题是 Brotli 解码器的越界写入(CVE-2026-111497)。凡是会解压不可信 Brotli 数据的地方,比如 HTTP 请求体、上传文件或代理转发的响应,都应该按远程代码执行风险来对待。
另有两个互不相干的漏洞(CVE-2026-105483 和 CVE-2026-106069)能让一些不寻常的 IP 写法通过 TLS 主机名校验。这项校验的作用,就是确认证书确实属于你要连的那台服务器。
同一批发版还带了一个 ca-cert 更新,会拒绝包含已失陷 eMudhra 密钥的 TLS 证书链,详见 eMudhra 事件。已经恢复的 TLS 会话不会重新校验,所以升级后要重启服务。
我们定为 L4:这是核心运行时,有一个能远程触达的内存漏洞,但目前还没有在野利用。
CVE-2026-111497解压攻击者可控的 Brotli 数据时可能发生越界写入,进而可能导致代码执行。
说人话: 有人往马桶里冲了块砖,管子直接在你机房里爆了。
CVE-2026-105482含 NUL 字节的主机名会被截短,你校验的名字和实际解析的名字不是同一个。
CVE-2026-105483用全角数字写的 IP 地址可以通过 TLS 主机名校验。仅影响 24.x 和 26.x。
CVE-2026-106069能被宽松解析成 IP 地址的主机名可以溜过 TLS 主机名校验。三条版本线都受影响。
CVE-2026-105481keep-alive 套接字可能会处理一个在请求发出之前就已写入的响应。影响 22.x、24.x 和 26.x。
CVE-2026-106072DNS SAN 可以借助非规范写法的 IPv4 主机名为 IP 端点做身份认证。影响 22.x、24.x 和 26.x。
CVE-2026-106074启动快照和 SEA 会把 randomUUID、randomInt 的熵缓存一并保存下来,导致不同进程生成重复的值。影响 22.x、24.x 和 26.x。
CVE-2026-106070ZipFile 在头部校验失败后仍可能返回攻击者可控的前缀字节。影响 26.x。
CVE-2026-106071通配符的基数树(radix)查找可能授予过多的文件系统权限。影响 26.x。
CVE-2026-106073fs.realpathSync 可以绕过权限模型(Permission Model)。影响 22.x、24.x 和 26.x。
在每台机器上运行 node -v,然后输入版本号,或者点一个最接近的。
| 分支 | 安全版本 | 状态 |
|---|---|---|
| Node.js 26 | 26.12.1 | Current(最新版) |
| Node.js 24 | 24.22.1 | 活跃 LTS |
| Node.js 22 | 22.23.4 | 维护期 LTS |
| Node.js 20 及更早版本 | none | 已停止维护,受影响,不会修复 |
2026年10月21日
Node.js 为 22、24、26 发布安全更新
一共十个 CVE,另外升级了 c-ares、ca-cert、OpenSSL(22/24)、SQLite(22)和 Undici 等依赖。
2026年10月21日
内置 CA 证书库更新到 NSS 3.131.1
包含那八个已失陷 eMudhra 密钥的 TLS 证书链,现在一律拒绝。
我们列出每条说法和它的出处,并标出一手来源(厂商、研究人员、软件仓库)。各方说法不一致时,按最坏的可信情况定级。