LKRG:用於執行時完整性檢查的可載入核心模組

Catalin Cimpanu發表於2018-03-18

開源社群的人們正在致力於一個 Linux 核心的新專案,它可以讓核心更安全。命名為 Linux 核心執行時防護Linux Kernel Runtime Guard(LKRG),它是一個在 Linux 核心執行執行時完整性檢查的可載入核心模組(LKM)。

它的用途是檢測對 Linux 核心的已知的或未知的安全漏洞利用企圖,以及去阻止這種攻擊企圖。

LKRG 也可以檢測正在執行的程序的提權行為,在漏洞利用程式碼執行之前殺掉這個執行程序。

這個專案開發始於 2011 年,首個版本已經發布

因為這個專案開發的較早,LKRG 的當前版本僅僅是透過核心訊息去報告違反核心完整性的行為,但是隨著這個專案的成熟,將會部署一個完整的漏洞利用緩減系統。

LKRG 的成員 Alexander Peslyak 解釋說,這個專案從 2011 年啟動,並且 LKRG 已經經歷了一個“重新開發"階段。

LKRG 的首個公開版本是 LKRG v0.0,它現在可以從 這個頁面 下載使用。這裡 是這個專案的維基,為支援這個專案,它也有一個 Patreon 頁面

雖然 LKRG 仍然是一個開源專案,LKRG 的維護者也計劃做一個 LKRG Pro 版本,這個版本將包含一個專用的 LKRG 發行版,它將支援對特定漏洞利用的檢測,比如,容器洩漏。開發團隊計劃從 LKRG Pro 基金中提取部分資金用於保證專案的剩餘工作。

LKRG 是一個核心模組而不是一個補丁。

一個類似的專案是附加核心監視器Additional Kernel Observer(AKO),但是 LKRG 與 AKO 是不一樣的,因為 LKRG 是一個核心載入模組而不是一個補丁。LKRG 開發團隊決定將它設計為一個核心模組是因為,在核心上打補丁對安全性、系統穩定性以及效能都有很直接的影響。

而以核心模組的方式提供,可以在每個系統上更容易部署 LKRG,而不必去修改核心的核心程式碼,修改核心的核心程式碼非常複雜並且很容易出錯。

LKRG 核心模組在目前主流的 Linux 發行版上都可以使用,比如,RHEL7、OpenVZ 7、Virtuozzo 7、以及 Ubuntu 16.04 到最新的主線版本。

它並非是一個完美的解決方案

LKRG 的建立者警告使用者,他們並不認為 LKRG 是一個完美的解決方案,它提供不了堅不可摧和 100% 的安全。他們說,LKRG 是 “設計為可旁通的”,並且僅僅提供了“多元化安全” 的一個方面。

雖然 LKRG 可以防禦許多已有的 Linux 核心漏洞利用,而且也有可能會防禦將來許多的(包括未知的)未特意設計去繞過 LKRG 的安全漏洞利用。它是設計為可旁通的(儘管有時候是以更復雜和/或低可利用為代價的)。因此,他們說 LKRG 透過多元化提供安全,就像執行一個不常見的作業系統核心一樣,也就不會有真實執行一個不常見的作業系統的可用性弊端。

LKRG 有點像基於 Windows 的防病毒軟體,它也是工作於核心級別去檢測漏洞利用和惡意軟體。但是,LKRG 團隊說,他們的產品比防病毒軟體以及其它終端安全軟體更加安全,因為它的基礎程式碼量比較小,所以在核心級別引入新 bug 和漏洞的可能性就更小。

執行當前版本的 LKRG 大約會帶來 6.5% 的效能損失

Peslyak 說 LKRG 是非常適用於 Linux 機器的,它在修補核心的安全漏洞後不需要重啟動機器。LKRG 允許使用者持續執行帶有安全措施的機器,直到在一個計劃的維護視窗中測試和部署關鍵的安全補丁為止。

經測試顯示,安裝 LKRG v0.0 後大約會產生 6.5% 效能影響,但是,Peslyak 說將在後續的開發中持續降低這種影響。

測試也顯示,LKRG 檢測到了 CVE-2014-9322 (BadIRET)、CVE-2017-5123 (waitid(2) missing access_ok)、以及 CVE-2017-6074 (use-after-free in DCCP protocol) 的漏洞利用企圖,但是沒有檢測到 CVE-2016-5195 (Dirty COW) 的漏洞利用企圖。開發團隊說,由於前面提到的“可旁通”的設計策略,LKRG 沒有檢測到 Dirty COW 提權攻擊。

在 Dirty COW 的測試案例中,由於 bug 機制的原因,使得 LKRG 發生了 “旁通”,並且這也是一種利用方法,它也是將來類似的以使用者空間為目標的繞過 LKRG 的一種方法。這樣的漏洞利用是否會是普通情況(不太可能!除非 LKRG 或者類似機制的軟體流行起來),以及對它的可用性的(負面的)影響是什麼?(對於那些直接目標是使用者空間的核心漏洞來說,這不太重要,也並不簡單)。


via: https://www.bleepingcomputer.com/news/linux/lkrg-linux-to-get-a-loadable-kernel-module-for-runtime-integrity-checking/

作者:Catalin Cimpanu 譯者:qhwdw 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

LKRG:用於執行時完整性檢查的可載入核心模組

相關文章