帮助中心 > 问题列表 > 关于 Node.js 远程代码执行高危漏洞的应急通告

关于 Node.js 远程代码执行高危漏洞的应急通告

紧急程度: 高

通告日期: 2026年10月23日


一、漏洞描述: 

近日,Node.js官方发布安全更新,修复10个漏洞,其中4个为高危漏洞。最需重点关注的是CVE-2026-111497(Brotli解码器RCE),CVSS 4.0评分9.2(Critical),可导致远程代码执行。


其余三个高危漏洞为:CVE-2026-105482(dns.resolve*空字节截断)、CVE-2026-105483(TLS主机名校验绕过,仅影响26.x/24.x)和CVE-2026-106069(TLS主机名校验绕过)。


二、重点高危漏洞说明:


(一)CVE-2026-111497:Brotli解码器越界写(RCE)

Brotli流在声明只有一种数据块类型后再切换块类型时,旧代码返回了与“还需要更多输入”相同的值,调用方未检查返回值,解码器带着错误状态继续运行,随后对内部残余比特缓存的写入可越过缓存边界,覆盖解码器状态中的位置、距离和环形缓冲区相关字段,形成越界写。

该漏洞在Node.js进程对不可信数据执行Brotli解压时触发,典型场景包括:作为HTTP客户端使用内置fetch()或axios/got等库自动解压Content-Encoding: br的响应;作为服务端使用Express 5/body-parser 2的json()、raw()处理Content-Encoding: br请求体;自行调用zlib.brotliDecompress等API解压不可信数据。

危害涵盖拒绝服务、内存泄露和远程代码执行三个层面,公开PoC在披露后48小时内已出现多个。


(二)CVE-2026-105482:dns.resolve*空字节截断

dns.resolve*将域名交给c-ares时在空字节处截断,可能导致域名后缀白名单判断与实际DNS查询看到的不是同一个域名。


(三)CVE-2026-105483 / 106069 / 106072:TLS主机名校验绕过

主机名被操作系统解析为IP地址(八进制、十六进制、短写等)时,证书校验按DNS名称或错误IP进行,导致校验失败。用Node.js向外发起TLS连接且主机名来自用户输入的场景风险较高。


三、影响范围


受影响版本:Node.js 26.x、24.x、22.x。20.x、21.x、23.x、25.x已停止支持,官方不提供修复。


四、处置要求


(一)升级版本(首选措施)

立即升级至以下任一修复版本,并重启相关进程:

· Node.js 22.x → ≥ 22.23.4

· Node.js 24.x → ≥ 24.22.1

· Node.js 26.x → ≥ 26.12.1

会解压不可信Brotli数据的进程应优先升级与重启,面向互联网的服务优先处理。


(二)排查Node.js运行时副本

部分Linux发行版将Node.js动态链接到系统Brotli库。执行:

ldd "$(command -v node)" | grep -i brotli

若输出中出现libbrotlidec,需同时将系统Brotli库升级至1.0.10、1.1.1或1.2.1。


(三)容器与CI环境

升级宿主机Node.js不会改变容器内的Node.js。容器需更换基础镜像标签并重新构建;CI运行器和内嵌Node.js需单独升级。/proc/<pid>/exe显示(deleted)的进程仍在使用旧文件,需核实并重启。


五、临时缓解措施(不能替代升级)

· CVE-2026-111497:防护设备或反向代理可拒绝Content-Encoding中含br的入站请求(按编码令牌比较,忽略大小写);axios/got可关闭自动解压。

· CVE-2026-105482:调用dns.resolve*前检查域名,含空字节('\0')则拒绝查询。



六、自查方法


1. 确认Node.js版本:node -v

2. 判断业务是否解压不可信Brotli:检查是否使用fetch()/axios/got访问不可信上游,是否使用Express 5/body-parser 2处理br请求体,是否直接调用zlib.brotliDecompress*。

3. 检查是否动态链接系统Brotli(见第四部分第(二)项)。


七、参考来源

· Node.js官方安全通告:https://nodejs.org/en/blog/vulnerability/october-2026-security-releases

· CVE-2026-111497:https://www.cve.org/CVERecord?id=CVE-2026-111497

· Node.js 22.23.4:https://nodejs.org/en/blog/release/v22.23.4/

· Node.js 24.22.1:https://nodejs.org/en/blog/release/v24.22.1/

· Node.js 26.12.1:https://nodejs.org/en/blog/release/v26.12.1/