髒牛提權復現CVE 2016 5195

2021-09-23 07:43:39 字數 1668 閱讀 1949

bindecy研究人員指出,2023年在linux系統中發現的「髒奶牛」漏洞(cve-2016-5195)並未得到完全修復。

不完整的「髒奶牛」修復補丁

「髒奶牛」漏洞源自linux核心中的記憶體子系統在處理私有唯讀記憶體對映的寫時拷貝(簡稱cow,即『奶牛』的由來)時,會因爭奪而引發破壞性結果。漏洞發現者菲爾·奧斯特(phil oester)意識到,黑客可以使用這個缺陷來獲得對其它唯讀儲存器對映的寫入訪問,從而增加它們在系統上的特權。

此項安全漏洞隨後還被發現會影響到android系統,甚至可能會脫離容器控制。而且在谷歌方面發布漏洞修復補丁後不久,攻擊者就設計出了新的、能夠利用android缺陷的髒奶牛攻擊手段。

2023年9月,研究人員們發現了利用該漏洞的最新惡意軟體家族。

bindecy方面指出,「髒奶牛」漏洞是目前公布的最具知名度的安全漏洞之一,且會對過去十年來包括android在內的一切linux版本造成影響,因此所對應的修復補丁一直受到高度關注。也正因為如此,在補丁發布的一年多之後,仍然鮮有人意識到其並不完整。

回顧「髒奶牛」漏洞

原本的安全漏洞會影響到get_user_page函式,其被用於獲取使用者程序內虛擬位址之後的物理頁。基本上,該bug允許攻擊者向唯讀許可權頁版本中寫入內容。

此項安全漏洞的修復補丁並不會降低所請求的許可權。相反,研究人員們解釋稱「get_user_page如今會記住我們通過了cow迴圈的事實。」

因此,在下一次迭代時,則唯讀頁僅在指定有foll_force 與foll_cow標記,且pte被標記為dirty的情況下方可接受寫入操作。

安全研究人員們指出,問題在於該補丁「設定某頁的唯讀高受限複製永遠不會被標記為dirty的pte所指定。」

透明巨大頁記憶體管理(thp)

bindecy研究人員發現,該安全漏洞目前仍會影響到透明巨大頁(transparent huge pages,簡稱thp,是一種linux記憶體管理系統,可以通過使用更大的記憶體頁來減少對帶有大量記憶體的機器translation lookaside buffer (tlb)的開銷。)與頁中目錄(簡稱pmd,屬於pte層上的一層)。

儘管linux通常會使用4096位元組長度的頁,但thp的長度往往可以達到2 mb——不過後者會經過拆分以保持正常頁長度。一般來講,預設thp支援僅被用於匿名對映,並可以在系統執行時進行開啟或關閉。

thp的實現源自啟用pmd中的_page_ps bit,如此一來pmd中的結果將會指向乙個2 mb的物理頁,而非pte目錄。研究人員們發現,髒奶牛補丁**實際上處理的是包含有can_follow_write_pmd函式的thp,而其基本邏輯類似於指向巨大pmd的can_follow_write_pte。

但根據研究人員們的說法,對於巨大pmd,問題在於「未通過cow迴圈的頁同樣可以利用touch_pmd函式被標記為dirty。」每當get_user_page嘗試獲取乙個巨大頁,該頁中的一條被呼叫函式結果就會被標記為dirty,而無需真正通過cow迴圈。因此,can_follow_write_pmd的邏輯將無法成立。

bindecy研究人員指出,「在這種情況下,攻擊者能夠輕鬆利用這項bug——可以使用與原本髒奶牛攻擊類似的手段。這一次,在迴避目標頁的複製版本後,需要對原始頁進行兩次處理——第一次使其存在,第二次啟動其dirty bit。」

poc

髒牛提權漏洞復現(CVE 2016 5159)

linux kernel 2.6.22 2007年發行,到2016年10月18日前所有發行版本 普通許可權使用者執行編譯後的exp直接提權成root使用者 get user page核心函式在處理copy on write 以下使用cow表示 的過程中,產出競態條件造成cow過程被破壞,導致出現寫資...

(CVE 2016 5195)髒牛本地提權

簡要分析 該漏洞具體為,get user page核心函式在處理copy on write 以下使用cow表示 的過程中,可能產出競態條件造成cow過程被破壞,導致出現寫資料到程序位址空間內唯讀記憶體區域的機會。修改su或者passwd程式就可以達到root的目的。具體分析請檢視官方分析。測試工具 ...

sudo提權復現(CVE 2019 14187)

2019年10月14日,cve官方發布了cve 2019 14287的漏洞預警。其中包含sudo root許可權繞過漏洞 cve 2019 14287 的補丁修復。通過特定payload,使用者可提公升至root許可權。利用前提 sudo v 1.8.28 知道當前使用者的密碼 當前使用者存在於su...