
這次被叫做HTTP2Shell的漏洞,嚴格說跟HTTP/2協議本身沒有關係。真正的病竈藏在谷歌Brotli壓縮庫的C語言解碼器裏:一份特製的壓縮數據流能讓解碼器寫內存時越界,進程可能崩潰、內存可能被偷窺,條件合適時還能被遠程執行代碼。給它起這個名字的Aikido之所以這麼叫,是因爲Brotli幾乎長在整個HTTP生態裏——名字是唬人的,麻煩是真的。
這個漏洞的正式編號是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。
受影響的是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與思傑緊急補丁,研究材料不支持把它們歸到這次事件,寫稿時以實際披露爲準。