APP下载
报价宝  ›  科技  › 

Node.js高危漏洞 解压数据即可控制服务器

报价宝 来源:baojiabao.com 发布时间:2026-10-24 13:03:01 10月24日更新
报价宝综合消息Node.js高危漏洞 解压数据即可控制服务器

Node.js 项目在 10 月 21 日为一个解压环节的漏洞发布补丁,编号 CVE-2026-111497,CVSS 评分 9.2,属高危级别。问题出在 Node.js 内置的 Brotli 解码器里:攻击者只要能诱导程序去解压一段特制的压缩数据,就有机会在目标进程内执行任意代码,整个过程不需要任何身份验证。

漏洞的本质是一次越界写。Brotli 码流在解码过程中会声明后续可用的块类型,Imperva 红队构造的输入走到了一个「按码流自身结构根本不可能出现」的块切换;旧版解码器把这种异常当成了「还需要更多输入」,于是带着非法的内部状态继续处理,最终把数据写到了缓冲区之外。根因其实早在今年 2 月就已在 Brotli 上游修掉,修法是遇到这种非法切换直接返回格式错误,但下游项目各自打包的副本需要逐个跟上。

Imperva 红队随后做了独立验证:在官方 Node.js 24.22.0 的 Linux arm64 镜像里跑一个普通应用,镜像没打补丁、也没挂调试器、更没用定制构建,喂进带攻击载荷的 Brotli 数据后,应用生成了一个它自身代码里根本不会创建的标记文件——说明代码已在目标进程内执行。同一批输入喂给修复版 24.22.1 则被直接拒绝,标记文件没有出现。研究团队也坦承,这个利用并非每次都能成功,在他们的环境里需要多次尝试。

有两条路径能摸到那个解码器。一条是入站:Express 5 的请求体解析中间件会解压 Brotli 请求体,Imperva 在 Express 5.0.0 至 5.3.0、body-parser 2.0.0 至 2.3.0 上复现了代码执行;另一条是出站:服务用内置的 fetch 去拉上游数据,而对方返回 Brotli 压缩响应,同样会走进同一个解码器。第二条尤其麻烦——攻击者根本不需要触碰你的路由处理函数,一个「转发别人内容」的服务就可能中招。需要注意的是,裸的 Node.js HTTP 服务默认不解压请求体,只有配置了相应中间件才会走到这条路径。

修复版本为 22.23.4、24.22.1 和 26.12.1,22.x、24.x、26.x 三条维护线都已覆盖;20.x 及更早的版本已停止维护,拿不到补丁,只能整体迁到受支持的线上。这一次安全更新同时修了另外 9 个问题,其中包括若干 TLS 主机名校验绕过。Node.js 的安全公告把发现归功于 Matteo Collina,修复由 Antoine du Hamel 完成。

补丁之外几乎没有别的办法。解码器是编译进 Node 运行时的,没有开关能把它关掉,官方给出的唯一出路就是升级,容器镜像和其他打包了 Node 二进制的产物都要一并替换。Imperva 建议在升级推开之前,暂时限制受影响路径上的不可信 Brotli 流量,并在 WAF 侧先行拦截;该公司已上线针对这一编号的规则,Vercel 也为平台上的 Node.js 部署加了防护。

波及范围不止 Node.js。据多家安全媒体报道,Bun 1.4.4 之前的版本、服务网格代理 Envoy,以及 PyPI 上若干 Python 包都存在同一个缺陷。排查时最容易踩的坑是:许多容器镜像里各自打包了一份 Node 运行时,光看依赖清单查不到真实版本,必须进到镜像里确认。异常进程退出和解码报错可以作为排查线索,但都不足以单独判定是否被利用。

这条时间线也耐人寻味:根因修复 2 月就进了 Brotli 源码,正式披露却等到 10 月,中间隔着下游项目各自打包、各自发版、再各自说服用户升级的漫长链条。它紧接在此前的 PHP2Shell 之后出现,再度说明底层运行时里藏着多少没人盯住的内存安全问题——而 AI 正在同时加快漏洞发现和利用开发的速度,留给防守方从披露到修补的窗口越来越短。

编译自 Imperva,原标题:"Node2Shell: From Brotli Data to Remote Code Execution"

文章标签: Node.js Brotli 漏洞 远程代码执行 CVE-2026-111497 报价宝 降噪耳机价格 耳机价格 红米手机价格 华为手机价格 小米手机价格 电视机价格 笔记本电脑价格 笔记本价格 汽车价格 汽车价格 笔记本价格 电视机价格 红米手机价格 耳机价格