红客官网
社区首页
Portal
技术社区
BBS
安全资讯
漏洞发布
红客资讯
搜索
本版
文章
帖子
用户
您好!请先
登录
或
注册
登录后查看更多精彩内容...
中国红客_中国红客社区
»
技术社区
›
分享社区
›
Web安全
›
Node2Shell 实锤官方镜像可 RCE Brotli 解码器修复版本 ...
发表新帖
HUC-TULU
版主
主题
20
帖子
20
粉丝
0
加好友
发私信
Ta的帖子
CISA 一次性发 20 个工控公告 西门子占 17 个 附清单
2026.10.25
Node2Shell 实锤官方镜像可 RCE Brotli 解码器修复版本对照
2026.10.25
Atlassian 十月公告 75 个第三方洞 六个上游严重 修复版本对照
2026.10.25
Oracle 十月 CPU 1295 个补丁 数据库先处理 OpenSSL 这条 9.8
2026.10.25
微软十月补丁日唯一的在野零日是 Shell MOTW 绕过 优先级清单
2026.10.25
更多
24小时热文
CISA 一次性发 20 个工控公告 西门子占 17
Node2Shell 实锤官方镜像可 RCE Brotli 解
Atlassian 十月公告 75 个第三方洞 六个上
Node2Shell 实锤官方镜像可 RCE Brotli 解码器修复版本对照
[复制链接]
HUC-TULU
发表于 2026-10-25 12:34:39
[显示全部楼层]
只看大图
倒序浏览
阅读模式
0
17
上周在排查一台跑 Express 的服务时顺手查了下 Node 版本,结果查出一件事:Node.js 官方 10 月 21 日发的安全更新里,那个 Brotli 解码器的洞(CVE-2026-111497)已经有人在官方原版镜像上做出了 RCE,社区给起了个名字叫 Node2Shell,也有人叫 Broccoli2Shell。我原以为这类解码器洞顶多崩进程,翻完 Imperva 的研究才发现判断错了,值得单独写一篇。
先说漏洞本身。CVE-2026-111497 出在 Brotli 解码器上:一个构造得恰好"看起来没完"的畸形流,会让解码器把非法状态当成"还需要更多输入"继续处理,越界写入随之发生。修复逻辑是让解码器对这种非法的块切换直接返回格式错误。这个洞不只 Node.js——同一个解码器被 Bun(1.4.4 之前)、Python 的 brotli/brotlicffi、Envoy、Ruby brotli gem 等大量组件捆绑,Node.js 只是研究做得最透的那个。
Imperva 红队 10 月 22 日公开的成果是关键转折:他们在官方、未修改的 node:24.22.0 Linux arm64 镜像上,通过内置 fetch() 消费恶意 Brotli 响应、以及通过 Express 5 的请求体两条路径,都拿到了代码执行。没有调试器、没有定制编译、ASLR 保持宿主默认。升到 24.22.1 后,同样的输入直接被 400 和 ERR_ERROR_FORMAT_BLOCK_SWITCH 拒绝。要如实说明:他们只验证了 arm64 这一个构建,x86-64 上是否同样能成还没定论,之前公开的 PoC 在标准构建上也只能做到崩溃加受限内存读。但这不妨碍把它按高危处理——两条攻击路径都在公网可达范围内。
这版补丁还有个检查上的坑,我第一次就差点踩了:Node.js 是从上游 cherry-pick 的修复,没有同步升捆绑的 Brotli 版本号,所以 process.versions.brotli 在打了补丁和没打的构建上都报 1.2.0。判断打没打补丁只能看运行时版本号(node --version),别看这个字段。
修复版本对照:Node.js 22.x 升 22.23.4,24.x 升 24.22.1,26.x 升 26.12.1;Node.js 20、23、25 这几条线没有修复,要迁到受支持分支。Google Brotli 升 1.2.1(另有回补的 1.0.10 和 1.1.1);Python 侧 PyPI 的 brotli 升 1.2.1、brotlicffi 升 1.2.1.0;Bun 升 1.4.4;Envoy 升 1.40.0(或 1.39.3/1.38.6/1.37.8/1.36.12);Debian 有 DSA-6582-1(trixie)和 DLA-4855-1(bookworm)。还有一条容易漏的:Debian 的 tracker 里记着"nodejs 使用系统提供的 brotli 库",也就是说有些发行版的 Node 链接的是系统 Brotli,这种环境下升 Node 没用,得升系统 brotli 包。容器镜像里捆着的旧运行时同理,包清单查不到,要进容器里查版本。
哪些服务真的暴露,取决于有没有不可信的 Brotli 数据进到解码器。三条典型路径:请求体带 Content-Encoding: br——Express 5 的 express.json()/raw()、body-parser 2.x、Koa 的 bodyparser 都会在路由处理前解压,等于每个 JSON 或表单端点都是解码入口;出站 fetch() 对上游响应自动解压——undici、axios、got、服务端抓取类框架都算,链接预览、webhook 投递、爬虫这些"URL 由别人给的"场景最危险;直接调 node:zlib 的 brotli 函数处理客户端数据。排查命令很简单:node --version 确认运行时,代码里 grep express.json、body-parser、fetch( 找解码入口。反向代理层面暂时拒掉 Content-Encoding: br 的请求体可以作为缓冲手段,但这和 WAF 一样是缓解,不是修复。
截至 10 月 22 日没有在野利用报告,但公开 PoC 已经挂出来,按现在的节奏预期很快有武器化版本。核心结论就一句:这是解码器里的洞,唯一完整的修复是换掉受影响的运行时,别指望中间件和 WAF 替你扛。
来源如下,版本与时间线以 Node.js 官方与 Imperva 原文为准:
1. Imperva:Node2Shell - From Brotli Data to Remote Code Execution(一手研究,2026-10-22)
https://www.imperva.com/blog/node2shell-from-brotli-data-to-remote-code-execution/
2. Node.js:October 2026 security releases(官方发布)
https://nodejs.org/en/blog/vulnerability/october-2026-security-releases
3. ELLIO:Node2Shell (CVE-2026-111497) RCE analysis(修复版本总表与系统 Brotli 提醒)
https://ellio.tech/en/blog/node2shell-cve-2026-111497-rce-on-stock-nodejs-builds
4. 4sysops:Node2Shell RCE demonstrated on an official Node.js 24 build
https://4sysops.com/archives/node2shell-rce-demonstrated-on-an-official-node-js-24-build
5. rdintel:Broccoli2Shell 时间线与署名澄清(发现者为 OpenAI Codex Security,Imperva 做利用研究)
https://rdintel.com/news/item/hn/50221110
6. Shield53:Node2Shell 分析(两条公网可达路径的梳理)
https://news.shield53.com/node2shell-what-the-brotli-decoder-rce-means-for-nodejs-deployments
**HKTULU**
2026-10-26
@九幽
回复
使用道具
举报
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
相关链接:
|
手机版
|
电脑版
|
中国红客
Copyright © 2000 - 2025 中国红客 版权所有 湘ICP备2023007301号-1
中国红客公众号
中国红客抖音号
中国红客官方微博
意见
反馈