本文適合:在 Node.js、Bun、Python 或 .NET 上執行網站服務、API、爬蟲或批次作業的開發者與維運人員。本文依據 Google 的 Brotli 專案、Node.js、Microsoft、PyPI、JPCERT/CC 以及美國政府來源的公開資訊撰寫,不涉及攻擊步驟或攻擊程式碼。
發展中:隨著更多資訊公布,本頁將持續更新
截至 2026 年 10 月 26 日 23:00 UTC尚不清楚
- 是否遭利用(沒有第一手來源回報)
- NVD 本身的評估(等待分析)
- 受影響產品的完整清單
- 部分 Linux 發行版(較舊版本尚未評估)
Google 於 10 月 21 日(美國時間)發布修補,Node.js 於同一天發布,Microsoft 於 10 月 25 日(美國時間)發布。JPCERT/CC 於 10 月 26 日發布警示。CISA 的 KEV 目錄未收錄此漏洞。更多廠商仍陸續發布修補,本頁將隨之更新。
今天要做的事
確認是否會解壓縮來自外部的 Brotli 資料
例如:會解壓縮以 Content-Encoding: br 送來之請求的網站伺服器、會自動解壓縮外部網站回應的 HTTP 用戶端,以及會解壓縮使用者上傳檔案的程式碼。若符合其中任何一項,請將其視為緊急事項處理(本站看法)。
檢查執行環境與套件的版本
使用下方「如何檢查是否受影響」中的指令,檢查 Node.js、Bun、Python 套件,以及 .NET 執行階段與 SDK。
更新至修補版本
至少更新至下方「修補版本」所列的版本。nodejs.org 的 Node.js 20.x 及更舊版本的官方建置已停止支援,不會獲得修補,請改用 22.x 或更新版本。對於從 Ubuntu 或 Debian 套件安裝的 Node.js,請依照發行版的安全通知處理。
重新建置、重新部署並重新啟動
使用修補版本重新建置容器映像檔、以 bun build --compile 製作的執行檔,以及 .NET 自封式或 NativeAOT 應用程式,然後重新部署。也要重新啟動執行中的程序:舊程序仍載入著舊的函式庫。
檢查遭入侵的跡象
JPCERT/CC 要求使用者在套用修補的同時檢查是否遭入侵。在會解壓縮外部資料的程序中,留意當機次數增加、陌生的子程序或對外連線(本站建議)。
修正鎖定檔與基礎映像檔中的版本釘選
若 package-lock.json、requirements.txt、poetry.lock 或 Dockerfile 的 FROM 行釘選了舊版本,下次建置時會把它帶回來。請將釘選改為修補版本。
修補版本
| 你使用的軟體 | 受影響 | 修補版本 | 來源 |
|---|---|---|---|
| Brotli(C 函式庫) | 1.0.3–1.0.9、1.1.0、1.2.0 | 1.0.10、1.1.1、1.2.1 | |
| Node.js 22.x | 早於 22.23.4 | 22.23.4 | Node.js |
| Node.js 24.x | 早於 24.22.1 | 24.22.1 | Node.js |
| Node.js 26.x | 早於 26.12.1 | 26.12.1 | Node.js |
| Node.js 20.x 及更舊版本(nodejs.org 官方建置) | 已停止支援 | 無(請改用 22.x 或更新版本) | Node.js |
| Bun | 1.0.21 以上、早於 1.4.4 | 1.4.4 | Bun |
| PyPI brotli | 1.0.3 以上、早於 1.2.1 | 1.2.1 | GitHub Advisory Database |
| PyPI brotlicffi | 1.0.3 以上、早於 1.2.1.0 | 1.2.1.0 | GitHub Advisory Database |
| .NET 8 | 早於 8.0.33 | 執行階段 8.0.33(SDK 8.0.133、8.0.427) | Microsoft |
| .NET 9 | 早於 9.0.22 | 執行階段 9.0.22(SDK 9.0.123、9.0.320) | Microsoft |
| .NET 10 | 早於 10.0.14 | 執行階段 10.0.14(SDK 10.0.114、10.0.403) | Microsoft |
| Envoy | v1.39.2、v1.38.5、v1.37.7、v1.36.11 | v1.40.0、v1.39.3、v1.38.6、v1.37.8、v1.36.12 | Envoy |
| PHP Windows 建置 | 重新建置前的 8.5.12、8.4.27、8.3.36、8.2.35 | 8.5.12-1、8.4.27-1、8.3.36-1、8.2.35-1 | PHP |
.NET Framework 不受影響(Microsoft)。.NET 11 預覽版也有修補(11.0.0-rc.3.26522.148)。根據 Envoy 的說法,只有設定了 Brotli 解壓縮器的部署才受影響。
Linux 發行版經常在不變更上游版本號的情況下回移修補。例如,Ubuntu 22.04 的 brotli 在「1.0.9-2ubuntu0.1」中完成修補,但版本號仍顯示 1.0.9。對於作業系統套件,請以發行版的安全通知為準,而非只看版本號。
根據 PHP 團隊的說法,PHP Windows 建置在啟用 HTTP 回應自動解壓縮時,會透過 cURL 擴充功能暴露於此漏洞(cURL 預設關閉此功能,但應用程式與 HTTP 用戶端函式庫可能將其開啟)。修補後的建置帶有「-1」後綴;PHP 版本本身不變。
作業系統函式庫(libbrotli)
透過作業系統更新修補。重新啟動使用它的程序
內建於執行環境(Node.js、Bun、.NET)
更新執行環境本身
程式語言套件(brotli、brotlicffi)
在每個虛擬環境中更新
你自己建置的產物(容器、執行檔)
以修補版本重新建置並重新部署
如何檢查是否受影響
以下指令只會檢查你自己系統上的版本。
Node.js
執行 node -v。早於 22.23.4、24.22.1 或 26.12.1 的版本受影響。node -p process.versions.brotli 會顯示內建的 Brotli 版本,但視修補的套用方式,此數字可能不會改變,因此請以 Node.js 版本本身判斷(本站看法)。若使用 Docker,請在映像檔內檢查,例如 docker run --rm --entrypoint node <image> -v。從 Ubuntu 或 Debian 套件安裝的 Node.js 使用系統的 libbrotli,因此請依下方「作業系統函式庫」的說明檢查。
Bun
執行 bun --version。早於 1.4.4 的版本受影響。以 bun build --compile 建置的執行檔內含建置時使用的 Bun,在重新建置前都會受影響(Bun 的安全公告)。
Python
執行 pip show brotli brotlicffi(或在 python -m pip list 中尋找 Brotli 與 brotlicffi)。早於 1.2.1 的 brotli 與早於 1.2.1.0 的 brotlicffi 受影響。若兩者都未安裝,就沒有需要針對此漏洞修補的 Python 套件。每個虛擬環境與容器都有自己的副本,請逐一檢查。若是從 python3-brotli 等作業系統套件安裝,請以發行版的安全通知為準,而非看版本號。
.NET
執行 dotnet --list-runtimes 與 dotnet --list-sdks。Microsoft 表示,若你在 ASP.NET Core 請求解壓縮或 HttpClient 自動回應解壓縮中啟用了 Brotli,或直接呼叫 BrotliStream 或 BrotliDecoder,就會暴露於此漏洞。兩個自動選項預設都未開啟。
作業系統函式庫
在 Debian 與 Ubuntu 上使用 dpkg -l 'libbrotli*',在 RHEL 系統上使用 rpm -qa 'brotli*' 'libbrotli*',在 Alpine 上使用 apk list --installed 'brotli*' 檢查已安裝的版本,並與發行版的安全通知比對。Debian 已在 1.0.9-2+deb12u1(DLA-4855-1)修補 Debian 12,在 1.1.0-2+deb13u1(DSA-6582-1)修補 Debian 13。
已揭露的內容
- CVE
- CVE-2026-111497(GitHub 安全公告 GHSA-9v8h-qqgm-4m35)
- 類型
- Brotli 解碼器(c/dec/decode.c)中的越界寫入(CWE-787)與未檢查的回傳值(CWE-252)
- 嚴重程度
- CVSS v4.0 9.2(Google)。網路攻擊途徑、無須驗證、無須使用者互動、存在攻擊前提條件(AT:P)。Microsoft 依 CVSS v3.1 將 .NET 的問題評為 8.1
- 影響
- 解壓縮惡意構造的 Brotli 串流可能破壞相鄰記憶體、洩漏記憶體內容、造成阻斷服務,甚至可能允許任意程式碼執行(Google 在 NVD 上的說明)。對於 .NET,Microsoft 表示可能導致資訊洩漏、阻斷服務或權限提升(未提及程式碼執行)
- 受影響
- Brotli 1.0.3–1.0.9、1.1.0 與 1.2.0,以及內建這些版本的產品
- 修補
- Brotli 1.0.10、1.1.1、1.2.1(2026 年 10 月 21 日,美國時間)
- 暫時措施
- Google 未提供(JPCERT/CC)。Microsoft 表示在能夠更新之前,應避免解壓縮攻擊者可控制的 Brotli 資料
根據 Node.js 的說法,解碼器將格式錯誤資料中無效的區塊切換視為暫時需要更多輸入,而非格式錯誤,因此會持續寫入,超出內部 8 位元組緩衝區的結尾。在 Node.js 中,使用 node:zlib 解壓縮攻擊者提供之 Brotli 資料的應用程式會受影響。Node.js 將此問題評為 High(高)。同一批版本也修補了另外九個漏洞。
根據 Bun 的安全公告,Bun 的 fetch 預設會自動解壓縮 Brotli 回應,因此應用程式所連線的伺服器,或位於未加密連線路徑上的攻擊者,都能提供這類資料。
只更新作業系統可能無法修補
Brotli 以副本形式內建於許多程式中,包括 Node.js、Bun、Python Brotli 套件、.NET 與 Envoy。JPCERT/CC 要求應用程式會解壓縮 Brotli 資料的使用者,查看各廠商的最新資訊以確認影響與修補狀況。Microsoft 也表示,更新共用執行階段並不能修補 NativeAOT 應用程式,必須重新發佈這些應用程式。
遭利用與概念驗證的狀況
截至 10 月 27 日上午(日本時間),Google、Node.js、Microsoft 與 JPCERT/CC 均未回報在野遭利用。CISA 的 KEV 目錄(10 月 26 日版本)未收錄此漏洞。10 月 23 日加入 NVD 的 CISA SSVC 評估將遭利用狀況評為 none(無)、可自動化評為 no(否)、技術影響評為 total(完全)。Microsoft 的 CVSS 將攻擊程式碼成熟度評為 unproven(未經證實)。
第一手來源未提及公開的概念驗證程式碼。一個獨立的解說網站表示,10 月 22 日有 PoC 公開:在標準建置上只會造成當機與有限的記憶體讀取,而在刻意削弱防護的建置上則可達成程式碼執行。該網站也表示,一家資安公司的研究團隊在官方 Node.js 映像檔上達成了程式碼執行,但未公開方法。本站尚未查證上述任何內容,也不提供連結。
Ubuntu 將此問題評為 Medium(中)優先度,而 Google 評為 9.2。對你而言哪一個更重要,取決於你是否會解壓縮從外部收到的資料(本站看法)。
關於主要的 Python HTTP 函式庫
截至 10 月 27 日,requests、urllib3、httpx 與 aiohttp 均未針對此漏洞發布安全公告(本站查看了各儲存庫的安全公告清單)。urllib3、httpx 與 aiohttp 將 brotli 或 brotlicffi 視為選用的額外相依套件,只有安裝其中之一時才會解壓縮 Brotli。需要修補的是同一環境中的 brotli 與 brotlicffi。若 brotli 仍是舊版本,只更新 HTTP 函式庫並沒有幫助。
尚不清楚的事項
| 項目 | 狀況 |
|---|---|
| 在野遭利用 | 第一手來源未回報。未收錄於 KEV |
| 公開的概念驗證程式碼 | 第一手來源未提及。一個獨立網站表示已存在(未查證) |
| NVD 評估 | 等待分析(僅有 Google 的 9.2) |
| 受影響產品的完整清單 | 仍在增加。瀏覽器與其他產品請查看各廠商的通知 |
| Linux 發行版 | Ubuntu 20.04 及更舊版本尚未評估 |
來源
皆於 2026 年 10 月 27 日確認。
- JPCERT/CC,Brotli 越界寫入漏洞(CVE-2026-111497)警示(JPCERT-AT-2026-0034,2026 年 10 月 26 日,日文)— jpcert.or.jp
- PHP,「Updated PHP Windows builds for Brotli security fix」(2026 年 10 月 26 日)— php.net
- Google Brotli 版本 v1.2.1、v1.1.1、v1.0.10(2026 年 10 月 21 日)— v1.2.1 / v1.1.1 / v1.0.10
- Node.js,「Node.js Security Releases」(2026 年 10 月 21 日)— nodejs.org
- Microsoft,「Microsoft Security Advisory CVE-2026-111497 | .NET Brotli Decoder Out-of-bounds Write Vulnerability」(2026 年 10 月 25 日)— github.com/dotnet
- GitHub Advisory Database GHSA-9v8h-qqgm-4m35(PyPI brotli 與 brotlicffi)— github.com
- PyPI brotli 1.2.1 — pypi.org / brotlicffi 1.2.1.0 — pypi.org
- Bun,「Bundled brotli decoder has an out-of-bounds write」(GHSA-663w-cv8g-jj2p,2026 年 10 月 23 日)— github.com
- Envoy,「Out-of-Bounds Write in Brotli Decompressor」(GHSA-3wvj-j6qm-62mr,2026 年 10 月 23 日)— github.com
- NVD,「CVE-2026-111497」— nvd.nist.gov
- CISA,「Known Exploited Vulnerabilities Catalog」(10 月 26 日版本未收錄)— cisa.gov
- Ubuntu,「CVE-2026-111497」— ubuntu.com / Debian,「DLA-4855-1 brotli」— lists.debian.org
更新紀錄
2026-10-27:初版,依據 Google、Node.js、Microsoft、Bun、Envoy、PHP、PyPI、JPCERT/CC、NVD、CISA 的 KEV 目錄、Ubuntu 與 Debian 的公開資訊撰寫。
延伸閱讀
- 決定優先順序:決定先修補什麼:CVSS、EPSS 與 KEV
- 漏洞公告時:CVE 修補手冊
- 稽核相依套件:使用 OSV-Scanner 稽核相依套件
- 同一週的另一個嚴重修補:PHP 漏洞 CVE-2026-109618 與 CVE-2026-109619
- 同月的另一項 Python 相依套件更新:eMudhra 憑證:更新 pip、certifi 與 uv
- 名詞解釋:什麼是 RCE(遠端程式碼執行) / 什麼是 CVSS