Brotli数据压缩格式漏洞波及多种HTTP软件 安全公司称之为HTTP2Shell系列问题

Brotli数据压缩格式漏洞波及多种HTTP软件 安全公司称之为HTTP2Shell系列问题

💡 原文中文,约1300字,阅读约需3分钟。
📝

内容提要

安全公司Aikido Security报告称,Brotli解码器漏洞影响范围已扩大至多种HTTP软件,被命名为HTTP2Shell。该漏洞源于特制压缩数据可触发异常区块切换,导致越界写入,可能造成崩溃、内存泄露甚至远程代码执行,但需解压不可信数据才会触发。Node.js、Bun、Python及Brotli上游均已发布修复版本,各软件包需分别更新。Imperva已在Node.js 24.22.0上验证代码执行,修复版24.22.1可阻止攻击。

🔎

延伸解读

漏洞命名背后的推动意图

Aikido Security 将 Brotli 解码器漏洞命名为 HTTP2Shell,并非因为出现了新的 CVE,而是希望以专门命名提高行业关注、推动软件更新。这提示读者,该问题的严重性在于影响范围广,而非漏洞本身是全新类型。理解这一点有助于避免混淆,并更关注各软件包是否已发布修复版本。

触发条件决定实际风险

漏洞位于 Brotli 解码器,使用 HTTP 本身不会自动触发。关键条件是软件运行着含漏洞的解码器,并且对攻击者可控的数据进行解压。因此,风险高低取决于应用是否解压不可信输入。若业务不涉及此类场景,暴露面相对有限;反之则需优先排查。

更新需覆盖每个独立组件

Node.js、Bun、Python 环境及 Brotli 上游均已发布修复版本,但这些属于不同软件包和运行环境,安装其中一个更新不会自动修复其他独立安装的解码器。容器、应用依赖和系统软件包也需分别检查。若软件提供方尚未提供更新,可暂时关闭对应组件的 Brotli 解压功能。

远程代码执行已获验证但非必然

Imperva 研究团队在 Node.js 24.22.0 Linux ARM64 构建上,通过特制 Brotli 数据在应用测试中实现代码执行,覆盖请求正文解压和 fetch 解压响应两条路径,但并非每次都能成功。该团队也在修复版 24.22.1 上验证攻击已无法奏效。这说明漏洞可导致严重后果,但利用存在条件限制,及时更新仍是有效防护手段。

❓

Q&A

HTTP2Shell 漏洞是什么?和 Node2Shell 有什么关系?

HTTP2Shell 是安全公司 Aikido Security 对 Brotli 解码器漏洞影响范围扩大后的命名,它并非新的 CVE,而是原先 Node2Shell 漏洞波及更多 HTTP 软件后的统称。该漏洞源于特制压缩数据可触发解码器异常区块切换,导致越界写入,可能造成崩溃、内存泄露甚至远程代码执行。

Brotli 解码器漏洞在什么条件下才会被触发?

触发漏洞需要同时满足两个条件:软件运行着含有漏洞的 Brotli 解码器,并且对攻击者可以控制的数据进行解压。仅使用 HTTP 本身不会自动触发漏洞。

哪些软件和运行环境需要更新来修复 Brotli 漏洞?

Node.js 需更新到 22.23.4、24.22.1 或 26.12.1 版;Bun 需更新到 1.4.4 版;Python 环境应将 Brotli 更新到 1.2.1 版,或将 brotlicffi 更新至 1.2.10 版;Brotli 上游已发布 1.0.10、1.1.1 和 1.2.1 等修复版本。各软件包需分别更新,安装其中一个不会自动修复其他独立安装的解码器。

HTTP2Shell 漏洞是否已被验证可导致远程代码执行?

是的。Imperva 研究团队在 Node.js 24.22.0 Linux ARM64 构建上,通过特制 Brotli 数据在应用测试中成功实现代码执行,测试覆盖请求正文解压和 Node.js fetch 解压响应两条路径,但并非每次都能成功。在 Node.js 修复版本 24.22.1 上验证发现攻击已无法奏效。

如果软件提供方尚未发布 Brotli 漏洞修复更新,有什么临时缓解措施?

可以暂时关闭对应组件的 Brotli 解压功能,以降低风险。同时需要分别检查容器、应用依赖和系统软件包,确保所有独立安装的解码器都得到处理。

为什么更新了一个软件包后,还需要检查其他软件包?

因为 Node.js、Bun、Python 环境以及 Brotli 上游属于不同的软件包和运行环境,安装其中一个更新不会自动修复其他独立安装的解码器。容器、应用依赖和系统软件包也需要分别检查并更新。

🏷️

标签

➡️

继续阅读