俄羅斯漏洞研究員兼利用開發者 Sergey Zelenyuk 公開了 VirtualBox中一個 0day 漏洞的詳情。另外他還提供了詳細的漏洞利用指南。
從最初披露的詳情來看,該 0day 漏洞存在於所有受支持操作系統上 VirtualBox 虛擬化軟件的一個共享代碼基中。
***者能通過利用該漏洞逃逸 guest 機器的虛擬環境併到達 Ring 3權限層,即以最小權限運行多數用戶程序代碼。
[yiji]從一個“溢出”到另一個[/yiji]
SergeyZelenyuk 發現這個 0day 漏洞可被用於以 NAT 模式配置 Intel PRO/1000 MT Desktop (82540 EM) 網絡適配器的虛擬機上,而這個默認設置允許 guest 系統訪問外部網絡。
Zelenyuk 週二發佈技術 write-up 稱,“Intel PRO/1000 MT Desktop (82540EM) 中存在一個漏洞,可允許 guest 中具有根/管理員權限的***者逃逸至一個主機 ring3。之後***者就能夠利用現有技術通過 /dev/vboxdrv 將權限提升至 ring 0。”
Zelenyuk 表示,讓漏洞其作用的一個重要步驟是理解上下文描述符在數據描述符之前處理。
研究人員詳細說明了該安全漏洞背後的機制,展示瞭如何觸發獲取可被濫用於逃避虛擬操作系統限制的緩衝溢出漏洞的必要條件。首先,他使用包描述符(即允許網絡適配器追蹤系統內存中網絡數據包數據的數據段)引發了一個整數反向溢位條件。隨後利用這一狀態從 guest 操作系統中將數據讀取到一個堆緩衝區並觸發可導致覆寫功能指針的溢出條件或引發棧溢出條件。
[yiji]百分之百可靠的 exp[/yiji]
Zelenyuk 所寫的利用依靠兩個溢出條件。由於它提供了 Ring 3 級別權限的訪問,因此控制主機操作系統需要提升權限。儘管這並非不可能實現,但***者必須鏈接其它漏洞才能提升在系統上的權限。
研究人員發佈的利用 VirtualBox 0day 漏洞的步驟絕對不是腳本小子們能應付的,而是需要具有更深的技術知識。
緩衝區溢出並非總是處於穩定狀態,多數時候會導致目標崩潰。然而,Zelenyuk 表示他的 exp “百分之百可靠”,而且“由於二進制匹配有誤或出於其它更微妙的原因,exp 不會出現一直起作用或永遠不起作用的情況。”
他在默認配置爲86位和64位的 Ubuntu 16.04 和 18.04 上已對漏洞進行了測試。
這並非該研究員首次在 VirtualBox 中發現漏洞。今年年初,他報告了存在於 VirtualBox 版本5.2.18中的漏洞。然而,出於某種原因,甲骨文在硬件虛擬化軟件版本 5.2.18 中靜默地修復了該漏洞,而且並未對該研究員提出任何致謝。
Zelenyuk 在報告中清楚地說明了自己在通知問題開發人員前公開這個 0day 漏洞完整詳情的原因。甲骨文此前的做法似乎是原因之一。
他這樣說道:
1. 等個半年時間,一直等到漏洞被修復,這被認爲是正常的做法。
2. 在漏洞獎勵領域,以下做法也被認爲是正常的:
(1) 等一個多月的時間以便驗證提交的漏洞以及做出採信還是不採信的決定。
(2) 隨意更改決定。今天你發現這個漏洞獎勵計劃將涵蓋某軟件中的 bug,一週後當你帶來 bug 和 exp,發現對方“不感興趣”了。
(3) 沒有明確的漏洞獎勵涵蓋軟件列表。這對於漏洞獎金而言很方便,但對於研究人員而言很尷尬。
(4) 沒有對漏洞的價格設置上限和下限。影響漏洞價格的因素雖然說很多,但研究人員需要知道哪些是值得研究的,哪些不是。
3. 對偉大的妄想和營銷廢話:對漏洞進行命名並且爲此專門設立網站;一年開上千次會議;誇大自己作爲安全研究人員的重要性;認爲自己是“救世主”。殿下,請走下神壇吧!
我已經對前兩點感到不勝其煩,因此我做出了完全披露的決定。信息安全圈子,請繼續前進。