· 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。

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。

相关文章

查看全部 »

同标签更多