安全研究員 阿西姆·馬尼扎達 披露了一個漏洞 CIFSwitch - 核心包中的本地權限提升 Linux 以及客製化包裝 cifs 實用程序該問題影響處理路徑 CIFS/SMB Kerberos/SPNEGO 上行調用也就是說,核心 CIFS 用戶端在掛載 SMB 共用時,透過該機制向使用者輔助程式請求 Kerberos 驗證資料。該描述是在 linux-distros 的禁令解除後發布的;發佈時尚未分配 CVE 標識符。
這種脆弱性的本質在於:非特權使用者可以呼叫 `request_key("cifs.spnego", …)` 並傳遞一個偽造的金鑰描述。通常情況下,這樣的字串應該由核心的 CIFS 用戶端自行產生:它包含伺服器資訊、UID、憑證 UID、PID、上行呼叫目標以及其他參數。然而,核心並未驗證該描述是否真的來自 CIFS 子系統,而透過標準請求金鑰規則以 root 使用者身分執行的 `cifs.upcall` 卻將這些欄位視為核心產生的資料。
這種漏洞並非普遍存在。 任何孔 Linux 「開箱即用」。要利用此漏洞,必須滿足幾個條件:存在易受攻擊的核心、安裝了帶有 cifs.spnego 規則的 cifs-utils、非特權用戶能夠創建用戶/掛載命名空間,以及 SE 沒有進行阻止。LinuxAppArmor 或其他 LSM 策略。 oss-security 的一份報告特別指出,在存在漏洞的系統中,這允許非特權本機使用者以 root 身分執行程式碼。
從技術上講 這條鏈條就是圍繞著這一點建立起來的。已知 cifs.upcall 可以遍歷偽造描述中指定的命名空間,並在權限完全重置之前執行 NSS 請求。因此,攻擊者控制的環境可以影響 root 程序對 NSS 模組的載入。公開的描述強調,這是一個核心空間與使用者空間邊界處的邏輯錯誤,而非傳統的記憶體損壞漏洞。
核心修復方案其實很簡單:增加了一項針對 cifs.spnego 金鑰類型的檢查,該檢查會拒絕非 CIFS 用戶端本身使用其私有 spnego_cred 所建立的描述。這種方法無需對 cifs-utils 進行同步變更即可解決此類攻擊,但作者指出,仍需要加強使用者空間的安全防護。
AlmaLinux 已報告所有受支援的版本都包含基本邏輯。 AlmaLinux和 AlmaLinux 如果安裝了 cifs-utils,則核心版本 8、9、10 和 Kitten 10 會受到影響。已在測試倉庫中準備好了打過補丁的核心: AlmaLinux 9 指定核心版本為 5.14.0-687.5.4.el9_8 或更高版本。 AlmaLinux 10 — kernel-6.12.0-211.7.4.el10_2 或更高版本。
在安裝已修補核心之前,我們建議採取以下臨時解決方案:如果系統未使用 SMB/CIFS 用戶端,則移除 cifs-utils;停用 cifs 模組;覆蓋 request-key 中的 cifs.spnego 規則;或停用非特權使用者命名空間。這些臨時解決方案可能會破壞 CIFS 掛載的 Kerberos 驗證,因此在實際使用 Kerberos 驗證的 SMB 共用的伺服器上應謹慎使用。
CIFSwitch 的有趣之處還在於其檢測上下文:作者將其描述為使用 LLM 和安全性物件之間關係的圖表示來搜尋多步驟鏈的結果。但對管理員而言,其實際意義卻相當平凡:檢查 cifs-utils 是否存在、用戶命名空間的狀態以及內核更新情況,尤其是在具有本地用戶或具有高級命名空間功能的容器腳本的系統上。
來源: linux.org.ru
