[綜合]cloudflare大爆炸 [10篇回應] 評分:0, 年:0, 月:0, 週:0, 日:0, [+1 / -1] 最後更新:2025-11-19 22:51:19

2025 年 11 月 18 日 11:20 UTC(本部落格中所有時間均為格林威治時間),Cloudflare 的網路開始出現嚴重故障,無法傳遞核心網路流量。這會向嘗試存取我們客戶網站的網際網路使用者顯示為錯誤頁面,指示 Cloudflare 網路內部發生故障。
發生該問題,並非由任何類型的網路攻擊或者惡意活動直接或間接導致。而是由於我們其中一個資料庫系統的權限變更所觸發,該變更導致資料庫將多個項目輸出至我們的 Bot Management 系統使用的「特徵檔案」中。該特徵檔案的大小隨之增加了一倍。然後,大小超出預期的特徵檔案被傳播至構成我們網路的所有機器。
在這些機器上執行的軟體會讀取此特徵檔案,以在我們的網路中路由流量,並讓我們的 Bot Management 系統能夠隨著不斷變化的威脅而保持最新狀態。軟體對特徵檔案的大小有低於其兩倍的限制。這會導致軟體發生故障。
最初,我們錯誤地懷疑看到的狀況是由超大規模 DDoS 攻擊引起,在此之後,我們正確地識別出核心問題,並能阻止大小超出預期的特徵檔案傳播,以及將其取代為早期版本。截至下午 14:30,核心流量大致已恢復正常。在接下來的幾小時內,隨著流量恢復上線,我們努力緩解對網路各部分造成的負載增加。截至 17:06,Cloudflare 的所有系統皆運作正常。
故障對我們的客戶和整個網際網路造成影響,我們對此深感抱歉。鑑於 Cloudflare 在網際網路生態系統中的重要性,我們的任何系統出現任何中斷都不可接受。我們的網路曾有一段時間無法路由流量,這讓團隊的每個成員都感到非常痛苦。我們知道今天讓您失望了。
其中一個模組 Bot Management 是造成今天服務中斷的原因。
除其他系統外,Cloudflare 的 Bot Management 還包括一個機器學習模型,我們可以使用該模型為每個通過我們網路的請求產生機器人分數。我們的客戶使用機器人分數來控制允許哪些機器人存取其網站,或不允許存取。
該模型將「特徵」組態檔案作為輸入。在這種情況下,特徵是指機器學習模型用於預測請求是否為自動化請求的個別特徵。特徵組態檔案是個別特徵的集合。
此特徵檔案每隔幾分鐘會重新整理,並發布至我們的整個網路,以便我們對網際網路流量變化做出回應。這讓我們能夠對新型機器人和新的機器人攻擊做出回應。因此,隨著惡意執行者快速變更手段,頻繁且快速地推出更新至關重要。
由於底層 ClickHouse 查詢行為發生變更(如下所述),產生此檔案導致其具有大量重複的「特徵」列。這樣一來,變更了先前固定大小的特徵組態檔案大小,導致機器人模組觸發錯誤。
遺憾的是,Bot Management 特徵檔案產生邏輯所執行的查詢類型,正是為了建構本節開頭提及檔案的每個輸入「特徵」。
然而,作為授予使用者額外權限的一部分,回應現在包含 r0 結構描述的所有中繼資料,實際上使回應中的列數增加了一倍以上,最終影響了最終檔案輸入中的列數(即特徵)。
在我們的代理服務上執行的每個模組都有許多限制,目的是為了避免無限制的記憶體取用,以及為了最佳化效能而預先分配記憶體。在此特定情況下,Bot Management 系統在執行階段可以使用的機器學習特徵數有限制。目前該限制設定為 200,遠高於我們目前使用的大約 60 項特徵。同樣,之所以存在限制,是因為出於效能原因,我們為特徵預先配置了記憶體。
當具有超過 200 項特徵的不良檔案傳播到我們的伺服器時,便會達到此限制,導致系統發生異常。進行檢查的 Rust 程式碼是未處理錯誤的來源,如(附圖)所示
這導致出現以下緊急情況,進而導致 5xx 錯誤。
thread fl2_worker_thread panicked: called Result::unwrap() on an Err value
今天是 Cloudflare 自 2019 年以來最嚴重的服務中斷。我們曾遇到過導致儀表板無法使用的服務中斷。一些服務中斷導致較新特徵在一段時間內無法使用。但在過去六年多的時間裡,我們沒有再發生過導致大部分核心流量停止流經我們網路的服務中斷。
今天這樣的服務中斷不可接受。我們已將系統架構設計為具備高度的失敗復原能力,以確保流量持續不間斷。過去,當我們遇到服務中斷時,總是會促使我們構建新的、更具復原能力的系統。
我謹代表 Cloudflare 全體團隊,對於今日網際網路故障帶來的困擾,致上誠摯的歉意。
https://blog.cloudflare.com/zh-tw/18-november-2025-outage/