日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

虚拟化漏洞

發(fā)布時間:2023/12/29 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 虚拟化漏洞 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

KVM虛擬化新型漏洞CVE-2015-6815技術(shù)分析

360MarvelTeam2015-09-1551132人圍觀,發(fā)現(xiàn)10個不明物體漏洞

云計算業(yè)務目前已經(jīng)觸及到多個行業(yè),無論是云存儲,云音樂等生活中隨處可見的業(yè)務,就連銀行金融,支付信息等服務也都和云緊密相關(guān)。

作為云服務的基礎,虛擬化系統(tǒng)扮演著非常重要的角色,因為在云生態(tài)中主機的硬件多是由虛擬化系統(tǒng)模擬出來的。虛擬化系統(tǒng)中的安全漏洞將嚴重影響云業(yè)務的安全。

360虛擬化安全團隊(MarvelTeam)近日發(fā)現(xiàn)了多個虛擬化軟件安全漏洞,使用kvm和xen作為虛擬化平臺的公司業(yè)務都將會受這批漏洞影響。該漏洞一旦被攻擊者惡意利用,可以造成三種類型的安全風險:

1)虛擬機宕機,影響業(yè)務; 2)系統(tǒng)資源被強制占用,宿主機及所有虛擬機拒絕服務; 3)虛擬機逃逸,攻擊者在宿主機中執(zhí)行任意代碼。

我們將陸續(xù)公開系列針對虛擬化軟件高危0day漏洞的分析文章,揭開宿主機攻擊技術(shù)的神秘面紗。本文將首先分析KVM虛擬化新型漏洞CVE-2015-6815。

在9月29日的ISC 2015大會上,360虛擬化安全團隊(MarvelTeam)安全研究員唐青昊,將進行《云虛擬化系統(tǒng)的漏洞挖掘技術(shù)》的議題演講,進一步分享漏洞挖掘的核心技術(shù)。

關(guān)于QEMU和KVM

QEMU是一款處理器模擬軟件,可以提供用戶模式模擬和系統(tǒng)模式模擬。當處于用戶模式模擬狀態(tài)時,將使用動態(tài)翻譯技術(shù),允許一個cpu構(gòu)建的進程在另一個cpu上執(zhí)行。系統(tǒng)模式模擬狀態(tài)下,允許對整個pc系統(tǒng)的處理器和所使用到的相關(guān)外圍設備進行模擬。

qemu提供的仿真外設包括硬件Video Graphics Array (VGA) 仿真器、PS/2 鼠標和鍵盤、集成開發(fā)環(huán)境(IDE)硬盤和 CD-ROM 接口,以及軟盤仿真。也包括對E2000 Peripheral Controller Interconnect (PCI) 網(wǎng)絡適配器、串行端口、大量的聲卡和 PCI Universal Host Controller Interface (UHCI) Universal Serial Bus (USB) 控制器(帶虛擬 USB 集線器)的仿真。除了仿真標準 PC 或 ISA PC(不帶 PCI 總線)外,QEMU 還可以仿真其他非 PC 硬件,如 ARM Versatile 基線板(使用 926E)和 Malta million instructions per second (MIPS) 板。對于各種其他平臺,包括 Power Macintosh G3 (Blue & White) 和 Sun-4u 平臺,都能正常工作。

圖1.qemu可進行模擬的外圍設備

KVM是一種依賴硬件虛擬化技術(shù)(Intel VT或者AMD V)的裸機虛擬化程序,它使用 Linux 內(nèi)核作為它的虛擬機管理程序。對 KVM 虛擬化的支持自 2.6.20 版開始已成為主流 Linux 內(nèi)核的默認部分。KVM支持的操作系統(tǒng)非常廣泛,包括Linux、BSD、Solaris、Windows、Haiku、ReactOS 和 AROS Research Operating System。

在 KVM 架構(gòu)中,虛擬機實現(xiàn)為常規(guī)的 Linux 進程,由標準 Linux 調(diào)度程序進行調(diào)度。事實上,每個虛擬 CPU 顯示為一個常規(guī)的 Linux 進程。這使 KVM 能夠享受 Linux 內(nèi)核的所有功能。設備模擬由提供了修改過的 qemu 版本來完成。

QEMU網(wǎng)卡設備簡介

QEMU支持多種網(wǎng)卡設備,可以通過如下的命令去列舉所支持的網(wǎng)卡設備類型,一共有8種,基本可以滿足大多數(shù)操作系統(tǒng)的需求。

圖2.qemu支持的虛擬網(wǎng)卡設備

此次漏洞出現(xiàn)在e1000網(wǎng)卡設備中,該網(wǎng)卡的基本功能等同于Intel rc82540EM硬件網(wǎng)卡,支持TSO技術(shù),網(wǎng)絡數(shù)據(jù)傳輸效率極高。

漏洞分析

CVE-2015-6815是qemu軟件的虛擬網(wǎng)卡設備存在的一處邏輯漏洞,攻擊者可通過構(gòu)造惡意的數(shù)據(jù)流觸發(fā)該漏洞。

我們分析網(wǎng)卡在處理惡意數(shù)據(jù)流時執(zhí)行的邏輯:

a)網(wǎng)卡驅(qū)動向網(wǎng)卡設備發(fā)送指令,通知網(wǎng)卡設備執(zhí)行數(shù)據(jù)發(fā)送操作; b)set_tctl(E1000State?*s,?int?index,?uint32_t?val)當網(wǎng)卡設備判斷已經(jīng)設置相關(guān)寄存器,即開始進行發(fā)包操作,進入set_tctl函數(shù)中進行相關(guān)處理,函數(shù)原型如下: c)?start_xmit(E1000State?*s) start_xmit函數(shù)首先檢查(s->reg[TCTL]&E1000_TCTL_EN),若等于0,表示沒開啟發(fā)送功能,將直接退出。否則判斷是否存在有效的描述符,有的話則依次取出描述符交給process_tx_desc處理。 d)存在漏洞的函數(shù)源碼如下:

圖3.存在漏洞的函數(shù)代碼

根據(jù)注釋,可以清晰地看到,該函數(shù)的主要目的是按照3種類型來處理網(wǎng)卡數(shù)據(jù)描述符表中的單個描述符,分別是context descriptor,data descriptor,legacy descriptor,這三種類型代表了不同的數(shù)據(jù)內(nèi)容:描述信息,數(shù)據(jù),遺留信息,網(wǎng)卡通過判斷處于何種類型,設置s->tx的狀態(tài)位,然后根據(jù)tp->tse 和 tp->cptst來確定是否要調(diào)用xmit_seg函數(shù)以及怎樣填充buf,由于函數(shù)對驅(qū)動傳進來描述符的內(nèi)容沒有檢測,可設置成任意值。

xmit_seg函數(shù)根據(jù)s->tx中各字段的信息來填充s->data,最后調(diào)用qemu_send_packet函數(shù)發(fā)送s->data,qemu_send_packet(nc, buf, size)。

在該函數(shù)的執(zhí)行過程中,攻擊者通過惡意的數(shù)據(jù)流,可以控制該函數(shù)中的tp->hdr_len和tp->mss數(shù)據(jù)的值,而 msh = tp->hdr_len + tp->mss。在進入do…while 循環(huán)之后,tp->size值為0,而bytes和msh的值可以控制,通過迫使代碼邏輯進入第一個if循環(huán),可將bytes設置為msh的值,即bytes也可以被控制。之后,bytes可以一直保持值不變,直至進入while的條件判斷語句,此時如果bytes為0,則do…while進入死循環(huán)的邏輯。

漏洞危害

攻擊者利用該漏洞可以導致虛擬機拒絕服務,并且保持對cpu的高占用率,繼而會影響宿主機以及其他虛擬機的正常執(zhí)行。

我們在測試環(huán)境中對該漏洞進行測試,觸發(fā)前后的截圖如下??梢钥吹?#xff0c;在漏洞觸發(fā)后宿主機的空閑cpu百分比一直鎖定為為0%。

圖4.觸發(fā)漏洞前

?

圖5.觸發(fā)漏洞后

漏洞修補方案

360虛擬化安全團隊(MarvelTeam)在發(fā)現(xiàn)了該漏洞之后,第一時間通知QEMU軟件官方團隊進行修復。官方在20天的緊張修復之后,在9月5日完成對該漏洞的修復補丁。詳細信息,該網(wǎng)頁也包含了360虛擬化安全團隊的致謝。

官方對該漏洞的修補方法如下:

圖6.官方提供的漏洞補丁

在該補丁中,開發(fā)人員加入了對漏洞關(guān)鍵數(shù)據(jù) – bytes樹值的判斷,如為0,則退出循環(huán),完美修復漏洞。建議所有使用qemu的廠商采用該補丁,防止攻擊者對在虛擬機中利用CVE-2015-6815漏洞。


360MarvelTeam虛擬化漏洞第二彈:CVE-2015-5279 漏洞分析

360MarvelTeam2015-09-2831561人圍觀,發(fā)現(xiàn)3個不明物體文章

云計算目前已成為一種被大多數(shù)互聯(lián)網(wǎng)公司接受的服務模式,它提供了定制化的硬件資源、應用以及服務。作為實現(xiàn)云計算構(gòu)想的最重要的技術(shù)基石,虛擬化系統(tǒng)提供了硬件資源的量化分配和靈活調(diào)度,保證云業(yè)務的順利實施。因此,云業(yè)務的健康發(fā)展,離不開虛擬化系統(tǒng)的穩(wěn)定運行。

360 Marvel Team將陸續(xù)公開一系列獨立發(fā)現(xiàn)的針對虛擬化軟件高危0day漏洞的分析文章,揭開虛擬化攻擊技術(shù)的神秘面紗。在9月29日的360 ISC 2015大會上,團隊安全研究員唐青昊,將進行關(guān)于《云虛擬化系統(tǒng)的漏洞挖掘技術(shù)》議題的演講,在該議題中將分享漏洞挖掘的核心技術(shù)。

本文為該系列的第二篇文章,將詳細分析CVE-2015-5279 qemu網(wǎng)卡堆溢出漏洞的相關(guān)知識。第一篇文章是針對CVE-2015-6815漏洞的分析。

一. 漏洞基礎知識

CVE-2015-5279是qemu虛擬化環(huán)境中rtl8029網(wǎng)卡設備存在一處堆溢出類型漏洞。那么什么是qemu軟件?qemu軟件和kvm虛擬化存在什么樣的關(guān)系?rtl8029網(wǎng)卡是怎樣的一款設備呢?下面將逐一解答這些問題。

QEMU是一款處理器模擬軟件,可以提供用戶模式模擬和系統(tǒng)模式模擬。當處于用戶模式模擬狀態(tài)時,將使用動態(tài)翻譯技術(shù),允許一個cpu構(gòu)建的進程在另一個cpu上執(zhí)行。系統(tǒng)模式模擬狀態(tài)下,允許對整個pc系統(tǒng)的處理器和所使用到的相關(guān)外圍設備進行模擬。

qemu提供的仿真外設包括硬件Video Graphics Array (VGA) 仿真器、PS/2 鼠標和鍵盤、集成開發(fā)環(huán)境(IDE)硬盤和 CD-ROM 接口,以及軟盤仿真。也包括對E2000 Peripheral Controller Interconnect (PCI) 網(wǎng)絡適配器、串行端口、大量的聲卡和 PCI Universal Host Controller Interface (UHCI) Universal Serial Bus (USB) 控制器(帶虛擬 USB 集線器)的仿真。除了仿真標準 PC 或 ISA PC(不帶 PCI 總線)外,QEMU 還可以仿真其他非 PC 硬件,如 ARM Versatile 基線板(使用 926E)和 Malta million instructions per second (MIPS) 板。對于各種其他平臺,包括 Power Macintosh G3 (Blue & White) 和 Sun-4u 平臺,都能正常工作。

圖1.qemu可進行模擬的外圍設備

KVM是一種依賴硬件虛擬化技術(shù)(Intel VT或者AMD V)的裸機虛擬化程序,它使用 Linux 內(nèi)核作為它的虛擬機管理程序。對 KVM 虛擬化的支持自 2.6.20 版開始已成為主流 Linux 內(nèi)核的默認部分。KVM支持的操作系統(tǒng)非常廣泛,包括Linux、BSD、Solaris、Windows、Haiku、ReactOS 和 AROS Research Operating System。

在 KVM 架構(gòu)中,虛擬機實現(xiàn)為常規(guī)的 Linux 進程,由標準 Linux 調(diào)度程序進行調(diào)度。事實上,每個虛擬 CPU 顯示為一個常規(guī)的 Linux 進程。這使 KVM 能夠享受 Linux 內(nèi)核的所有功能。設備模擬由提供了修改過的 qemu 版本來完成。

在了解了kvm和qemu的原理以及相互的關(guān)系之后,我們再來關(guān)注下rtl8029網(wǎng)卡設備,如下圖所示。這里需要了解的是在qemu中模擬rtl8029網(wǎng)卡設備的模塊是ne2000。ne2000模擬了rtl8029網(wǎng)卡收發(fā)數(shù)據(jù)包的流程,邏輯位置位于虛擬機設備驅(qū)動和宿主機qemu網(wǎng)絡適配器模塊之間,當虛擬機的用戶空間發(fā)生socket send操作之后,設備驅(qū)動將封裝好的數(shù)據(jù)發(fā)送到ne2000設備模擬器,然后進入qemu相關(guān)適配器模塊,再通過宿主機的物理網(wǎng)卡向外發(fā)送數(shù)據(jù)。而接收數(shù)據(jù)則是相反的過程。

圖2. rtl8029網(wǎng)卡實物照

二.漏洞原理分析

第一部分中簡要分析了kvm, qemu,以及關(guān)于ne2000網(wǎng)卡模塊這些了解漏洞原理的基礎知識,我們再來分析CVE-2015-5279漏洞的具體產(chǎn)生原因。

該漏洞發(fā)生在ne2000網(wǎng)卡模塊的接收數(shù)據(jù)包的過程,相關(guān)代碼截圖如下。這部分代碼取自qemu-2.4.0/hw/net/ne2000.c文件中的ne2000_receive函數(shù)。ne2000_receive函數(shù)是虛擬機接收外部數(shù)據(jù)包的關(guān)鍵函數(shù),其大致流程為:

1.判斷網(wǎng)卡是否處于工作狀態(tài),數(shù)據(jù)緩沖區(qū)是否處于滿的狀態(tài); 2.通過檢測是否是否處于混雜模式,mac地址是否匹配,是否為廣播地址,從而判斷是否接收此數(shù)據(jù)包; 3.如緩沖區(qū)較小,則對其進行擴展; 4.進入數(shù)據(jù)包處理過程(如下圖代碼所示):處理數(shù)據(jù)包頭部;寫數(shù)據(jù)包內(nèi)容; 5.結(jié)束收包過程(如下圖代碼所示)。

圖3. 有缺陷的代碼

在進入收包代碼之前,s->curpag,s->stop,s->start是可以被黑客控制為任意數(shù)值。因此在上述函數(shù)流程的第4步中,index,avail,len這些關(guān)鍵的變量也可以被設置為可控的數(shù)值。利用這一特點,黑客可以創(chuàng)造出哪些攻擊方式呢?

首先可以導致邏輯循環(huán),即當進入while循環(huán)之后,使len不斷等于0,執(zhí)行”size -= len; ”這一行指令時,size永遠不會減小,因此“ while (size > 0) ”的判斷永遠為真,進入死循環(huán)。

第二種是造成堆緩沖區(qū)的溢出,在執(zhí)行“memcpy(s->mem + index, buf, len); ”這一行代碼時,由于index是可被操控的,因此可以在正確的緩沖區(qū)之外寫入數(shù)據(jù)包內(nèi)容。要實現(xiàn)這種利用方式,還需控制收包流程中的第一步,即判斷緩沖區(qū)邊界的過程。相關(guān)代碼截圖如下。

圖4. 需要進行關(guān)注的關(guān)鍵代碼

三.漏洞危害

CVE-2015-5279被qemu官方安全團隊定義為高危漏洞,一旦被黑客惡意利用,可以實現(xiàn)拒絕服務攻擊,虛擬機逃逸攻擊。在成功利用該漏洞之后,黑客進而可以控制宿主機以及該宿主機上的其他虛擬機,進而造成企業(yè)的敏感信息泄露,內(nèi)網(wǎng)被滲透的可怕后果。

圖5. 官方確定該漏洞為高危

四.漏洞修復方案

360 Marvel Team在發(fā)現(xiàn)該漏洞之后,第一時間通知了qemu官方安全團隊進行修復。在經(jīng)歷了長達25天的緊張修復之后,官方團隊于9月15日公開了該漏洞的詳細信息,該詳細信息里也包含了對360 Marvel Team成員的致謝信息。

官方提供了對該漏洞的補丁,其中在ne2000_receive函數(shù)中增加了對索引邊界的檢查,防止了緩沖區(qū)溢出的危險。建議使用qemu的廠商盡快采用該補丁,以免黑客利用該漏洞對業(yè)務造成影響。

圖6. 官方發(fā)布的補丁信息

針對360 Marvel Team獨立發(fā)現(xiàn)的虛擬化安全漏洞CVE-2015-5279,本文完整分析了漏洞相關(guān)的原理,危害,以及修復方案,希望可以引起更多開展云業(yè)務的公司,對虛擬化安全問題的重視。?

關(guān)于360 Marvel Team

360 Marvel Team是國內(nèi)首支虛擬化安全研究團隊,研究內(nèi)容為云安全領(lǐng)域的虛擬化平臺攻防技術(shù),致力于保持領(lǐng)先的脆弱性安全風險發(fā)現(xiàn)和防護能力,針對主流虛擬化平臺提供漏洞檢測和系統(tǒng)加固解決方案。


360MarvelTeam虛擬化漏洞第三彈:CVE-2015-7504漏洞分析

360MarvelTeam2015-12-0244762人圍觀,發(fā)現(xiàn)11個不明物體文章網(wǎng)絡安全

本文作者:360 Marvel Team團隊負責人 唐青昊 (新浪微博:SunSky0101)?

最近amazon、阿里云等云供應商都已經(jīng)收到了xen官方的漏洞通知郵件,在這封郵件中,官方聲明MarvelTeam發(fā)現(xiàn)并報告了這枚高危漏洞。今天的主角就是這枚編號CVE-2015-7504的,一枚同時影響kvm和xen平臺的高危虛擬化安全漏洞。

2015是云計算虛擬化安全問題爆發(fā)的元年,繼毒液漏洞肆虐全球之后,kvm,xen,vmware平臺上又不斷發(fā)現(xiàn)高危漏洞,這些漏洞均可威脅云計算系統(tǒng)的穩(wěn)定運行,黑客利用這些漏洞可以從虛擬機破壞宿主機,或者控制宿主機,進入威脅云計算系統(tǒng)所在的內(nèi)網(wǎng)。

本文為該系列的第三篇文章,將詳細分析團隊在9月22日提交的CVE-2015-7504 qemu pcnet網(wǎng)卡緩沖區(qū)溢出漏洞的相關(guān)知識。與之前我們披露的漏洞不同,該漏洞溢出的位置非常精妙,可以輕易使黑客控制代碼流程,是一枚上等的安全漏洞。另外,我們也吐槽下qemu官方的處理效率,該漏洞從提交到正式公開,經(jīng)歷了2個月零7天。如此高危的漏洞在這段漫長時間內(nèi)被黑客用于云計算系統(tǒng)的攻擊或者發(fā)生泄露的幾率都是很大的!

關(guān)于之前的兩篇文章,鏈接如下:1 2

一. 什么是pcnet

QEMU軟件中,實現(xiàn)了對大量網(wǎng)卡的模擬,如pcnet,rtl8139,ne2000,eepro100,e1000等,通過組件滿足虛擬機用戶對各種網(wǎng)卡的需求。網(wǎng)卡相關(guān)的漏洞也發(fā)現(xiàn)了很多,如之前我們發(fā)現(xiàn)的e1000網(wǎng)卡的漏洞,就是在數(shù)據(jù)報接收過程中出現(xiàn)的代碼問題引起的。

pcnet是虛擬化軟件QEMU中實現(xiàn)AMD PCNET網(wǎng)卡功能模擬的組件,相關(guān)的代碼實現(xiàn)位于/hw/net/pcnet.c中。

在qemu軟件中使用pcnet網(wǎng)卡,需要如下的命令行進行配置:

qemu-system-x86_64?centos-6.5-x64.img?-m?1024?-?net?nic,model=pcnet?-net?user

二.漏洞原理分析

了解了pcnet的基礎知識,再來聊聊CVE-2015-7504漏洞原理。我們前面已經(jīng)說到,該漏洞利用時可以直接控制代碼執(zhí)行路徑,那么它是怎么做到的呢?

首先我們來看漏洞觸發(fā)過程,該漏洞發(fā)生在pcnet網(wǎng)卡模塊的接收數(shù)據(jù)包的過程中,相關(guān)函數(shù)pcnet_receive的執(zhí)行邏輯:首先檢測CSR_DRX(s),CSR_STOP(s),CSR_SPND(s),size,CSR_LOOP(s),s->looptest這些值是否符合邊界要求,確定函數(shù)是否繼續(xù)處理。并且如果buf太小,則把它擴充到MIN_BUF_SIZE,之后檢測是否要接受此包。最終把數(shù)據(jù)拷到rmd中物理地址中。相關(guān)代碼截圖如下:

圖1. 有缺陷的代碼

在上述代碼中,我們可以看到,在實現(xiàn)數(shù)據(jù)包buffer操作的邏輯時,程序員出現(xiàn)了一個明顯的錯誤:未判斷數(shù)據(jù)包的長度是否已經(jīng)等于buffer長度。另外,在pcnet.c的另一個函數(shù)pcnet_transmit中也有對緩沖區(qū)位置和數(shù)據(jù)包長度的處理,截圖如下:

圖2. pcnet_transmit函數(shù)中進行緩沖區(qū)相關(guān)的處理

如果數(shù)據(jù)包長度臨近緩沖區(qū)長度(4096)時,由于代碼邏輯會自動添加4個字節(jié)的crc值,因此就會發(fā)生緩沖區(qū)溢出。

巧合的是溢出了buffer之后的四個字節(jié)恰好會覆蓋一個結(jié)構(gòu)體指針。如圖所示:

圖3.buffer所在的結(jié)構(gòu)體

圖4.qemu_irq的結(jié)構(gòu)體

在溢出發(fā)生之后,代碼流程進入pcnet_update_irq函數(shù)中,該函數(shù)經(jīng)過層層調(diào)用,最終使用了irq->handler作為函數(shù)指針!!!而該irq的結(jié)構(gòu)體指針我們可以對其進行控制,因此就完成了對代碼邏輯的劫持。

圖5. pcnet_update_irq的代碼邏輯

三.漏洞危害&漏洞利用演示

CVE-2015-7504被xen和qemu社區(qū)官方安全團隊定義為高危漏洞,一旦被黑客惡意利用,可以實現(xiàn)虛擬機逃逸攻擊。在成功利用該漏洞發(fā)動攻擊之后,黑客進而可以控制宿主機執(zhí)行任意指令,后果十分可怕。

圖6. xen官方對該漏洞內(nèi)容和危害的描述

Marvel?Team在演示環(huán)境中(64位centos 系統(tǒng))完成了對該漏洞的完美利用。在該視頻中,黑客通過虛擬機漏洞實現(xiàn)代理功能,控制虛擬機所在宿主機,并且在宿主機中執(zhí)行任意指令。

觀看視頻(訪問密碼 5299)

四.漏洞修復方案

xen官方在MarvelTeam的幫助下提供了對該漏洞的修復補丁,截圖如下:

圖7. 官方公布的補丁信息

在該補丁文件中,對pcnet_receive和pcnet_transmit兩個函數(shù)的緩沖區(qū)處理都進行了修正,完美修復了之前存在的漏洞。

小結(jié):針對虛擬化安全漏洞CVE-2015-7504,本文完整分析了漏洞相關(guān)的原理,危害,以及修復方案。在漏洞利用視頻中,Marvel Team演示了黑客控制宿主機的全過程。希望此文可以引起更多云服務供應商,對虛擬化安全問題的重視。


360 Marvel Team虛擬化漏洞第四彈:CVE-2015-8567漏洞分析

360MarvelTeam2015-12-316860人圍觀,發(fā)現(xiàn)2個不明物體漏洞

作者:360 Marvel Team 團隊負責人 唐青昊 (新浪微博:SunSky0101;微信:702108451)

2015年是“云躍進”的一年,同樣也是虛擬化漏洞真正被人們認知、重視的一年,不甘于“等風來”的360 Marvel Team主動出擊,用實際行動為云計算保駕護航。截至今日,我們累計在kvm,xen,vmware平臺上公開了高達14枚高危安全0day漏洞,這些漏洞均會導致通用云系統(tǒng)被黑客攻破。

今天,政府、企業(yè)、個人都有越來越多的資料信息在云上儲存,一旦云系統(tǒng)被攻破,就意味著這些重要的信息會被泄露。黑客利用虛擬化漏洞不但可以偷取到重要信息,甚至可以從一臺虛擬機的普通用戶發(fā)起攻擊控制宿主機,最終控制整個云環(huán)境的所有用戶。

本文為該系列的第四篇文章,也是今年的收官之作,文章將詳細分析編號為CVE-2015-8567的qemu內(nèi)存泄露漏洞的相關(guān)知識,該漏洞存在于xen和kvm系統(tǒng)的qemu模塊中的vmxnet3網(wǎng)卡組件,黑客在一臺虛擬機中利用該漏洞,可以導致同一宿主機上的其他虛擬機崩潰。360 Marvel Team于 10月22日提交該漏洞,官方于12月16號公開了漏洞信息及修復補丁。

1、關(guān)于qemu和vmxnet3

QEMU是一款存在于xen和kvm系統(tǒng)中的用以實現(xiàn)設備模擬的軟件,它實現(xiàn)了在虛擬機中使用鍵盤,網(wǎng)絡通信,磁盤存儲等諸多需要硬件設備參與的功能,并且可模擬的硬件設備類型非常豐富,如它提供了10種以上類型設備的網(wǎng)卡設備模擬組件,包括pcnet,rtl8139,ne2000,eepro100,e1000等。

vmxnet3組件模擬了vmware半虛擬化網(wǎng)卡的功能??梢允褂萌缦旅顔訋в衯mxnet3網(wǎng)卡模擬功能的虛擬機:

qemu-system-x86_64 -m 2048 -enable-kvm -device vmxnet3 centos-6.5-x64.img

2、CVE-2015-8567漏洞原理分析

我們首先來分析出現(xiàn)CVE-2015-8567漏洞的代碼,是在qemu-2.4.0/hw/net/vmxnet3.c中的vmxnet3_handle_command函數(shù)當中。該函數(shù)會根據(jù)cmd數(shù)值執(zhí)行針對網(wǎng)卡的不同操作,如cmd的值等于VMXNET3_CMD_ACTIVATE_DEV時,會進入vmxnet3_activate_device函數(shù)執(zhí)行激活設備的相關(guān)邏輯。

圖1. vmxnet3_handle_command函數(shù)部分內(nèi)容

當邏輯進入vmxnet3_activate_device函數(shù)中,會按照如下3個階段實現(xiàn)網(wǎng)卡設備激活:

(1)根據(jù)配置信息,客戶機類型等條件設置設備操作數(shù)據(jù),如發(fā)送隊列數(shù)量,接收隊列數(shù)量; (2)根據(jù)發(fā)送隊列數(shù)量,初始化發(fā)送隊列的緩沖區(qū);根據(jù)初始化隊列過程中計算的max_tx_frags值初始化發(fā)送數(shù)據(jù)包; (3)初始化接收數(shù)據(jù)包;初始化接收隊列的緩沖區(qū)。

vmxnet3_activate_device函數(shù)的代碼截圖如下:

圖2. vmxnet3_activate_device函數(shù)部分內(nèi)容

在第2階段中,使用vmxnet_tx_pkt_init函數(shù)初始化發(fā)送數(shù)據(jù)包,而在該函數(shù)中使用g_malloc分配了長度為max_frags + VMXNET_TX_PKT_PL_START_FRAG的內(nèi)存空間。相關(guān)代碼如下圖所示:

圖3. vmxnet_tx_pkt_init函數(shù)部分內(nèi)容

在整個“激活”邏輯中,缺乏對設備當前狀態(tài)的判斷,因此存在被多次“激活”的風險。簡單來說,在vmxnet3_activate_device函數(shù)的結(jié)尾,設置了s->device_active 的值為true,然而在整個函數(shù)中并未檢查s->device_active的值是否已經(jīng)為true,攻擊者可以不斷通過控制網(wǎng)卡進入“激活”邏輯,從而多次調(diào)用g_malloc函數(shù)分配內(nèi)存,直至宿主機系統(tǒng)內(nèi)存枯竭。

3、漏洞危害&漏洞利用方案

官方關(guān)于CVE-2015-8567漏洞危害描述為:虛擬機授權(quán)用戶利用該漏洞可以泄露宿主機內(nèi)存,導致拒絕服務。該信息的鏈接地址為:https://access.redhat.com/security/cve/cve-2015-8567

圖4. 官方公布的漏洞描述

360 Marvel Team在發(fā)現(xiàn)該漏洞之后,完成了測試環(huán)境中的漏洞利用程序。在測試環(huán)境中,有多臺虛擬機運行在一個宿主機上,黑客位于其中的一臺虛擬機,當黑客運行漏洞利用程序之后,經(jīng)過約40分鐘時間,多臺虛擬機崩潰。這里將最終的結(jié)果截圖如下:

圖5. 漏洞利用結(jié)果截圖

4、漏洞修復方案

廠商可以使用打補丁的方式修補該漏洞。官方提供了完整的針對CVE-2015-8567漏洞的補丁,鏈接為:https://lists.gnu.org/archive/html/qemu-devel/2015-12/msg02299.html。其中增加了前文提到的對s->device_active值的判斷(截圖如下)。

圖6. 官方公布的漏洞補丁部分截圖

5、小結(jié):

針對360 Marvel Team獨立發(fā)現(xiàn)的虛擬化安全漏洞CVE-2015-8567,本文完整分析了漏洞相關(guān)的原理,利用方案,危害說明,以及修復方案。希望此文可以引起更多使用公有云和私有云企業(yè)的關(guān)注,重視虛擬化安全問題。


總結(jié)

以上是生活随笔為你收集整理的虚拟化漏洞的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。