· adswds-team · 安全 · 4 min read
dns.resolve 会在 NUL 处截断名字:Node.js CVE-2026-105482
Node.js 2026-10-21:CVE-2026-105482(high)中,dns.resolve 会截断含 NUL 的名字。影响 26.x、24.x、22.x,修复为校验空字节,版本 26.12.1、24.22.1、22.23.4。

Node.js 2026-10-21 安全发行将 CVE-2026-105482 标为 high,标题是:dns.resolve 会截断含有 NUL 字符的名字。影响 26.x、24.x 和 22.x。三条线的修复版本为 26.12.1、24.22.1、22.23.4。发行说明中的修复条目是 James M Snell 的 dns: validate resolve inputs for null bytes(报告者 hasanfleyah)。
一句话:解析器看到的名字,可能在第一个空字节就结束了。
公告没有写 CVSS 向量,也没有写哪些上层 API(除标题中的 dns.resolve)会把同样的字节传进去。本文不推测调用栈,只按标题和修复说明做运维判断。
一、已经写明的范围
| 项 | 内容 |
|---|---|
| 编号 | CVE-2026-105482 |
| 行为 | dns.resolve 截断含 NUL 的名字 |
| 修复 | 对 resolve 输入做空字节校验 |
| 严重性 | high |
| 影响 | 26.x、24.x、22.x |
| 修复版本 | 26.12.1、24.22.1、22.23.4 |
| EOL | 安全发行时,已停止维护的版本官方视为同样受影响 |
同一次发行还更新了 c-ares 1.34.9(26/24/22)。那是依赖更新,公告把它和本次 CVE 列表并列,没有把 105482 写成「只存在于 c-ares」。升级时两者会一起进这三版,不要只换系统里的 c-ares 包就认为 Node 的 dns.resolve 已修。
二、哪些进程值得先看
名字在 NUL 处被截断,意味着程序打算查询的字符串和实际查询的字符串可以不是同一个。官方没有公布「因此可以指定解析到某台机器」的条件,所以不要把这篇理解成现成的投毒步骤。值得核对的是:主机名是否从请求、配置文件或环境变量原样进入 DNS API。
- 转化回传、短链展开、素材拉取若用 Node 做自己的 DNS 解析,升到对应安全版并重启;
- 允许名单若在解析之后才比较 IP,先确认送进
dns.resolve的字符串没有被截断;截断发生在比较之前,名单对的是另一串名字; - CI 里用 Node 解析内部服务名的 job,与线上进程使用同一修复版本;
- 不要用「我们不用
dns.resolve,只用fetch」当作已排除——公告没有列出全部入口,排除不了就升级。
静态落地页本身不调用 dns.resolve。调用它的是旁边的 Node 服务和构建脚本。
三、小结
CVE-2026-105482 是高危的 DNS 名字截断,修在 2026-10-21 的 26.12.1、24.22.1 和 22.23.4。动作是升级整个安全发行并重启,而不是在业务代码里猜 NUL 会从哪一个包装函数漏进来。同日的证书主机名问题见 CVE-2026-106069,Brotli 解码见 CVE-2026-111497。
来源:October 21, 2026 Security Releases、v26.12.1、v24.22.1、v22.23.4。



