防禦邊緣:Cloudflare 如何緩解 Copy Fail Linux 漏洞

2026 年 4 月 29 日,一個被稱為 "Copy Fail" (CVE-2026-31431) 的嚴重本地權限提升漏洞被公開。對於任何大規模 Linux 基礎設施的營運商而言,這類漏洞都是一場高風險的競賽:公開披露與實際利用之間的時間差通常以小時來計算。

Cloudflare 對此事件的應對措施提供了一場深度防禦的典範教學,展示了自動化修補、行為檢測與精準的執行期緩解措施如何結合使用,即使在傳統更新週期過慢的情況下,也能中和威脅。

理解 "Copy Fail" 漏洞

要理解緩解措施,首先必須了解漏洞利用的機制。該漏洞存在於 Linux 核心的 AF_ALG socket 家族中,特別是在用於關聯數據驗證加密 (AEAD) 密碼學的 algif_aead 模組中。

漏洞利用機制

問題的核心在於越界寫入 (out-of-bounds write)。在 2017 年,引入了一項優化功能以允許 原地 (in-place) 密碼學操作,這會將目標與引用頁面鏈接在一起。然而,此設計缺乏足夠的邊界強制執行。

當使用者執行 recvmsg() 時,核心中的 authencesn 包裝器會在合法輸出區域之外進行 4 位元組的寫入。透過利用 splice() 系統調用,攻擊者可以將目標檔案(例如 setuid-root 二進位檔 /usr/bin/su)的頁面快取 (page cache) 鏈接到密碼學分散列表 (crypto scatterlist) 中。

這使得攻擊者能夠:

  1. 針對任何可讀檔案,透過填充其頁面快取。
  2. 控制寫入的偏移量,透過 assoclensplice 參數。
  3. 控制寫入的值,透過 sendmsg() 中的 AAD 位元組。

藉由將 shellcode 注入到 setuid 二進位檔的頁面快取中,攻擊者可以在下次呼叫該二進位檔時以 root 權限執行該程式碼,有效地繞過所有本地安全控制。

Cloudflare 的應對策略

Cloudflare 的應對措施以並行工作流為特徵,旨在最小化 "漏洞窗口" 的同時維持服務可用性。

行為檢測 vs. 特徵碼

Cloudflare 防禦中最顯著的面向之一是其現有的行為檢測系統。與依賴特徵碼(知道特定漏洞利用看起來像什麼)的傳統防毒軟體或 IDS 不同,Cloudflare 的系統會監控 異常的程序執行模式

在內部驗證期間,該系統在幾分鐘內就標記了 Copy Fail 漏洞利用。它將整個執行鏈——從腳本解釋器到密碼學子系統,再到權限提升二進位檔——聯繫起來,而無需進行任何規則變更或人工干預。這讓安全團隊能立即確信,在現實環境中進行的任何實際利用嘗試都會被即時檢測到。

威脅獵捕與鑑識

基於 "假設已被入侵" 的原則,Cloudflare 對披露前 48 小時內的整個集群規模的日誌進行了回溯性獵捕。他們搜尋了漏洞利用留下的獨特核心日誌跡象,並根據已知的良好套件清單驗證了系統二進位檔的完整性,以確保沒有建立任何持久性。

透過 bpf-lsm 進行精準緩解

雖然長期修復方案是核心補丁與重啟,但 Cloudflare 的基礎設施規模(超過 330 個城市)使得全球重啟週期非常耗時。團隊探索了兩條緩解路徑:

  1. 粗放式工具: 完全移除 algif_aead 模組。雖然有效,但這會冒險破壞依賴核心密碼學 API 的內部服務。
  2. 施展外科手術般的精準措施: 使用 bpf-lsm (BPF Linux Security Module)。

bpf-lsm 如何運作

Cloudflare 部署了一個 eBPF 程式到 socket_bind LSM 鉤子 (hook) 中。該程式並非採取全面禁止,而是實施了邏輯閘:

  • 如果 socket 家族不是 AF_ALG,則允許該調用。
  • 如果是 AF_ALG,則檢查呼叫二進位檔的路徑是否在已知合法服務的嚴格允許清單中。
  • 如果二進位檔不在允許清單中,則拒絕該 bind 請求。

部署流程

為了避免意外停機,Cloudflare 使用了兩階段部署:

  • 可視化階段: 他們使用 prometheus-ebpf-exporter 來追蹤整個集群中 AF_ALG 的使用情況。這確認了只有一個內部服務在合法地使用該 API。
  • 執行階段: 一旦允許清單被驗證,bpf-lsm 程式就會被推送以封鎖所有其他存取。

經驗教訓與未來強化

儘管緩解措施成功,但此次事件凸顯了幾個需要改進的領域。一個主要的教訓是 "LTS 滯後" 的危險性:Cloudflare 仍處於易受攻擊狀態,因為主線 (mainline) 修復程式尚未回移植 (backport) 到他們特定的 LTS 核心線路中。

為了防止類似問題,Cloudflare 已承諾:

  • 減少核心攻擊面: 審計核心配置,主動從構建中完全移除未使用的模組,而不是依賴執行期緩解措施。 。
  • 提高 API 可視性: 開發更好的映射機制,以了解哪些生產環境服務依賴於特定的核心 API,從而加速未來的緩解措施。
  • 提高 bpf-lsm 工具化程度: 增強其基於 eBPF 的緩解工具的部署速度與日誌記錄能力。

結論

對 Copy Fail 的應對展示了在現代基礎設施中,修補程式並非唯一的防禦線。透過結合強大的核心更新管道與 eBPF 的執行期緩解靈活性,以及行為檢測的方法,Cloudflare 能夠在不中斷服務或冒險客戶數據的情況下,確保其集群規模的安全性。正如社群成員在討論中所提到的,這強化了 LTS 核心的穩定性價值,但同時也凸顯了組織在 LTS 線路滯後於主線安全修復時,需要具備應對計畫的關鍵需求。

Sources