Node2Shell 是什么
2026 年 10 月披露的 Node2Shell,编号 CVE-2026-111497,CVSS 4.0 评分 9.2,根源在 Brotli 压缩算法的解码器里存在越界写问题。需要先讲清一个关键点:它只影响解码一侧,也就是处理别人发来的 Brotli 压缩数据时才可能出问题;只做压缩输出而不解压外部数据的服务,不在这个漏洞的直接影响范围内。
本文只讲防御:影响范围、官方修复版本和自查升级步骤,不涉及任何利用细节。
影响范围:不止 Node.js 一个生态
因为 Brotli 被多个语言和运行时共用,这次的影响面比名字看起来大:
- Node.js:修复版本为 22.23.4、24.22.1、26.12.1。注意 Node.js 20.x 没有官方修复版本,仍在 20.x 的服务需要规划升级到有修复的 LTS 分支。
- Bun:修复版本 1.4.4。
- Brotli 库本身:修复版本 1.0.10、1.1.1、1.2.1。
- Python 生态:Brotli 的 Python 绑定修复版本为 1.2.1。
- .NET:微软发布带外补丁 .NET 8.0.33、9.0.22、10.0.14。.NET 默认不开启 Brotli 解压,.NET Framework 不受影响,.NET 用户先确认自己的服务是否显式开启了 Brotli 解压再评估紧急程度。
在野动态:已确认被利用,但不必恐慌
2026 年 10 月 27 日,美国 CISA 把这个编号收进 KEV(已知被利用漏洞目录),即官方确认已观测到在野利用。KEV 里的整改期限只针对美国联邦机构,不是所有用户的统一期限。同时要说明:CISA 没有公布利用者、目标与效果,公开报道中也没有大规模失陷的证据。正确的态度是:确认利用存在就尽快升级,但不必把它想象成已经全面失守。
自查与升级清单
- 查运行时版本:Node.js 执行
node -v,Bun 执行bun --version,逐一对照修复版本表;仍在 Node.js 20.x 的,排期升级分支。 - 查依赖里的 Brotli:看项目依赖中是否包含 brotli 或相关绑定,版本是否达到修复版本;系统库安装的 Brotli 也要同步升级。
- 收敛解压入口:确认哪些接口会解压外部传入的 Brotli 数据,优先给这些入口升级;不必要的解压能力能关就关。
- 查日志:回顾披露前后的异常请求与进程崩溃记录,必要时请专业人员复核。
- 托管用户注意:托管建站与云平台一般由平台统一修复,到平台公告里确认状态即可。
总结一句话:Node2Shell 的修复就是版本对照表——运行时、库、绑定逐一升到修复版本,20.x 用户要额外规划一次分支升级。