Linux 5.4 內核收到了限制 root 訪問內核內部的補丁

萊納斯·托瓦爾茲 普里尼亞爾 即將發布的 Linux 5.4 核心中包含一組補丁”鎖定«, 建議的 David Howells(紅帽)和 Matthew Garrett(馬修·加勒特,在 Google 工作)來限制 root 使用者對核心的存取。 與鎖定相關的功能包含在選用載入的 LSM 模組中(Linux安全模組),這在 UID 0 和核心之間設置了屏障,限制了某些低階功能。

如果攻擊者以 root 權限實現程式碼執行,他可以在核心層級執行程式碼,例如使用 kexec 取代核心或透過 /dev/kmem 讀寫記憶體。 此類活動最明顯的後果可能是 旁路 UEFI 安全啟動或檢索儲存在核心層級的敏感資料。

最初,root限制功能是在加強驗證啟動保護的背景下開發的,並且發行版已經使用第三方補丁來阻止繞過UEFI安全啟動相當長一段時間了。 同時,由於以下原因,此類限制並未包含在內核的主要構成中: 分歧 他們的實施以及對現有系統破壞的擔憂。 「鎖定」模組吸收了發行版中已使用的補丁,並以不與 UEFI 安全啟動綁定的單獨子系統的形式重新設計。

鎖定模式限制對/dev/mem、/dev/kmem、/dev/port、/proc/kcore、debugfs、kprobes 偵錯模式、mmiotrace、tracefs、BPF、PCMCIA CIS(卡片資訊結構)、某些ACPI 介面和CPU的存取MSR 暫存器、kexec_file 和 kexec_load 呼叫被阻止、睡眠模式被禁止、PCI 裝置的 DMA 使用受到限制、ACPI 程式碼從 EFI 變數匯入被禁止、
不允許對 I/O 連接埠進行操作,包括更改序列埠的中斷號碼和 I/O 連接埠。

預設情況下,鎖定模組是不活動的,它是在 kconfig 中指定 SECURITY_LOCKDOWN_LSM 選項時建構的,並透過核心參數「lockdown=」、控製檔案「/sys/kernel/security/lockdown」或彙編選項啟動 LOCK_DOWN_KERNEL_FORCE_*,可以取值「完整性」和「機密性」。 在第一種情況下,允許從用戶空間對正在運行的核心進行更改的功能被阻止,而在第二種情況下,可用於從核心提取敏感資訊的功能也被停用。

值得注意的是,鎖定僅限制對核心的標準訪問,但不能防止因利用漏洞而進行的修改。 當 Openwall 專案使用漏洞時阻止對正在運行的核心進行更改 發展 獨立模組 力克瑞格 (Linux 核心運行時防護)。

來源: opennet.ru

添加評論