各大开发机构和科技公司已发布紧急安全补丁,以修复一个被高度关注并被称为 HTTP2Shell 的严重漏洞(跟踪编号为 CVE-2026-111497,亦被称为 Node2Shell 和 Broccoli2Shell)。该漏洞影响了集成在 Node.js 及多个其他软件平台中的 C 语言编写的 Brotli 解压库。
该漏洞影响 1.0.3 至 1.0.9 版本的 Brotli,以及 1.1.0 和 1.2.0 版本。该问题被报告时使用了多个名称,因为它最初是在 Node.js 环境中被发现的,随后人们发现 Brotli 解压器中的同一缺陷会影响不同技术环境中的软件。
影响范围与受影响系统
尽管名称 HTTP2Shell 反映了其对 HTTP 协议客户端和服务器的潜在影响,但该漏洞并不局限于 HTTP/2 本身,而是延伸至任何依赖于处理受攻击者控制的 Brotli 数据解压的应用程序。潜在受影响的应用程序包括:
- 著名的 Node.js 运行环境。
- 配置为使用受影响的 Brotli 解压器的 Python HTTP 库,例如 urllib3、requests、httpx 和 aiohttp。
- 微软为应对 .NET 平台中的该漏洞而推出的紧急安全更新,因为利用该漏洞会导致受感染系统上的权限提升。
利用机制与技术影响
该漏洞的本质是一个缓冲区溢出(Buffer Overflow)缺陷。精心构造的 Brotli 数据流会触发无效的块切换操作,解压器将其视为有效块,并错误地将其解释为对更多输入的请求。通过不断将输入字节附加到八字节大小的内部缓冲区中,写入操作超出了允许的边界并损坏了相邻的内存。
网络安全公司 Imperva 发布的的技术报告表明,成功利用该漏洞可能导致程序运行中断、敏感内存内容泄露,甚至实现远程代码执行(RCE)。
实际变化与修复方法
尽管目前尚无确凿报告证实该漏洞已被用于实际的网络攻击,但漏洞利用概念验证(PoC)代码的公开要求系统管理员和开发人员迅速采取行动。
- 立即更新:Google Brotli(1.0.10、1.1.1 和 1.2.1)、Node.js(22.23.4、24.22.1 和 26.12.1 版本)以及受影响的 Python 库均已提供修复该缺陷的更新版本。
- 附加措施:在安装更新后,管理员必须重新启动受影响的进程,并重新构建和部署容器镜像。
- 临时替代方案:如果无法立即更新,建议从 Python 应用程序中完全移除对 Brotli 的支持,并在代理或防火墙层阻止传入的 Brotli 请求。