智闻解码 Decode News AI
首页繁體EN

解码器里的一行旧错,逼全网连夜打补丁

2026-10-27 03:14 EDT · AI 整理 · 依据 7 家来源(网络) · 834 字 · 约2分钟 · 阅读 …
图:欧洲核子研究中心机房的服务器机柜,其软件栈普遍内嵌Brotli解码器
图片:Florian Hirzinger - www.fh-ap.com / CC BY-SA 3.0 · via Wikimedia Commons

解码器里的一行旧错,逼全网连夜打补丁

出事的不是HTTP/2,是压缩库Brotli

这次被叫做HTTP2Shell的漏洞,严格说跟HTTP/2协议本身没有关系。真正的病灶藏在谷歌Brotli压缩库的C语言解码器里:一份特制的压缩数据流能让解码器写内存时越界,进程可能崩溃、内存可能被偷窥,条件合适时还能被远程执行代码。给它起这个名字的Aikido之所以这么叫,是因为Brotli几乎长在整个HTTP生态里——名字是唬人的,麻烦是真的。

9.2分、三个别名,官方口径高度一致

这个漏洞的正式编号是CVE-2026-111497,又叫Node2Shell、Broccoli2Shell。谷歌作为编号机构给它打了CVSS 4.0满分10分里的9.2分,定级严重。最早是10月21日由Node.js官方发布安全公告披露,报告者是OpenAI Codex Security团队的Khai Tran和Sylvie Mayer,修复者是Matteo Collina与Antoine du Hamel。各家媒体引用的技术定性一致:越界写,CWE-787,外加一个未检查返回值,CWE-252。

补丁二月就写好了,发布却等到十月

最耐人寻味的一段情节来自WebProNews的梳理:上游Brotli源码的修复早在二月就提交了,但一直没有随正式版本发布,直到10月21日Node.js和谷歌同步放出稳定修复,22日公开披露,23日PyPI的修复包才跟上。整整八个月,漏洞躺在公开的代码提交里等人打包。Node.js的三个受支持版本线分别推到22.23.4、24.22.1和26.12.1,Brotli库本身推到1.2.1,老版本线对应推到1.1.1和1.0.10。

受影响的不只Node,全家桶都要查

受影响的是Brotli的1.0.3到1.0.9、1.1.0和1.2.0版本。而装了Brotli的远不止Node.js:Bun要升到1.4.4,Python的Brotli包升到1.2.1、brotlicffi升到1.2.1.0,PHP重发了8.5.12-1等四个Windows包,微软给.NET打了紧急补丁,Envoy、Istio也在补。The Hacker News提醒,Python这边最阴险:只要装了Brotli或brotlicffi,requests、urllib3、httpx、aiohttp会自动解码服务器回的Brotli数据,业务代码一行Brotli都没写也中招。另有报道称.NET应用、FFmpeg库、ClickHouse和Apache Arrow也受牵连。已经停止维护的Node.js 20及更早版本线明确没有补丁。

代码执行已被证实,在野攻击暂无报告

Imperva红队在10月22日的报告里证实,用官方Node.js 24.22.0的Linux arm64镜像即可复现代码执行,虽然需要多次尝试,换到修复后的24.22.1同样输入即被拒绝。能崩溃、能读内存、能拿shell,三档后果都被坐实了一档以上。不过截至10月25日,尚无公开的在野利用报告,企业 patch 窗口还在。顺带澄清:九月底谷歌警告过的思杰NetScaler零日漏洞是另一件事,不要跟这次的Brotli漏洞混为一谈。

先找全所有副本再打补丁

Tanium和多家媒体给出相同的处置顺序:先把全网所有自带Brotli副本的应用找出来——系统库升级了不等于应用里的那份也升级了,很多软件是自己打包一份Brotli的。实在来不及升级的,先用代理或防火墙挡掉Brotli压缩流量,或关掉Brotli解码;只把Accept-Encoding里的br去掉是不够的,服务器照样可能发过来。Node.js 26即将在10月28日转长期支持版,升级正好顺路。至于选题线索里提到的Apache与思杰紧急补丁,研究材料不支持把它们归到这次事件,写稿时以实际披露为准。

本文来源

科技