上週 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.js | 22.23.4、24.22.1、26.12.1(已停止支援的版本視同受影響) |
| Bun | 1.4.4 |
| Envoy Proxy | 1.40.0、1.39.3、1.38.6、1.37.8 |
| Istio | 1.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,請保持最新版本(未獲第二來源證實)。
資料來源
- Patch the Planet(OpenAI 發起,修補總覽):https://patchtheplanet.org/brotli
- Node.js 22.23.4 發布說明:https://nodejs.org/en/blog/release/v22.23.4
- NVD:https://nvd.nist.gov/vuln/detail/cve-2026-111497
- 新加坡 CSA 警示(2026/10/23):https://www.csa.gov.sg/alerts-and-advisories/alerts/al-2026-154/
- Red Hat RHSB-2026-015:https://access.redhat.com/security/vulnerabilities/RHSB-2026-015
- GIGAZINE(2026/10/26):https://gigazine.net/news/20261026-openai-brotli-vulnerability/
發表留言