俄羅斯安全研究人員公布了VirtualBox 0 day漏洞的詳情,并解釋了如何一步步的利用該bug。
該漏洞位于虛擬化軟件的共享代碼基中,在所有支持的操作系統中都存在。攻擊者利用該漏洞可以從guest機器的虛擬環境中逃逸出來,到達最小權限的Ring 3權限層,該層用于大多數的用戶程序運行代碼。
將一個溢出變成另一個
研究人員Sergey Zelenyuk發現該漏洞可以在Intel PRO/1000 MT Desktop (82540EM)網絡適配器上配置了NAT模式的虛擬機上被利用,默認設置允許guest系統訪問外部網絡。

Intel PRO/1000 MT Desktop (82540EM)存在漏洞,攻擊者可以在guset中以root/administrator權限逃逸到host ring3。然后攻擊者可以用已有的技術通過/dev/vborxdrv提升權限到ring 0,具體見技術writeup。
想要了解漏洞工作原理最重要的就是理解上下文描述器在數據描述器前是如何被處理的。下面是漏洞的詳細情況,即如何觸發必要的條件來獲取緩沖區溢出,以此跳出虛擬操作系統的限制:
· 首先,用packet descriptors來觸發整數下溢條件,數據分段允許網絡適配器記錄系統內存中的包數據。
· 然后,該狀態被用于從guest操作系統讀取數據到堆緩沖區中,引發溢出條件導致覆寫函數指針,或引發棧溢出條件。
100%可靠的利用
漏洞利用依賴兩個溢出條件。因為提供到Ring 3級的訪問權限,因此如果要控制整個主機操作系統必須進行權限提升。
雖然這是不可能的,但攻擊者同時利用了另一個漏洞,可以達到權限提升的目的。
緩沖區溢出一般來說并不穩定,大多數情況下會導致目標系統奔潰。但Zelenyuk稱他的漏洞利用是100%可靠的。他在Ubuntu 16.04和18.04,32位和64位操作系統上以默認配置進行了測試,測試結果表明漏洞利用可以運行在guest操作系統上,并在主機操作系統上執行shell,demo視頻。
研究人員Zelnyuk稱在通知開發者之前就選擇公布0 day漏洞的原因是Oracle過去修復漏洞的速度非常慢。
技術writeup參見:https://github.com/MorteNoir1/virtualbox_e1000_0day
|