觀點 · 資訊分享

Cloudflare 為 Brotli 漏洞緊急上架 WAF 規則:預設只記錄不攔截,上線前先檢查你的覆寫設定

Brotli 壓縮函式庫爆出 CVE-2026-111497 後,Cloudflare 在 10 月 25 日為 Managed Ruleset 緊急加了兩條規則,預設只記錄、不攔截。如果你曾把整組規則改成封鎖,新規則上線就會直接擋下符合的請求。

發布
2026-10-25
篇幅
約 5 分鐘 · 2,295 字
結構
7 節 + 4 題常見問題
標籤
#Cloudflare#WAF#Brotli#CVE-2026-111497#Next.js
Cloudflare 為 Brotli 漏洞緊急上架 WAF 規則:預設只記錄不攔截,上線前先檢查你的覆寫設定

一句話看懂:Brotli 壓縮函式庫爆出嚴重漏洞(CVE-2026-111497),Cloudflare 在 10 月 25 日緊急為 WAF 加了兩條規則,預設只記錄、不攔截;真正的解法還是更新 Brotli 與 Node.js。

Cloudflare 緊急新增 Brotli 規則資訊圖卡:WAF 新增 2 條 Brotli 漏洞規則,預設只記錄不攔截

先用白話講:Brotli 與 WAF 是什麼?

Brotli 是一種壓縮演算法,就像把行李用真空袋壓小再寄出,到了目的地再拆開。很多網站用它壓縮網頁資料,瀏覽器和伺服器都支援。

問題出在「拆開」的那一步。如果有人刻意把真空袋做壞,拆袋的程式一不小心,就會把東西塞到不該放的地方,破壞自己的記憶體。這種錯誤叫緩衝區溢位,嚴重時可以讓攻擊者執行自己的程式。

WAF(網站應用程式防火牆)則像大門口的檢查哨,Cloudflare 會依規則檢查進來的請求。

發生什麼事

日期 事件
10 月 21 日 Google 釋出 Brotli 1.0.10、1.1.1、1.2.1 修正;Node.js 同日釋出安全版本 26.12.1、24.22.1、22.23.4
10 月 22 日 NVD 公開 CVE-2026-111497,Google 給的 CVSS 4.0 分數是 9.2
10 月 25 日 Cloudflare 緊急為 Managed Ruleset 新增兩條規則

依 CVE 記錄,Brotli 1.0.3 到 1.2.0 的解碼器有緩衝區溢位:遠端、不需登入的攻擊者,用特製的壓縮資料可能破壞記憶體、洩漏記憶體內容、造成服務中斷,甚至執行程式。Node.js 的公告說明,它內建的 Brotli 解碼器把無效的區塊切換誤判成「還需要更多資料」,於是一直把資料塞進只有 8 位元組的內部緩衝區;應用程式用 node:zlib 解壓縮攻擊者提供的 Brotli 資料時就會受影響,Node.js 把它評為 high,影響 26.x、24.x、22.x。

Cloudflare 新增的兩條規則

規則 比對什麼 預設動作
Brotli - Request Content-Encoding 請求標頭 Content-Encoding: br,也就是請求本文是 Brotli 壓縮 Log
Next.js - Image Optimizer Path 請求網址 /_next/image Log
  • Brotli 規則不比對 Accept-Encoding: br,也不影響 Cloudflare 的 Brotli 回應壓縮設定
  • 兩條規則都可能比對到合法流量:有些合法的客戶端會送 Brotli 壓縮的請求本文,/_next/image 則是 Next.js 正常的圖片最佳化路徑
  • Log 模式只提供可見度,不會阻擋;你可以在分析資料裡查看符合的請求,再決定要不要改成封鎖
  • 官方提醒:把 Next.js 規則改成 Block,可能讓最佳化後的圖片載不出來

公告沒有說明為什麼特別針對 /_next/image,也沒有列出免費方案規則集的變更,這次只列了 Cloudflare Managed Ruleset。

給開發者的技術細節

  1. 先查覆寫設定:如果你曾設定整組規則(ruleset 層級)的動作覆寫為 Block,這兩條新規則會被覆寫成封鎖,上線後可能立刻攔截請求,造成誤擋。官方建議針對這兩條規則做個別覆寫,先設成 Log,觀察符合的請求之後再決定是否改成 Block
  2. 更新軟體:Brotli 函式庫升到 1.0.10、1.1.1 或 1.2.1;Node.js 升到 26.12.1、24.22.1 或 22.23.4 以上。還有哪些軟體內含 Brotli,要用你自己的相依套件清單確認
  3. 把規則當緩衝:Log 模式不是修補,真正的保護來自更新

我的看法

這次 Cloudflare 的做法我覺得很務實:預設只記錄,不直接擋。因為 Brotli 請求本文和 /_next/image 本來就有合法用途,如果一律封鎖,很容易誤傷正常使用者。

但這也帶來一個容易被忽略的陷阱:以前為了省事,把整組託管規則一次調成 Block 的人,這兩條新規則會直接跟著變成封鎖。上線前花五分鐘看一下自己的覆寫設定,比事後查「為什麼圖片壞掉」輕鬆得多。另外,用 Nuxt、Next.js 這類 Node 框架的人要記得:WAF 擋在前面不代表後面可以不更新,Node.js 與基礎映像的更新才是根本的解法。

名詞小辭典

  • Brotli:Google 開發的壓縮演算法,常用於網頁資料傳輸,瀏覽器請求標頭裡的 br 就是指它。
  • WAF:網站應用程式防火牆,依規則檢查進來的請求,符合就記錄或阻擋。
  • 緩衝區溢位:程式把資料寫到超出預留空間的地方,輕則當機,重則被攻擊者利用來執行程式。
  • 規則覆寫(Override):自己改掉某條規則或整組規則的預設動作,例如把 Log 改成 Block。

資料來源

常見問題

Brotli 是什麼?
一種壓縮演算法,網站常用它把網頁資料壓小再傳送,瀏覽器收到後再解開。這次的漏洞出在解壓縮的程式,遇到刻意做壞的壓縮資料,可能讓程式的記憶體被破壞。
WAF 的 Log 模式會擋掉攻擊嗎?
不會。Log 只是記錄符合規則的請求,讓你在分析資料裡看到有多少流量符合,並不會阻擋。官方明說,這是為了讓你先評估影響,再決定要不要改成封鎖。
為什麼要檢查「覆寫」設定?
如果你曾把整組規則的動作統一覆寫為 Block,新規則即使預設是 Log,也會被這個覆寫改成封鎖,上線後可能立刻攔截請求,包含合法流量。建議針對這兩條規則個別覆寫成 Log,確認沒有誤擋再決定。
有了這兩條規則,還需要更新 Brotli 或 Node.js 嗎?
需要。Log 模式只提供可見度,不是修補。Brotli 官方已釋出 1.0.10、1.1.1、1.2.1,Node.js 也在 10 月 21 日釋出 26.12.1、24.22.1、22.23.4,建議直接更新。
LINE