严重的 'HTTP2Shell' Brotli 漏洞引发紧急补丁
- 浏览次数 25
- 喜欢 0
Brotli(内置于 Node.js 的 C 解码器库)中一个被称为 'HTTP2Shell' 的严重缺陷可能允许攻击者破坏内存并访问敏感数据。
该安全问题被追踪为 CVE-2026-111497,也被称为 "Broccoli2Shell" 和 "Node2Shell"。它影响 Brotli 1.0.3 至 1.0.9、1.1.0 和 1.2.0 版本。
该漏洞以多个名称被报告,因为它最初是在 Node.js 中被发现的,之后研究人员发现 Brotli 解码器中的同一缺陷可能影响多个生态系统中的软件。
Brotli 是 Google 开发和维护的一个用于无损数据压缩的开源项目。它压缩文件,使其能够更快地传输而不影响原始数据。
广泛影响
HTTP2Shell 这一名称反映了它对 HTTP 客户端和服务器的影响,尽管该漏洞并非特定于 HTTP/2,也可能影响其他解压攻击者控制的 Brotli 数据的应用。
除 Node.js 外,可能受影响的软件包括 Python HTTP 客户端,如 urllib3[brotli]、requests、httpx 和 aiohttp[speedups](在配置了易受攻击的 Brotli 解码器时),以及其他使用易受攻击 Brotli 实现的应用和工具。
周日,Microsoft 推送了一个紧急安全更新以解决 .NET 中的该问题,警告称成功利用可在运行易受攻击 .NET 版本的系统上实现权限提升。
Node2Shell 漏洞是一个缓冲区溢出,允许特制的 Brotli 压缩流触发一个无效的块切换,而解码器将其视为有效,并误解为请求更多输入。
通过继续向一个内部 8 字节缓冲区追加输入字节,写入超出其边界,破坏邻近内存。
"一个无效的块切换被报告为临时需要更多输入,而非永久性格式错误,因此流式解码器持续向一个 8 字节内部缓冲区追加输入字节," Node.js 在一份公告中解释道。
攻击者可以通过让应用解压恶意数据来利用它,例如向获取 URL 的应用提供压缩的 HTTP 响应,或直接向服务器发送压缩请求。
Node.js 表示,这可能导致进程崩溃、暴露内存并实现远程代码执行(RCE)。
网络安全公司 Imperva 最近的一份报告证实,利用 CVE-2026-111497 Node2Shell 漏洞可导致 RCE。
上游 Brotli 修复最早于 2 月提交到项目源代码,但 Node.js 和 Google 于 10 月 21 日为用户发布了稳定修复,次日公开披露。包含修复的 PyPI 包于 10 月 23 日可用。
已修补的版本为:
- Google 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
Node2Shell 的概念验证(PoC)利用代码已发布,但没有在野恶意利用的报告。尽管如此,用户应优先应用可用的安全更新。
更新后,管理员必须重启受影响的进程,受影响的容器镜像必须重新构建并重新部署。
一个追踪该缺陷影响的专用在线门户还警告称,更新系统 Brotli 库并不能解决 Node.js 部署或使用其自带库副本的其他应用中的风险。
此外,阻止入站 Brotli 请求仍然使恶意 HTTP 响应路径处于暴露状态。
如果无法立即更新,建议从 Python 应用中移除 Brotli 支持,并在其代理或防火墙层面阻止传入的 Brotli 压缩请求。