為什麼提升核心的安全性很重要

默白發表於2015-11-23

最近《華盛頓郵報》刊文稱,安全社群與 Linux 核心開發者之間的關係正處於緊張階段。這種遭強烈的行為被稱為 FUD(恐懼、疑惑、懷疑,即心理恐怖戰術), Rob Graham 宣稱目前無人攻擊系統核心。

不幸的是,事實證明他的言論是完全錯誤的,這並不是 FUD 行為,目前Linux核心的安全狀況還遠遠沒有達到它應該達到的狀態。

舉個例子,最新版本的Android系統使用SELinux來限制應用程式的執行。這令你即使擁有一個在Android上可被完全控制的應用程式,SELinux規則也能使你很難做成任何事,尤其是使用者控制。有家違反 GPL 協議的義大利公司 Hacking Team ,在銷售一款可以侵犯使用者隱私的監控軟體,但他們發現這種核心阻礙了他們將間諜軟體傳輸到目標裝置。所以他們利用許多 Android 裝置核心的 copy-from-user() 缺陷,從而實現允許他們複製任意一個使用者空間的資料及其核心程式碼的行為,因此他們也能做到禁用SELinux。

如果我們可以信任使用者空間的應用程式,我們是不需要SELinux的。但我們假定使用者空間的程式碼是不成熟的,配置是錯誤的或者是完全懷有敵意的,我們就要使用例如SELinux或AppArmor等技術來限制其行為。只是有很多使用者空間的程式碼對我們都保證是無害的,我們盡力阻止的只是它可能出現的對我們造成侵害的部分。

這在核心中顯然是不正確的。這種模型目前為止在很大程度上已經是“當我們找到他們時方能修復安全漏洞”,這種方法的失敗體現在兩個層面上:

(1)當我們找到並修復它們,但在被修復版本可以使用,到它真正被部署,這中間是有一個空窗期的。

(2)儘管動用了尖端的力量,也可能無法在第一時間發現它們。

這種反應方式是針對某個世界,一個無需先進行公測就可以進行軟體更新的世界,那個世界中有以尋找核心漏洞為樂趣的好人。然而,我們並不生活在那個世界,這種方法也並不可行。

正如SELinux等功能可以使我們減少可能遭受的侵害一樣,如果一個新的使用者空間安全隱患被發現,攻擊者將核心錯誤變成一個可利用的漏洞,我們可以將修復功能新增至核心,使攻擊變得困難(或不可能)。如今使用Linux系統的人數越來越多,許多使用者依賴這些系統在各個關鍵方面的安全效能,那麼盡我們所能不辜負他們的信任是至關重要的。

許多有用的緩解功能已經存在於Grsecurity patchset中,但技術分歧出現在某些特性的結合,而個性衝突和明顯缺乏熱情的上游核心開發人員導致它幾乎沒有被應用於大多數人所使用的核心中。Kees Cook提出了一個新的想法,開始更加齊心協力的將Grsecurity元件遷移到上游。如果你依賴於核心安全元件,因基於它而執行程式或者說因為你自己本身就使用它,那你應盡你所能去支援這一想法。

因為安全平臺的漏洞,微軟受到了無可非議的批評。他們迴應稱,已經跨作業系統引入了先進的安全功能,包括核心部分。任何一個指責說我們需要做同樣的 FUD 傳播的人,他們都要冒著自由軟體被邊緣化為專有軟體的風險,來提供更多實際性的安全功能。那並不是個好結果。

相關文章