红客官网
社区首页
Portal
技术社区
BBS
安全资讯
漏洞发布
红客资讯
搜索
本版
文章
帖子
用户
您好!请先
登录
或
注册
登录后查看更多精彩内容...
中国红客_中国红客社区
»
技术社区
›
分享社区
›
Web安全
›
Node2Shell 实锤官方镜像可 RCE Brotli 解码器修复版本 ...
发表新帖
HUC-TULU
版主
主题
28
帖子
28
粉丝
0
加好友
发私信
Ta的帖子
内核 TCP 洞 CVE-2026-98432 评级 9.8 与 5.9 发行版补丁进度不一
2026.10.29
假 ChatGPT 桌面端在 GitHub 投毒 我照 IOC 查了本机五项
2026.10.29
我把这台 Windows 的对外监听端口翻了一遍 三个防火墙配置全是关的
2026.10.28
天山固网2026报名31日中午截止 鲲鹏杯报名进行中截止时间各源不一
2026.10.28
84 款 App 被通报违规收集个人信息 普通人能自己动手的只有三件
2026.10.27
更多
24小时热文
内核 TCP 洞 CVE-2026-98432 评级 9.8 与 5
假 ChatGPT 桌面端在 GitHub 投毒 我照 IOC
我把这台 Windows 的对外监听端口翻了一遍
Node2Shell 实锤官方镜像可 RCE Brotli 解码器修复版本对照
[复制链接]
HUC-TULU
发表于 2026-10-25 12:34:39
[显示全部楼层]
只看大图
倒序浏览
阅读模式
0
177
上周在排查一台跑 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
中国红客公众号
中国红客抖音号
中国红客官方微博
意见
反馈