這是一個關於 Linux 核心 XFS 檔案系統漏洞(CVE-2026-64600)的技術分析。這個漏洞被命名為 RefluXFS,最令人不安的地方在於它在核心程式碼中潛伏了將近九年,且能讓一個完全沒有權限的本地使用者,直接將權限提升至系統最高權限 Root。
對於初入行的工程師來說,理解這個漏洞的核心在於理解檔案系統如何處理資料的寫入,以及所謂的競態條件(Race Condition)如何導致安全崩潰。
漏洞背景與影響範圍
RefluXFS 影響的是 Linux 核心中的 XFS 檔案系統。XFS 是一種高效能的日誌檔案系統,廣泛應用於企業級伺服器。該漏洞主要影響開啟了 reflink 功能的 XFS 檔案系統。
什麼是 reflink? reflink 是一種 Copy-on-Write(寫入時複製)機制。當你複製一個檔案時,系統不會立刻複製所有資料,而是讓兩個檔案指向同一塊實體磁碟區塊。只有當其中一個檔案被修改時,系統才會將該區塊複製一份新副本並寫入修改後的內容。這樣可以大幅節省磁碟空間並加快複製速度。
哪些系統有風險? 如果你的系統滿足以下三個條件,就處於危險之中: 執行 Linux 4.11 或更高版本且未安裝補丁。 XFS 檔案系統在建立時開啟了 reflink=1(許多現代發行版預設開啟)。 攻擊者可以在同一個 XFS 檔案系統中,讀取到目標檔案(如 /etc/passwd)並擁有一個可寫入的目錄。
具體受影響的發行版包括 RHEL 8/9/10 及其衍生版(CentOS Stream, Rocky Linux, AlmaLinux)、Fedora Server 31+ 以及 Amazon Linux 2023 等。
技術原理解析:失效的映射與鎖循環
這個漏洞在本質上是一個 Check-then-Use(檢查後使用)的錯誤,發生在核心處理鎖(Lock)的循環過程中。
攻擊過程如下: 首先,攻擊者使用 FICLONE 系統調用,將一個由 Root 擁有的目標檔案(例如 /etc/passwd)克隆成一個自己的臨時檔案。此時,兩個檔案共享相同的實體磁碟區塊。
接著,攻擊者對這個克隆檔案發起高頻率的 O_DIRECT 寫入。O_DIRECT 是一種直接 I/O 模式,它會跳過核心的 Page Cache(頁快取),直接操作磁碟。
關鍵的崩潰點發生在核心的鎖管理: 核心在持有 inode 鎖(ILOCK)的情況下讀取資料映射,隨後為了預留交易空間而短暫釋放鎖定。在此瞬間,另一個並行的寫入操作可能已經完成了 Copy-on-Write 流程,將克隆檔案重新映射到了新的磁碟區塊。
當第一個寫入操作重新獲取鎖定時,它並沒有重新驗證目前的映射是否仍然有效,而是繼續使用之前快取的舊映射地址。然而,這個舊地址現在只屬於原來的 Root 檔案。
結果就是,原本應該寫入到克隆檔案的資料,被錯誤地直接寫入了 Root 擁有的目標檔案。
為什麼這個漏洞極其危險? 繞過元數據檢查:因為寫入發生在區塊層(Block Layer),它完全繞過了目標檔案的 inode 檢查。這意味著檔案的權限、所有者、時間戳甚至 setuid 標記完全沒有改變,系統日誌也不會留下任何異常記錄。 持久化權限提升:攻擊者可以透過覆蓋 /etc/passwd 來移除 Root 密碼,或者修改 setuid-root 二進位檔,從而永久獲得 Root 權限。 現有防護失效:測試證明,SELinux、seccomp、容器邊界(Container boundaries)以及 KASLR 等記憶體保護機制都無法阻止此攻擊,因為這不是記憶體損壞,而是合法的區塊寫入被導向了錯誤的位置。
AI 在漏洞發現中的角色
值得關注的是,這個漏洞是由 Qualys 團隊利用 AI 模型(Claude Mythos Preview)發現的。研究人員指示 AI 尋找類似於著名漏洞 Dirty COW 的缺陷。AI 成功定位了競態條件,撰寫了漏洞利用程式(Exploit),甚至起草了安全公告。這顯示了 AI 在分析複雜核心程式碼與發現深層邏輯漏洞方面的強大能力。
實務建議與修復
對於系統管理員與工程師,請採取以下行動:
檢查風險:執行 xfs_info / grep reflink=。如果輸出 reflink=1,且系統處於受影響版本,請立即更新。
更新並重啟:安裝發行版提供的核心更新補丁。請注意,僅安裝套件是不夠的,必須重新啟動伺服器以載入新的核心映像檔。
目前沒有臨時的配置方案(如 mount 選項或 sysctl)可以關閉已建立檔案系統的 reflink 功能,因此更新核心是唯一的解決方案。
來源:thehackernews.com
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。