Linux Kernel 5.13 引入核心轉儲漏洞的重大安全修復

BigGo 編輯部
Linux Kernel 5.13 引入核心轉儲漏洞的重大安全修復

Linux 核心社群正在解決長期存在的核心轉儲處理安全漏洞,這些漏洞已經困擾系統多年。隨著即將釋出的 5.13 核心版本,社群正在實施重大變更來修復這些關鍵安全缺陷,這些缺陷影響了系統處理非特權程序核心轉儲的方式。

核心轉儲是程式崩潰時其記憶體和狀態的快照,幫助開發者除錯問題。然而,當前的實現方式產生了嚴重的安全風險,攻擊者可以利用這些風險在系統上獲得提升的許可權。

全域性設定產生安全風險

Linux 當前核心轉儲系統最大的問題之一是其全域性性質。核心轉儲處理器在根名稱空間中以完整的 root 許可權執行,使其只能被系統管理員訪問。這種設計缺陷意味著當程式崩潰時,核心轉儲程序可能被攻擊者利用來獲得系統級訪問許可權。

社群長期以來一直認識到這個根本性的設計問題。開發者已經提出了諸如名稱空間隔離或將核心轉儲處理委託給特定程序等解決方案,但之前實施這些修復的嘗試從未進入主核心。

核心轉儲安全漏洞:

  • 全域性核心轉儲設定僅限 root 使用者訪問
  • 核心轉儲處理程式在 root 名稱空間中以完整許可權執行
  • 攻擊者可以攔截核心轉儲套接字和程序
  • Set-uid-root 程式透過核心轉儲建立許可權提升機會
  • 崩潰處理過程中存在檢查時間與使用時間漏洞

透過核心轉儲進行許可權提升

當處理以提升許可權執行的程式時,安全漏洞變得特別危險。當此類程式崩潰並生成核心轉儲時,攻擊者可能會攔截或操縱核心轉儲程序以維持這些提升的許可權。這為許可權提升攻擊創造了路徑,可能危及整個系統。

核心當前在根名稱空間中以完整許可權執行核心轉儲處理器作為使用者模式助手的方法使這些攻擊成為可能。攻擊者可以利用崩潰發生和核心轉儲處理器保護程序之間的時間視窗。

新的基於名稱空間的安全模型

即將推出的修復引入了基於名稱空間的核心轉儲處理方法。新系統不再在根名稱空間中以完整許可權執行所有核心轉儲操作,而是確保核心轉儲處理器在與崩潰程序相同的名稱空間內操作。這種隔離方法顯著減少了攻擊面。

這些變更包括對核心如何跟蹤程序所有權和名稱空間憑據的修改。透過確保核心轉儲處理器繼承適當的名稱空間上下文,系統可以防止攻擊者使用核心轉儲來逃脫其預期的安全邊界。

Linux Kernel 5.13 中的關鍵安全變更:

  • 核心轉儲處理程式現在在崩潰程序的名稱空間內執行,而不是在根名稱空間中執行
  • 新的 prctl 設定允許程序選擇隨機化核心轉儲
  • 名稱空間憑據跟蹤可防止許可權提升攻擊
  • 使用者模式核心轉儲處理程式預設情況下不再以完整的 root 許可權執行

社群討論實施細節

社群中的技術討論集中在保護核心轉儲處理的替代方法上。一些開發者質疑為什麼核心轉儲處理器不作為具有有限許可權的專用使用者執行,而不是作為 root 程序執行。

「你可以想象一個設定此使用者 UID 的 API,核心可以輕鬆地以該使用者身份執行核心轉儲處理器,但核心無法如此輕鬆地自動建立複雜的名稱空間來包含該程序。」

其他人建議,將核心檔案傳遞給容器的複雜性可能不值得承擔相關的安全風險,特別是因為大多數崩潰報告基礎設施都在更高層級執行。

實施挑戰很大,因為設定適當的名稱空間隔離需要複雜的核心操作,這些操作必須在任何可能被利用的程式碼執行之前發生。這種時間約束使得基於使用者的許可權降級等簡單解決方案無法提供完整的安全性。

對系統管理的影響

這些安全改進將改變系統管理員管理核心轉儲收集和分析的方式。雖然這些變更使系統更加安全,但它們也可能影響依賴當前核心轉儲行為的現有工具和工作流程。

這些修復代表了多年的安全研究和開發工作,解決了在 Linux 系統中存在很長時間的漏洞。系統管理員和安全團隊應該為這些變更做好準備,因為它們將隨著核心 5.13 和後續版本推出。

社群的反應總體上是積極的,許多人認識到這些期待已久的安全改進是必要的,儘管它們很複雜。這些變更展示了現代容器和名稱空間技術如何被應用於解決傳統的 Unix 安全問題。

參考:Slowing the flow of core-dump-related CVIs