真凶是谷歌压缩技术…Node.js漏洞波及整个网络"HTTP2Shell"
上周引发全球服务器管理员关注的Node.js安全补丁的真正根源已被确认为谷歌开发的数据压缩技术"Brotli"。随着相同缺陷扩散到Python、网络通信中继软件Envoy、JavaScript执行环境Bun等,安全业界为此事件命名为"HTTP2Shell"。一个压缩组件的漏洞已蔓延到整个网络。
Brotli是一种压缩技术,可以减少网页和数据的容量以实现快速传输,被作为组件内置在众多软件中。问题缺陷(CVE-2026-111497,危险等级9.2)在解压过程中无法过滤掉被篡改的数据,导致超出允许内存范围的写入,可能引发服务器宕机、信息泄露,在特定条件下甚至可能导致远程代码执行。
传播路径在四天内浮现。21日Node.js发布补丁,这个曾被称为"Node2Shell"的漏洞,在22日也在Python的Brotli库中被发现,23日安全公司Aikido Security将其确认为HTTP通信软件的整体问题,并重新命名为"HTTP2Shell"。受影响范围包括Brotli原始库(修复版1.2.1)、Node.js(22.23.4·24.22.1·26.12.1)、Python Brotli·brotlicffi(1.2.1)、Bun(1.4.4)、Envoy(1.40.0等)。即使开发者不直接使用Brotli,也可能通过内置该组件的软件受到影响。不过nginx·Apache网络服务器的默认配置不在受影响范围内。
更令人遗憾的是,这个漏洞早在8个月前就已被发现。OpenAI的安全团队(Codex Security)在2月发现了该缺陷并向谷歌报告,谷歌于2月27日修复了源代码。然而由于未将其视为安全缺陷,并未将修复版本作为正式版本发布。之后8个月内,Brotli没有发布过任何新版本,全球软件中内置的副本即使存在修复后的代码也仍然以易受攻击的状态运行。这正好暴露了开源供应链的结构性漏洞——修复和发布是两回事。
幸运的是,目前还未观察到实际攻击。截至24日,尚无实际环境中的滥用报告,也未被列入美国网络安全局(CISA)的已遭利用漏洞列表。目前仅处于安全公司实验室演证阶段。在这一点上与上周的"PHP2Shell"不同。PHP2Shell是PHP引擎本身的漏洞,是一个独立事件,在公开前就已捕获到实际攻击尝试。两起事件的共同点仅是在同一周发生,以及"X2Shell"的命名方式。
国内应对存在空白。韩国互联网振兴院(KISA)于23日发布了Node.js更新建议,但截至25日,对Brotli原始库及Python·Envoy等其他受影响范围的单独通知尚未发布。运营者与其等待通知,不如自行检查所使用软件清单中是否内置Brotli以及版本号更为安全。
一周内PHP、Node.js,以及其根源Brotli。这次"安全周"留下的教训是明确的。网络建立在少数共同组件之上,而这一个组件的单个漏洞和一次发布的遗漏可能会影响整体。补丁发布虽然迅速,但下一个漏洞可能正在某个组件中沉睡,而我们浑然不觉已经是第8个月了。