http2shell:Node 与 Python 的新 RCE 威胁

Evolving Threat: http2shell is an RCE in node, Python, and more

一个名为 http2shell 的新漏洞正在威胁 Node、Python 等多种语言环境,它利用 brotli 压缩库中的内存错误实现远程代码执行(RCE)。讨论中有人指出,brotli <= 1.2.0 版本存在风险,而 Python 包已更新至 1.2.1 修复。有趣的是,该漏洞的修复提交早在今年二月就已存在,但直到 OpenAI 的 Agent 意识到其安全性影响后才被重视。社区建议的临时缓解措施包括在客户端和服务端禁用 brotli 编码。此外,Rust 服务器因未绑定 C 库可能暂时安全,但也有人提醒 Rust 同样存在缓冲区溢出风险。

修复这个漏洞的提交早在二月就完成了,但当时并未被视为安全相关,直到他们的 Agent 意识到其严重性。
  1. mirashii

    我觉得这应该叫 googlebrotli2shell,而不是 http2shell。谷歌理应为此承受一些声誉损失。这是一个基础的内存安全违规,来自同一个既搞 wuffs、又推崇 Rust 以保障内存安全、还搞 Carbon 的组织。zstd 拥有高质量的 Rust 实现,且发布时间大致相同。

    此外,brotli 库几乎整整一年没有发布新版本,而修复该漏洞的代码早在二月就已提交。谷歌所有项目都基于 main 分支构建,因此未受影响,但开源发布完全被当成了事后补救。超过 100 个包含各种修复的提交被搁置,直到发生安全事件才被迫发布。

  2. anonymous908213

    说实话,我实在受够了每个内存漏洞都被起个可爱的轰动性名字并大搞营销。

  3. ataraxia937

    这次事件感觉又被夸大了,至少对服务器端而言。我刚检查了一个拥有超过 200 个 GitHub 仓库的组织,涉及 Node、Python 和 C#。它们都不受影响……因为它们实际上根本没有调用 Brotli 解码器。服务器端平台上默认并未启用它。这很像 PHP 的那些漏洞,必须满足特定条件才会真正面临风险。

    至于客户端?没错,那风险更大。赶紧修补吧。但除非你的客户端主动连接攻击者,否则坏人不会攻击你的客户端。别为了这事熬夜。

  4. rvanlaar

    看起来 brotli <= 1.2.0 存在漏洞。

    Python 包已经更新到了 1.2.1。https://pypi.org/project/brotli/1.2.1/

  5. iracigt

    周三我玩了这个漏洞挺开心。Node 发布后,修复后的 brotli 包在 pypi 上又过了一天多才出现。

    在 Python 中用单行 httpx.get(URL) 就能轻松复现,但我没能从那个上下文中找到绕过 ASLR 的方法。导致崩溃很容易,我(借助 LLM)能搞到一些读写原语,但无法串联起来获取我所需的那个函数指针。可能需要堆操作,但那时我就失去兴趣了。

    真希望能看到一个实际的 RCE PoC。另外,开源权重模型可以轻松提供一个“回归测试”,把大多数爬虫吓跑。

同日更多故事

2026-10-24