自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

虛擬化漏洞分析之QEMU網(wǎng)卡堆溢出漏洞

原創(chuàng)
安全 漏洞
360 Marvel Team將陸續(xù)公開一系列獨(dú)立發(fā)現(xiàn)的針對(duì)虛擬化軟件高危0day漏洞的分析文章,揭開虛擬化攻擊技術(shù)的神秘面紗。

前言:

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

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

本文為該系列的第二篇文章,將詳細(xì)分析CVE-2015-5279 qemu網(wǎng)卡堆溢出漏洞的相關(guān)知識(shí)。關(guān)于第一篇文章針對(duì)CVE-2015-6815漏洞的分析,詳見http://www.freebuf.com/vuls/77834.html。

一. 漏洞基礎(chǔ)知識(shí)

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

QEMU是一款處理器模擬軟件,可以提供用戶模式模擬和系統(tǒng)模式模擬。當(dāng)處于用戶模式模擬狀態(tài)時(shí),將使用動(dòng)態(tài)翻譯技術(shù),允許一個(gè)cpu構(gòu)建的進(jìn)程在另一個(gè)cpu上執(zhí)行。系統(tǒng)模式模擬狀態(tài)下,允許對(duì)整個(gè)pc系統(tǒng)的處理器和所使用到的相關(guān)外圍設(shè)備進(jìn)行模擬。qemu提供的仿真外設(shè)包括硬件Video Graphics Array (VGA) 仿真器、PS/2 鼠標(biāo)和鍵盤、集成開發(fā)環(huán)境(IDE)硬盤和 CD-ROM 接口,以及軟盤仿真。也包括對(duì)E2000 Peripheral Controller Interconnect (PCI) 網(wǎng)絡(luò)適配器、串行端口、大量的聲卡和 PCI Universal Host Controller Interface (UHCI) Universal Serial Bus (USB) 控制器(帶虛擬 USB 集線器)的仿真。除了仿真標(biāo)準(zhǔn) PC 或 ISA PC(不帶 PCI 總線)外,QEMU 還可以仿真其他非 PC 硬件,如 ARM Versatile 基線板(使用 926E)和 Malta million instructions per second (MIPS) 板。對(duì)于各種其他平臺(tái),包括 Power Macintosh G3 (Blue & White) 和 Sun-4u 平臺(tái),都能正常工作。

qemu可進(jìn)行模擬的外圍設(shè)備

圖1.qemu可進(jìn)行模擬的外圍設(shè)備

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

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

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

[[150598]]

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

二.漏洞原理分析

第一部分中簡要分析了kvm, qemu,以及關(guān)于ne2000網(wǎng)卡模塊這些了解漏洞原理的基礎(chǔ)知識(shí),我們?cè)賮矸治鯟VE-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ù)是虛擬機(jī)接收外部數(shù)據(jù)包的關(guān)鍵函數(shù),其大致流程為:

1. 判斷網(wǎng)卡是否處于工作狀態(tài),數(shù)據(jù)緩沖區(qū)是否處于滿的狀態(tài);

2. 通過檢測(cè)是否是否處于混雜模式,mac地址是否匹配,是否為廣播地址,從而判斷是否接收此數(shù)據(jù)包;

3. 如緩沖區(qū)較小,則對(duì)其進(jìn)行擴(kuò)展;

4. 進(jìn)入數(shù)據(jù)包處理過程(如下圖代碼所示):處理數(shù)據(jù)包頭部;寫數(shù)據(jù)包內(nèi)容;

5. 結(jié)束收包過程(如下圖代碼所示)。

有缺陷的代碼

圖3. 有缺陷的代碼

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

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

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

需要進(jìn)行關(guān)注的關(guān)鍵代碼

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

三.漏洞危害

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

官方確定該漏洞為高危

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

四.漏洞修復(fù)方案

360 Marvel Team在發(fā)現(xiàn)該漏洞之后,第一時(shí)間通知了qemu官方安全團(tuán)隊(duì)進(jìn)行修復(fù)。

在經(jīng)歷了長達(dá)25天的緊張修復(fù)之后,官方團(tuán)隊(duì)于9月15日公開了該漏洞的詳細(xì)信息,詳見https://access.redhat.com/security/cve/CVE-2015-5279,該鏈接也包含了對(duì)360 Marvel Team成員的致謝信息。

補(bǔ)丁地址:https://lists.gnu.org/archive/html/qemu-devel/2015-09/msg03984.html

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

官方發(fā)布的補(bǔ)丁信息

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

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

關(guān)于360 Marvel Team:

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

責(zé)任編輯:藍(lán)雨淚 來源: 51CTO.com
相關(guān)推薦

2020-09-28 10:20:30

漏洞

2020-10-25 09:39:49

漏洞分析

2014-07-03 09:58:07

2021-03-28 18:23:22

Linux虛擬化Virtqueue

2015-06-03 10:21:44

漏洞溢出漏洞9patch

2021-02-14 16:49:22

Linux虛擬化Virtio

2021-05-07 06:42:51

Vhost-NetLinux虛擬化

2014-10-22 09:33:10

2009-07-20 22:52:31

2020-11-23 07:19:15

Linux虛擬化KVM

2015-09-18 09:33:03

2023-10-12 07:52:08

2009-10-21 14:36:53

漏洞補(bǔ)丁

2015-01-29 09:15:57

2014-12-03 10:37:45

2018-04-17 14:41:41

Java堆內(nèi)存溢出

2009-02-03 17:26:03

2023-05-13 00:06:33

2015-02-06 15:51:11

2020-10-27 09:51:18

漏洞
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)