VPS优惠推送
分享好玩教程

Node.js 10 月安全更新:10 个漏洞、4 个高危,Brotli 解码器可 RCE(附自查与升级)

本文于 2026-10-21 23:03 更新,部分内容具有时效性,如有失效,请留言

2026 年 10 月 21 日,Node.js 官方发布了安全更新,覆盖 26.x / 24.x / 22.x 三条发行线,共修复 10 个漏洞,最高严重级别 HIGH。

其中最需要留意的是 Brotli 解码器越界写入(CVE-2026-111497) —— 可以导致远程代码执行;另外还有三个 TLS 相关的"主机名校验被绕过"。

先别慌:不是所有装过 Node 的机器都受影响。这篇先帮你判断「要不要管」,再讲怎么查、怎么升。

1、先对号入座:你到底要不要管

先对号入座:跑 Node 服务 / 做前端构建 / 没装 Node,处理方式完全不同
你的情况 风险 建议
Node 跑服务端(Express / Koa / NestJS / Next.js SSR) 🔴 高 尽快升级并重启进程
Node 主动发 HTTPS 请求(爬虫 / API 客户端 / 代理 / webhook) 🟠 高 尽快升级(TLS 校验绕过)
只在本机用 Node 做前端构建(Vite / webpack) 🟡 低 构建产物不受影响,有空再升
没装 Node(nginx + PHP 这类环境) ✅ 无关 不用管

拿我自己举例:我特意查了这台 VPS —— 没有 node、没有 npm、没有 node 进程、nginx 也没反代到 Node 端口,所以这条漏洞和我无关。

但只要你在跑 API 服务、服务端渲染、基于 Node 的采集或转发,就该今晚看完这篇 —— 因为 Brotli 那个是 RCE。

2、这次修了哪 10 个

这次修复的 10 个漏洞:4 高 / 3 中 / 3 低,最高严重级别 HIGH
CVE 级别 问题 影响版本
CVE-2026-111497 🔴 HIGH Brotli 解码器越界写,可导致远程代码执行 26 / 24 / 22
CVE-2026-105482 🔴 HIGH dns.resolve 遇到 NUL 字符会截断域名 26 / 24 / 22
CVE-2026-105483 🔴 HIGH TLS 主机名校验绕过(IP 写成全角数字) 26 / 24
CVE-2026-106069 🔴 HIGH TLS 主机名校验绕过(地址松散解析成 IP) 26 / 24 / 22
CVE-2026-105481 🟠 MEDIUM keep-alive 连接可能把别人的响应发给你 26 / 24 / 22
CVE-2026-106072 🟠 MEDIUM 非规范 IPv4 主机名的证书校验问题 26 / 24 / 22
CVE-2026-106074 🟠 MEDIUM 启动快照 / SEA 里的随机数会被复用 26 / 24 / 22
CVE-2026-106070 🟡 LOW ZipFile 校验失败后返回攻击者可控字节 26
CVE-2026-106071 🟡 LOW 权限模型通配符越权 26
CVE-2026-106073 🟡 LOW 权限模型可被 fs.realpathSync 绕过 26 / 24 / 22

此外还更新了几个依赖:c-ares、ca-cert(eMudhra 中间证书被攻破)、OpenSSL(24/22)、SQLite(22)、Undici。

3、重点说两个

① Brotli 越界写(CVE-2026-111497,HIGH)

前提是:你的程序会解压攻击者提供的 Brotli 数据。典型场景是 HTTP 服务处理 Content-Encoding: br 的请求体,或者代码里主动调 zlib.brotliDecompress。

所以它不是「装了 Node 就中」,而是「有这条数据路径才可能中」—— 但一旦踩中,后果是 RCE,不是简单的拒绝服务。

② TLS 主机名校验被绕过(3 个,HIGH / MEDIUM)

CVE-2026-105483(全角数字 IP)、CVE-2026-106069(非规范 IP 地址)、CVE-2026-106072(非规范 IPv4 主机名)—— 三个都属于同一类:本该验证没验证住。

它们主要威胁的不是「被动收请求」,而是你主动向外发 HTTPS 请求的场景:爬虫、API 客户端、反向代理、webhook 投递。攻击者可以用一张别的域名的合法证书冒充目标,把你的请求引到自己的服务器上。

4、先查版本

node -v

对照截至 2026-10-21 的修复版本(以官方发布页为准):

发行线 修复版本 说明
26.x v26.12.1 当前主线
24.x v24.22.1 LTS(Krypton)
22.x v22.23.4 LTS(Jod)
20.x 及以下 无 已 EOL,官方不再发补丁 —— 只能升级到 22+

版本低于表里的数字,就需要升级。20.x 及以下没有"打补丁"这个选项,只能迁到受支持的版本。

5、升级:三步

升级三步:查版本 → 升级 → 重启进程(不重启等于没升)

方式一:nvm(个人服务器最省事)

nvm install 22 --reinstall-packages-from=22
nvm alias default 22
pm2 restart all        # 用 pm2 托管的进程

方式二:NodeSource 系统源

curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
apt-get install -y nodejs
systemctl restart 你的服务名

方式三:Docker

把镜像 tag 改成新的(例如 node:22-alpine → 拉取最新 22.x),然后重建容器 —— 注意 重建,光 restart 还是旧镜像。

关键一步:光装新版本不算升级。正在跑的那个进程用的还是旧二进制 —— 必须 重启进程 / 重建容器,新版本才真正生效。

6、升级后验证

  1. node -v 变成修复版本;
  2. pm2 list 或 systemctl status 你的服务 确认进程在跑;
  3. 打开你的业务页面 / 接口,确认响应正常;
  4. 如果项目里有 **原生模块**(node-gyp 编译过的那种,比如 sqlite3、sharp、bcrypt),升级大版本后可能要 npm rebuild 或重装依赖;
  5. 有空再跑一遍依赖审计:npm audit。

7、不跑 Node 的人,可以更从容

如果你只是本地用 Node 做前端构建(Vite、webpack、Tailwind 之类),风险很低 —— 构建产物是静态文件,不受这个漏洞影响。有空顺手升一下就行。

但有一类容易漏:CI/CD 里跑 Node 的流水线。它同样在跑 Node,同样需要升级镜像版本。

8、来源

本文信息基于 2026-10-21 Node.js 官方安全公告,漏洞细节以官方说明为准;版本号截至 2026-10-21,后续可能继续更新。

赞(0)
未经允许不得转载:F12笔记 » Node.js 10 月安全更新:10 个漏洞、4 个高危,Brotli 解码器可 RCE(附自查与升级)

评论 抢沙发