上週 PHP2Shell 還沒處理完,另一個「×× 2Shell」又來了。Google 的壓縮函式庫 Brotli 解碼器被發現有越界寫入漏洞 CVE-2026-111497(俗稱 Node2Shell/HTTP2Shell),攻擊者只要讓程式解壓一段特製的 Brotli 資料,就可能造成當機、記憶體內容外洩,甚至遠端執行程式碼。Node.js、Bun、Envoy、Istio 都已發布修補。

事件經過

  • 漏洞由 OpenAI 在內部紅隊演練中發現;Node.js 安全公告致謝 OpenAI Codex Security 的 Khai Tran、Sylvie Mayer。
  • 10/21 Node.js 發布安全更新(22.23.4/24.22.1/26.12.1);Brotli 上游修正版為 1.0.10/1.1.1/1.2.1。
  • 10/23 新加坡網路安全局(CSA)發布警示;10/26 Red Hat 發布安全公告;日本 JPCERT/CC 亦於 10/26 發布注意喚起。

重點

項目修正版本
Google Brotli(上游)1.0.10、1.1.1、1.2.1
Node.js22.23.4、24.22.1、26.12.1(已停止支援的版本視同受影響)
Bun1.4.4
Envoy Proxy1.40.0、1.39.3、1.38.6、1.37.8
Istio1.29.9、1.30.6、1.31.2
  • 受影響範圍:Brotli 1.0.3 至 1.2.0 各分支未修正版本。
  • 前提條件:程式必須解壓「攻擊者可控」的 Brotli 資料,例如帶 Content-Encoding: br 的請求、從不受信任伺服器抓回的回應、或壓縮檔案。只用 Brotli「壓縮輸出」不等於受影響。
  • 嚴重度各家評分不一:新加坡 CSA 引用 CVSS 9.8,Red Hat 自評 8.1(攻擊複雜度高)。
  • Red Hat 表示已有可造成記憶體損壞與當機的公開 PoC,尚未觀察到公開可靠的遠端執行 exploit。

對你的實務建議

企業 / IT 管理者

  • 把 Node.js、Bun 升到上表版本,重建容器映像並重啟所有服務,再確認實際執行的版本。
  • 暫時無法更新:在任何 body parser 或 proxy 之前拒絕 Content-Encoding: br 的請求,HTTP client 關閉 Brotli 自動解壓(只把 br 從 Accept-Encoding 拿掉並不夠)。
  • 別忘了 Electron 桌面程式、Python/Java 綁定、curl/libcurl 等內嵌的 Brotli,這些都要各自更新。

一般用戶

  • 桌面 App、瀏覽器開啟自動更新即可。
  • Red Hat 指出 Firefox、Thunderbird 也內嵌 Brotli,請保持最新版本(未獲第二來源證實)。

資料來源

Posted in

發表留言