2026 年 10 月 21 日,Node.js 官方发布了安全更新,覆盖 26.x / 24.x / 22.x 三条发行线,共修复 10 个漏洞,最高严重级别 HIGH。
其中最需要留意的是 Brotli 解码器越界写入(CVE-2026-111497) —— 可以导致远程代码执行;另外还有三个 TLS 相关的"主机名校验被绕过"。
先别慌:不是所有装过 Node 的机器都受影响。这篇先帮你判断「要不要管」,再讲怎么查、怎么升。
1、先对号入座:你到底要不要管

| 你的情况 | 风险 | 建议 |
|---|---|---|
| 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 个

| 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、升级后验证
node -v变成修复版本;pm2 list或systemctl status 你的服务确认进程在跑;- 打开你的业务页面 / 接口,确认响应正常;
- 如果项目里有 **原生模块**(node-gyp 编译过的那种,比如 sqlite3、sharp、bcrypt),升级大版本后可能要
npm rebuild或重装依赖; - 有空再跑一遍依赖审计:
npm audit。
7、不跑 Node 的人,可以更从容
如果你只是本地用 Node 做前端构建(Vite、webpack、Tailwind 之类),风险很低 —— 构建产物是静态文件,不受这个漏洞影响。有空顺手升一下就行。
但有一类容易漏:CI/CD 里跑 Node 的流水线。它同样在跑 Node,同样需要升级镜像版本。
8、来源
- Node.js 官方安全公告:October 2026 Security Releases
- 版本号以 Node.js 官方下载页 与实际发布为准
本文信息基于 2026-10-21 Node.js 官方安全公告,漏洞细节以官方说明为准;版本号截至 2026-10-21,后续可能继续更新。

F12笔记


