一个被称为“HTTP2Shell”的严重Brotli压缩漏洞可能导致内存损坏和远程代码执行攻击。
该漏洞影响广泛使用的软件,包括Node.js、Python软件包以及.NET应用程序。
各厂商已发布补丁,尽管目前尚未发现实际野外利用案例,但管理员仍被敦促立即更新系统。
近期,多家科技公司和项目纷纷发布补丁,以修复一个名为“HTTP2Shell”的漏洞,该漏洞可能引发远程代码执行(RCE)攻击,与此前的“PHP2Shell”漏洞类似。
HTTP2Shell漏洞存在于Brotli中,这是谷歌开发的一款开源数据压缩算法,能够在不丢失信息的情况下减小文件体积,从而在占用更少带宽的同时实现更快的传输速度。
该算法在网络上被广泛用于压缩HTTP响应内容,如HTML、CSS和JavaScript,且被大多数网络浏览器、服务器和软件库所支持。
修复与补丁
该漏洞本身被描述为越界写入缺陷,也被称为Node2Shell和Broccoli2Shell,编号为CVE-2026-111497,严重性评分为9.2/10(严重级别)。根据国家漏洞数据库(National Vulnerability Database)的说明,该漏洞会导致缓冲区溢出,进而可能引发内存泄露、拒绝服务,在某些情况下甚至会造成远程代码执行。
Brotli被广泛应用于各类软件中,这些软件目前均面临风险,其中包括Node.js、brotlicffi,以及Requests、urllib3、httpx和aiohttp等HTTP客户端,还有使用Brotli解码器的其他应用,如Bun和Envoy部署环境。
谷歌已于2026年10月21日通过发布Brotli 1.0.10、1.1.1和1.2.1版本修复了该漏洞。不过,由于其他一些软件捆绑或使用了存在漏洞的Brotli版本,因此仅更新谷歌的库可能无法保护所有应用程序的安全。
上周末,微软发布了一项紧急更新,以修复.NET中的该漏洞,并表示成功利用该漏洞可能导致权限提升。
由于Node.js同样捆绑了Brodli解码器,该组织也于10月21日发布了补丁。该组织解释称:“一个无效的块切换被错误地报告为需要更多输入的临时状态,而非永久性格式错误,因此流式解码器持续向一个8字节的内部缓冲区追加输入字节。攻击者只要能够提供经由node:zlib进行解压缩的Brotli数据,就可能破坏进程内存,进而导致程序崩溃、进程内存泄露,或引发远程代码执行。”
据称,该漏洞影响Node.js 26.x、24.x和22.x版本。
据BleepingComputer报道,包含修复程序的PyPI软件包已于两天后的10月23日发布。
以下是已修复版本的详细列表:
谷歌Brotli 1.0.10、1.1.1、1.2.1
Node.js 22.23.4、24.22.1、26.12.1
Python Brotli 1.2.1
Python brotlicffi 1.2.1.0
专门网站
与此同时,有人专门建立了一个名为Broccoli2Shell.com的网站,用于描述该问题、追踪受影响版本,并报告野外利用尝试的情况。该网站称,该漏洞的概念验证(PoC)利用程序已经存在,但目前尚未发现恶意利用的野外案例报告。
该网站写道:“一个公开的概念验证程序已于2026年10月22日出现在GitHub上。据报道,该程序仅在刻意削弱安全防护的构建版本上才能实现代码执行。在标准构建版本上,它只会导致程序崩溃和有限的内存读取。”
建议系统管理员尽快应用相关补丁,重启受影响的进程,并重新构建和部署受影响的容器镜像。
那些无法立即采取上述措施的用户,可以通过一些方法在一定程度上降低风险。Python用户应卸载存在漏洞的Brotli和brotlicffi软件包,并移除诸如httpx[brotli]之类的可选依赖项。
管理员还可以配置代理、负载均衡器或Web应用防火墙(WAF),以拒绝接收包含Brotli压缩内容的传入请求。不过值得注意的是,这种方法无法保护那些会下载并解压恶意HTTP响应的应用程序。
据悉,Node.js目前尚无完整的临时解决方案。