亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種針對虛擬化超級調(diào)用函數(shù)的漏洞熱修復(fù)方法與流程

文檔序號:11216764閱讀:550來源:國知局
本發(fā)明屬于云計算安全
技術(shù)領(lǐng)域
:,涉及一種虛擬化平臺漏洞修復(fù)的方法,特別涉及虛擬化平臺下超級調(diào)用的漏洞熱修復(fù)方法。
背景技術(shù)
::隨著互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,云計算作為一種低成本的計算與通信模式迅速崛起。中國信息通信研究院2016年9月在可信云大會上最新發(fā)布的《云計算白皮書(2016年)》顯示,2010年至今全球云計算市場規(guī)模持續(xù)平穩(wěn)擴增。云計算是指應(yīng)用以服務(wù)形式通過互聯(lián)網(wǎng)交付使用,并且數(shù)據(jù)中心的硬件和軟件能夠提供這些服務(wù)。近年來,微軟、亞馬遜、谷歌、ibm等大型互聯(lián)網(wǎng)公司都相繼發(fā)展了自己的云計算業(yè)務(wù)。國內(nèi)的阿里云、百度云、騰訊云和移動云等多種形式的云計算服務(wù)正不斷涌現(xiàn)。虛擬化技術(shù)作為云計算的基本組件,是支撐云計算最重要的技術(shù)基石。虛擬化帶來了一定程度的可自定義性和可控性,實質(zhì)上是一種創(chuàng)建不同計算環(huán)境的技術(shù)。三種最為常用的虛擬化技術(shù)是基于軟件的完全虛擬化、硬件輔助虛擬化及類虛擬化技術(shù)。虛擬化技術(shù)經(jīng)過多年的發(fā)展,出現(xiàn)了很多成熟的產(chǎn)品,應(yīng)用也從最初的服務(wù)器到了桌面等更寬的領(lǐng)域。虛擬化軟件的主流廠商包括vmware、xen、kvm及microsoft。云計算和虛擬化技術(shù)飛速發(fā)展的同時,也不可避免的帶來了很多安全問題,利用虛擬化平臺漏洞進行攻擊的惡意行為層出不窮,嚴重損害了云服務(wù)廠商和云服務(wù)使用者的利益。漏洞一旦曝光,為了不影響業(yè)務(wù)安全,需要云計算公司對漏洞進行快速修復(fù)。目前存在冷補丁和熱修復(fù)兩種漏洞修復(fù)方式。所謂冷補丁修復(fù),指修改系統(tǒng)源碼后重新編譯源碼并重新啟動服務(wù)器的方式。重啟過程中,上層全部客戶虛擬機需要宕機,用戶業(yè)務(wù)被中斷10至30分鐘??梢?,重啟服務(wù)器勢必會影響到客戶的正常業(yè)務(wù),有些甚至是致命的影響。而不影響虛擬機業(yè)務(wù)運行的漏洞熱修復(fù)技術(shù)需考慮復(fù)雜組件的結(jié)合,難度極大?,F(xiàn)有的少數(shù)熱修復(fù)技術(shù)不能保證百分百不重啟服務(wù)器,同樣需要暫停所有虛擬機的運行,修復(fù)效果不理想。xen安全社區(qū)(xensecurityadvisories)最新公布的漏洞報告顯示,xen虛擬化平臺漏洞2012年至2016年持續(xù)增加。截止2017年2月,xen安全社區(qū)已公布了210個xen內(nèi)核漏洞,其中cve(commonvulnerabilitiesandexposures)漏洞庫披露的xen高危漏洞196個,而由于超級調(diào)用函數(shù)問題導(dǎo)致的漏洞高達半數(shù)以上。超級調(diào)用是xen虛擬化平臺下重要的通信機制,其漏洞嚴重影響了虛擬化平臺的可用性。因此有必要提出一種虛擬化平臺超級調(diào)用函數(shù)漏洞熱修復(fù)的方法,高效的修復(fù)虛擬化平臺超級調(diào)用函數(shù)漏洞,避免惡意攻擊的發(fā)生。技術(shù)實現(xiàn)要素:針對虛擬化平臺漏洞修復(fù)問題,本發(fā)明提出了一種虛擬化超級調(diào)用函數(shù)的漏洞熱修復(fù)方法。在對xen虛擬化平臺進行環(huán)境搭建、使用及源碼分析后,可以發(fā)現(xiàn)xen虛擬化平臺下存在特權(quán)域domain0,domain0的dma操作可以訪問xen內(nèi)存,同時xen下超級調(diào)用函數(shù)存放在超級調(diào)用表內(nèi),本發(fā)明主要利用特權(quán)域domain0更新xen下超級調(diào)用表對超級調(diào)用函數(shù)漏洞進行內(nèi)存修復(fù)。本發(fā)明采用的技術(shù)方案如下:一種針對虛擬化超級調(diào)用函數(shù)的漏洞熱修復(fù)方法,其步驟包括:1)根據(jù)xen系統(tǒng)的e820表計算xen物理內(nèi)存起始地址,其中xen系統(tǒng)的e820表為系統(tǒng)物理內(nèi)存分布表,在xen啟動過程中生成并輸出到系統(tǒng)日志中;2)根據(jù)計算出的物理內(nèi)存起始地址及xen內(nèi)存分布,計算超級調(diào)用表的虛擬地址所映射到的物理地址,其中xen內(nèi)存分布為系統(tǒng)虛擬地址空間的內(nèi)存分布,在xen源碼中有明確規(guī)定;3)通過特權(quán)域domain0獲取補丁機器碼,并將補丁寫入內(nèi)存,記錄補丁函數(shù)的物理地址;4)根據(jù)待修復(fù)的超級調(diào)用處理函數(shù)對應(yīng)的超級調(diào)用號,計算待修復(fù)的超級調(diào)用處理函數(shù)超級調(diào)用表中對應(yīng)的物理地址;5)通過特權(quán)域domain0更新超級調(diào)用表,從而實現(xiàn)對超級調(diào)用處理函數(shù)的漏洞熱修復(fù)。上述方法中,補丁的插入利用特權(quán)域domain0的dma(directmemoryaccess,直接內(nèi)存訪問)操作完成,需要計算超級調(diào)用表所在內(nèi)存虛擬地址映射到的物理地址,作為dma操作的物理內(nèi)存地址。同時,所有補丁以機器碼的形式寫入內(nèi)存。上述方法中,xen與特權(quán)域domain0通過超級調(diào)用方式通信。當(dāng)xen的客戶機需要執(zhí)行更高權(quán)限的操作時,如頁表的更新、對物理資源的訪問等,由于自身在非特權(quán)域無法完成這些操作,則需要通過調(diào)用超級調(diào)用交給xen來完成。本發(fā)明的有益效果是:1.本發(fā)明通過特權(quán)域domain0修復(fù)xen平臺超級調(diào)用函數(shù)漏洞,無需重啟機器和暫停平臺上虛擬機的運行,實現(xiàn)了虛擬化平臺漏洞熱修復(fù)功能。2.本發(fā)明通過特權(quán)域domain0完成補丁的插入和應(yīng)用,保證了補丁的可控性和安全性。3.本發(fā)明通過直接更新超級調(diào)用表的方式修復(fù)虛擬化平臺漏洞,避免了修復(fù)過程對正在修復(fù)函數(shù)的正常運行造成影響,正在調(diào)用的超級調(diào)用函數(shù)先使用舊版本,修復(fù)完成后,內(nèi)核更新,再次調(diào)用該超級調(diào)用時直接使用新版本。綜上,本發(fā)明提出的針對虛擬化平臺超級調(diào)用函數(shù)的漏洞熱修復(fù)方法,能夠較準確地修復(fù)虛擬化平臺漏洞,無需重啟機器,保證了虛擬化平臺上虛擬機的正常運行,且利用domain0進行修復(fù)更加安全。附圖說明圖1為虛擬化平臺下超級調(diào)用函數(shù)的漏洞熱修復(fù)方法的流程示意圖。具體實施方式下面將結(jié)合實施例及附圖,對本發(fā)明的技術(shù)方案進行清楚、完整地描述。實現(xiàn)本發(fā)明的一種具體實施方式如下,針對虛擬化超級調(diào)用函數(shù)的漏洞熱修復(fù)方法,其步驟為:1)根據(jù)xen系統(tǒng)的e820表計算xen物理內(nèi)存起始地址;2)根據(jù)上述計算出的物理內(nèi)存起始地址及xen內(nèi)存分布,計算超級調(diào)用表的虛擬地址所映射到的物理地址;3)通過特權(quán)域domain0獲取補丁機器碼,并將補丁寫入內(nèi)存,記錄補丁函數(shù)所在物理內(nèi)存地址;4)根據(jù)上述計算出的超級調(diào)用表的物理地址及待修復(fù)的超級調(diào)用處理函數(shù)對應(yīng)的超級調(diào)用號,計算待修復(fù)的超級調(diào)用處理函數(shù)在超級調(diào)用表中對應(yīng)的內(nèi)存物理地址;5)通過特權(quán)域domain0更新超級調(diào)用表,即完成對超級調(diào)用函數(shù)的漏洞熱修復(fù)。本方法采用的虛擬化環(huán)境為xen虛擬化平臺,在xen平臺下虛擬機分為特權(quán)虛擬機domain0和非特權(quán)虛擬機domu。xen系統(tǒng)內(nèi)存為嚴格隔離的內(nèi)存,在xen4.0版本以前,特權(quán)域domain0的dma操作可以訪問到xen系統(tǒng)內(nèi)存。xen系統(tǒng)的e820表是指當(dāng)前系統(tǒng)物理內(nèi)存分布表,描述當(dāng)前系統(tǒng)物理內(nèi)存的使用情況,在xen啟動過程中生成并輸出到系統(tǒng)日志中。xen物理內(nèi)存起始地址,是指xen啟動后內(nèi)核函數(shù)的首地址。xen啟動后將內(nèi)核動態(tài)重映射到一個高端的物理地址。超級調(diào)用表的虛擬地址所映射到的物理地址,是指超級調(diào)用表hyercall_table在物理內(nèi)存中的位置,本發(fā)明通過特權(quán)域domain0的dma操作訪問xen系統(tǒng)內(nèi)存,dma操作使用的地址為物理內(nèi)存地址。超級調(diào)用處理函數(shù)的物理地址,是指超級調(diào)用處理函數(shù)的入口地址,超級調(diào)用表中記錄了各個超級調(diào)用處理函數(shù)的入口地址,以超級調(diào)用號為索引,超級調(diào)用表和超級調(diào)用號配合使用,以確定對應(yīng)的處理函數(shù)地址。圖1是上述虛擬化超級調(diào)用函數(shù)熱修復(fù)方法的流程示意圖,對其各步驟詳細說明如下:1.計算xen物理內(nèi)存起始地址。啟動過程中xenhypervisor(xen虛擬機監(jiān)控器)被動態(tài)裝載到內(nèi)存的高端地址xen_phys_start。該高端地址通過以下公式確定:xen_phys_start=end-reloc_size其中end代表物理地址空間中,4g之內(nèi)最大可用內(nèi)存首地址。reloc_size為xen的代碼和數(shù)據(jù)段所占的內(nèi)存空間的大小,默認為4m。在本發(fā)明的一實施例中,通過在另一臺主機源碼編譯安裝同一版本xen,獲得reloc_size大小值。2.計算超級調(diào)用表所在的內(nèi)存物理地址。xenhypervisor頁面線性映射到高端虛擬地址。在本發(fā)明的一實施例中,通過查看xen內(nèi)存分布獲得xen內(nèi)存虛擬起始地址xen_virt_start,另通過查看xen-syms文件獲得超級調(diào)用表hypercall_table虛擬地址va,根據(jù)上述所得xen物理內(nèi)存起始地址,推算出超級調(diào)用表物理地址pa的計算公式:①offset=va-xen_virt_start②pa=xen_phys_start+offset3.獲取補丁機器碼。因為補丁需要直接寫入物理內(nèi)存,所以要保證補丁機器碼與內(nèi)存函數(shù)機器碼的格式一致。本發(fā)明結(jié)合已有的linux下內(nèi)核修復(fù)方法kpatch和kgraft的實現(xiàn)原理,在同一主機上修復(fù)超級調(diào)用函數(shù)源碼,并重新編譯xen源碼,最后通過特權(quán)域domain0讀取新的xen二進制文件以獲取補丁函數(shù)的機器碼。特權(quán)域domain0執(zhí)行dma寫操作將補丁機器碼寫入內(nèi)存。4.計算待修復(fù)超級調(diào)用處理函數(shù)入口地址。同系統(tǒng)調(diào)用類似,超級調(diào)用表中記錄了各個超級調(diào)用處理函數(shù)的入口地址。在超級調(diào)用處理程序hypercall中,以超級調(diào)用號為索引可以方便地在超級調(diào)用表中找到對應(yīng)的處理函數(shù)地址,方法為:call*hypercall_table(,%eax,4)。因此,待修復(fù)超級調(diào)用處理函數(shù)入口地址ma的計算公式為:ma=pa+%eax*4其中,eax為超級調(diào)用號,pa為超級調(diào)用表所在內(nèi)存物理地址,%表示取寄存器值,4表示32位系統(tǒng)下每個超級調(diào)用表項為4字節(jié)大小。5.特權(quán)域domain0更新超級調(diào)用表。為實現(xiàn)虛擬化平臺運行過程中動態(tài)替換函數(shù),本發(fā)明通過特權(quán)域domain0的一次dma讀操作,將超級調(diào)用表中指定的超級調(diào)用處理函數(shù)地址更改為新超級調(diào)用處理函數(shù)的入口地址。正在執(zhí)行的超級調(diào)用處理函數(shù)仍使用原超級調(diào)用處理函數(shù),修復(fù)完成后,替換到新超級調(diào)用處理函數(shù)執(zhí)行。本發(fā)明首先對該虛擬化平臺超級調(diào)用函數(shù)熱修復(fù)方法進行了功能有效性測試,測試結(jié)果表明通過本發(fā)明提出的方法可以在無需重啟系統(tǒng)和暫停虛擬機的前提下修復(fù)虛擬化超級調(diào)用函數(shù)漏洞,符合本發(fā)明的設(shè)計目標(biāo)。其次,為了衡量該方法對虛擬化平臺系統(tǒng)可用性造成的影響,本實驗在函數(shù)修復(fù)過程中對當(dāng)前系統(tǒng)可用性進行計算,測試結(jié)果表明函數(shù)修復(fù)過程中虛擬化平臺系統(tǒng)可用性為99.95%以上,該方法對系統(tǒng)可用性沒有任何影響。在其它實施例中,步驟3)中獲取補丁機器碼,可通過在另一主機上修復(fù)內(nèi)核函數(shù)源碼,重新編譯安裝xen,最后通過特權(quán)域domain0的dma操作讀取補丁函數(shù)的機器碼。補丁的寫入可通過特權(quán)域domain0的讀文件操作將機器碼寫入kmalloc操作申請到的內(nèi)核空間。在其它實施例中,步驟4)中待修復(fù)超級調(diào)用處理函數(shù)入口地址ma的計算公式,在64位系統(tǒng)下為:ma=pa+%eax*8,64位系統(tǒng)下每個超級調(diào)用表項為8字節(jié)大小??梢岳斫獾氖牵陨纤枋龅膶嵤├齼H僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。當(dāng)前第1頁12當(dāng)前第1頁12
當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1