允許root訪問,另一個Linux核心缺陷浮出水面
Android、Debian和Ubuntu使用者仍然處於危險之中。
Linux核心中出現了嚴重快取失效的bug,這可能允許攻擊者在目標系統上獲得root許可權。
這是上週釋出的第二個Linux核心缺陷;最近還發現了一個本地特權升級問題。
這個缺陷( ofollow,noindex">CVE-2018-17182 )存在於核心版本3.16到4.18.8的Linux記憶體管理中,可以通過許多不同的方式加以利用,“甚至可以從相對強的沙箱環境中”,Google Project Zero的研究員Jann Horn說。
在Horn於9月18日負責任地 報告了上游核心樹的 問題後,Linux團隊在兩天內就修復了這個問題。Horn表示,與其他軟體供應商的修復時間相比,這個問題“異常快”。
壞訊息是 Debian穩定版 和 Ubuntu 16.04和18.04還沒有修補漏洞——Android使用者仍然處於危險之中。
“Android每個月只發布一次安全更新,”Horn本週在一篇關於這個漏洞的部落格文章中說。“因此,當一個安全關鍵的修復程式在一個上游穩定的核心中可用時,它仍然需要花費數週的時間才能真正對使用者可用——尤其是在安全影響沒有公開宣佈的情況下。”
缺陷
Horn解釋說,這個漏洞源於溢位問題。
當Linux核心查詢虛擬記憶體區域(VMA)以處理頁面錯誤時,有一條慢速路徑涉及爬行程式碼中的所有VMA,以便找到問題的正確解決方案。因為這是效率低下並且效能受到影響,所以編碼器內建快速跟蹤替代方案,可以在最近使用VMA時使用。
然而,這種快取方法帶來了自己的問題。
“當釋放VMA時,所有執行緒的VMA快取必須無效 - 否則,下一個VMA查詢將遵循懸空指標。但是,由於程序可以包含許多執行緒,因此只需遍歷所有執行緒的VMA快取就會出現效能問題,“Horn解釋道。
對此的修復涉及使用序列號標記執行緒以區分各種快速路徑路徑。但序列號只有32位寬,這意味著它們可能會溢位。作為版本3.16中的優化,溢位處理邏輯被新增到混合中,這引入了導致免費使用後(UAF)漏洞的缺陷,a.k.a。CVE-2018-17182。
UAF特別指的是在釋放後訪問記憶體的嘗試;不正確的UAF編碼(例如,允許程式在釋放後繼續使用指標)可能導致程式崩潰。同時,UAF漏洞是一類記憶體損壞錯誤,源於對程式的哪個部分負責釋放記憶體的混淆。在此漏洞的情況下,這為允許root訪問和執行任意程式碼的漏洞打開了大門。
使用者可以通過更新到上游穩定版本(4.18.9,4.14.71,4.9.128,4.4.157或3.16.58)使CVE-2018-17182成為非問題。
“通過將[VMA]序列號更改為64位來 修復錯誤 ,從而使溢位不可行並刪除溢位處理邏輯,”Horn說。
利用
Horn指出,對於未打補丁的系統,有多種方法可以利用漏洞攻擊目標。但是,根據Horn的說法,核心的配置會產生很大的影響 - 在這種情況下,成功利用在使用尚未配置以提高安全性的Linux核心的環境中變得更加微不足道。
例如,試圖利用核心錯誤的攻擊者可能會受益於多次重試攻擊而不會觸發系統重新啟動的能力。
“能夠讀取第一次嘗試產生的崩潰日誌的攻擊者甚至可以使用該資訊進行更復雜的第二次嘗試,”研究人員說。
Horn構建了一個 概念驗證 (PoC),用於專門攻擊Ubuntu 18.04(核心linux-image-4.15.0-34-generic,版本4.15.0-34.37),證明了這一點 - 它允許有足夠長時間訪問許可權的人 - 大約一個小時 - 獲得目標系統的root許可權。
他解釋說:“從根本上說,這個錯誤可以由任何程序觸發,這個程序可以執行足夠長的時間,以溢位引用計數器(如果MAP_FIXED可用,大約一個小時),並且能夠使用mmap()/munmap()(管理記憶體對映)和clone()(建立執行緒)。”
這似乎是增加安全性的明智之舉,但研究人員指出,它歸結為在可用性,可靠性和安全性之間進行權衡。
“系統所有者可能希望系統儘可能長時間地執行,即使系統部分崩潰,如果突然的核心恐慌會導致資料丟失或重要服務的停機,”他解釋說。
Linux公社的RSS地址 : https://www.linuxidc.com/rssFeed.aspx
本文永久更新連結地址: https://www.linuxidc.com/Linux/2018-09/154493.htm