EN
L4 · 化粪池炸了Node.js · TLS · RCEnodejs-oct-2026

Node.js:一个 Brotli RCE,外加两种骗过 TLS 主机名校验的办法

Node.js 10月安全更新覆盖 22、24、26 三条版本线:十个 CVE,含一个 Brotli RCE 和两处 TLS 主机名校验绕过

四个高危、三个中危、三个低危。Brotli 解码器越界写入,dns.resolve 遇到 NUL 字节就把域名截断,还有几种 IP 写法能混过证书主机名校验。这次发版还会拒绝已失陷的 eMudhra 密钥。

披露时间
2026年10月21日
公开披露日期
严重程度
化粪池炸了
本页收录 10 个 CVE
波及范围
Node.js 22.x、24.x、26.x,以及所有已停止维护的版本线
node
在野利用
不适用
暂无利用报告

一句话说清楚

给服务器发一个精心构造的 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 解码器越界写入

解压攻击者可控的 Brotli 数据时可能发生越界写入,进而可能导致代码执行。

说人话: 有人往马桶里冲了块砖,管子直接在你机房里爆了。

CVE-2026-105482

dns.resolve 遇到 NUL 就截断

含 NUL 字节的主机名会被截短,你校验的名字和实际解析的名字不是同一个。

CVE-2026-105483

全角数字 IP 绕过主机名校验

用全角数字写的 IP 地址可以通过 TLS 主机名校验。仅影响 24.x 和 26.x。

CVE-2026-106069

宽松 IP 解析绕过主机名校验

能被宽松解析成 IP 地址的主机名可以溜过 TLS 主机名校验。三条版本线都受影响。

CVE-2026-105481

keep-alive 提前收到响应

keep-alive 套接字可能会处理一个在请求发出之前就已写入的响应。影响 22.x、24.x 和 26.x。

CVE-2026-106072

非规范 IPv4 的证书校验问题

DNS SAN 可以借助非规范写法的 IPv4 主机名为 IP 端点做身份认证。影响 22.x、24.x 和 26.x。

CVE-2026-106074

启动快照导致随机数重复

启动快照和 SEA 会把 randomUUID、randomInt 的熵缓存一并保存下来,导致不同进程生成重复的值。影响 22.x、24.x 和 26.x。

CVE-2026-106070

返回无效的 ZIP 头部前缀

ZipFile 在头部校验失败后仍可能返回攻击者可控的前缀字节。影响 26.x。

CVE-2026-106071

文件系统通配符权限授予过度

通配符的基数树(radix)查找可能授予过多的文件系统权限。影响 26.x。

CVE-2026-106073

realpathSync 绕过权限模型

fs.realpathSync 可以绕过权限模型(Permission Model)。影响 22.x、24.x 和 26.x。

你踩到了吗?

在每台机器上运行 node -v,然后输入版本号,或者点一个最接近的。

修复版本(2026年10月21日)
分支安全版本状态
Node.js 2626.12.1Current(最新版)
Node.js 2424.22.1活跃 LTS
Node.js 2222.23.4维护期 LTS
Node.js 20 及更早版本none已停止维护,受影响,不会修复

案发时间线

  1. 2026年10月21日

    Node.js 为 22、24、26 发布安全更新

    一共十个 CVE,另外升级了 c-ares、ca-cert、OpenSSL(22/24)、SQLite(22)和 Undici 等依赖。

  2. 2026年10月21日

    内置 CA 证书库更新到 NSS 3.131.1

    包含那八个已失陷 eMudhra 密钥的 TLS 证书链,现在一律拒绝。

各方说法

我们列出每条说法和它的出处,并标出一手来源(厂商、研究人员、软件仓库)。各方说法不一致时,按最坏的可信情况定级。

  • Node.js blog一手来源官方安全公告,列出了全部十个 CVE 和修复版本
  • Vercel KB平台侧的处置建议;指出恢复的 TLS 会话不会重新校验