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

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