一種虛擬機(jī)逃逸的防護(hù)方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種虛擬機(jī)逃逸的防護(hù)方法及裝置。
【背景技術(shù)】
[0002]隨著計(jì)算機(jī)軟件技術(shù)的不斷發(fā)展,基于Unix系統(tǒng)操作平臺(tái)的軟件開發(fā)技術(shù)越來越普及,其中,虛擬機(jī)逃逸變成研發(fā)人員急需解決的問題。虛擬機(jī)逃逸是指利用虛擬機(jī)軟件或者虛擬機(jī)中運(yùn)行的軟件的漏洞進(jìn)行攻擊,以達(dá)到攻擊或控制虛擬機(jī)宿主操作系統(tǒng)的目的。
[0003]目前,虛擬機(jī)中的程序只能在虛擬機(jī)中運(yùn)行,當(dāng)虛擬機(jī)系統(tǒng)出現(xiàn)漏洞時(shí),虛擬機(jī)中的程序?qū)⑼黄铺摂M機(jī)的界限,讀取虛擬機(jī)以外的資源。虛擬機(jī)逃逸可以通過虛擬出一個(gè)網(wǎng)盤,將逃逸程序攜帶進(jìn)宿主機(jī)中,對宿主機(jī)中的資源進(jìn)行占用;還可以虛擬出一個(gè)仿真指令來攜帶逃逸程序。為了防止虛擬機(jī)逃逸行為的發(fā)生,一般是通過行為分析引擎來分析虛擬機(jī)的對外操作是否屬于虛擬機(jī)逃逸行為。然而在宿主機(jī)中設(shè)置往往會(huì)設(shè)置有大量的虛擬機(jī),當(dāng)大量的虛擬機(jī)同時(shí)產(chǎn)生對外操作或在短時(shí)間內(nèi)進(jìn)行大量的對外操作時(shí),分析引擎很容易在大負(fù)載的情況下死機(jī)或崩潰。從而使得整個(gè)虛擬機(jī)逃逸防護(hù)系統(tǒng)失效。
[0004]可以通過分析引擎對文件行為進(jìn)行分析,但是在引擎高并發(fā)狀態(tài)時(shí),引擎分析壓力大,影響分析結(jié)果。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明提供一種虛擬機(jī)逃逸的防護(hù)方法及裝置,能夠通過建立分析任務(wù)的緩存機(jī)制來緩解和過濾分析引擎在分析任務(wù)高并發(fā)狀態(tài)時(shí)的負(fù)載壓力。
[0006]依據(jù)本發(fā)明一個(gè)方面,提出了一種虛擬機(jī)逃逸的防護(hù)方法,該方法包括:
[0007]將獲取到的任務(wù)請求緩存至協(xié)線程,其中,所述任務(wù)請求為分析引擎獲取的對虛擬機(jī)對外操作行為的分析請求,所述協(xié)線程用于協(xié)助所述分析引擎緩存所述任務(wù)請求;
[0008]由所述協(xié)線程判斷所述任務(wù)請求是否為已知的虛擬機(jī)逃逸行為;
[0009]若否,則將所述任務(wù)請求發(fā)送給所述分析引擎進(jìn)行分析。
[0010]依據(jù)本發(fā)明另一個(gè)方面,還提出了一種虛擬機(jī)逃逸的防護(hù)裝置,該裝置包括:
[0011]緩存單元,用于將獲取到的任務(wù)請求緩存至協(xié)線程,其中,所述任務(wù)請求為分析引擎獲取的對虛擬機(jī)對外操作行為的分析請求,所述協(xié)線程用于協(xié)助所述分析引擎緩存所述任務(wù)請求;
[0012]判斷單元,用于由所述協(xié)線程判斷所述緩存單元緩存的任務(wù)請求是否為已知的虛擬機(jī)逃逸行為;
[0013]發(fā)送單元,用于當(dāng)所述判斷單元判斷所述任務(wù)請求不是虛擬機(jī)逃逸行為時(shí),將所述任務(wù)請求發(fā)送給所述分析引擎進(jìn)行分析。
[0014]本發(fā)明所采用的虛擬機(jī)逃逸的防護(hù)方法及裝置,用于在高并發(fā)分析任務(wù)的情況下緩解分析引擎的負(fù)載壓力。主要通過獲取虛擬機(jī)對本機(jī)以外的宿主機(jī)資源所進(jìn)行的操作,并對該操作以任務(wù)請求的方式先緩存至協(xié)線程中,由該協(xié)線程先對所緩存的任務(wù)請求進(jìn)行過濾,判斷該任務(wù)請求中的操作行為是否為虛擬機(jī)逃逸行為,若無法確定該任務(wù)請求中的操作行為是虛擬機(jī)逃逸行為則將該任務(wù)請求保留在協(xié)線程中,以便發(fā)送至分析引擎進(jìn)行進(jìn)一步的分析判斷。相對于現(xiàn)有技術(shù)中直接由分析引擎獲取所有虛擬機(jī)的任務(wù)請求的方式,本發(fā)明所采用的虛擬機(jī)逃逸的防護(hù)方法能夠?qū)⒄埱笕蝿?wù)在由分析引擎分析之前先進(jìn)行初步的篩選以減少一部分無需分析的任務(wù)請求,通過減少分析引擎的任務(wù)處理量達(dá)到部分減輕分析引擎負(fù)載壓力的效果。同時(shí),通過將任務(wù)請求先緩存在協(xié)線程中,再有序地向分析引擎發(fā)送任務(wù)請求,能夠在面對任務(wù)請求高并發(fā)狀態(tài)時(shí)起到保護(hù)分析引擎,防止分析引擎因負(fù)載過大而死機(jī)或崩潰的情況發(fā)生,從而提高了系統(tǒng)整體的防護(hù)穩(wěn)定性。
[0015]上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的【具體實(shí)施方式】。
【附圖說明】
[0016]通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號表示相同的部件。在附圖中:
[0017]圖1示出了本發(fā)明實(shí)施例提出的一種虛擬機(jī)逃逸的防護(hù)方法流程圖;
[0018]圖2示出了本發(fā)明實(shí)施例提出的另一種虛擬機(jī)逃逸的防護(hù)方法流程圖;
[0019]圖3示出了本發(fā)明實(shí)施例提出的一種虛擬機(jī)逃逸的防護(hù)裝置組成框圖;
[0020]圖4示出了本發(fā)明實(shí)施例提出的另一種虛擬機(jī)逃逸的防護(hù)裝置組成框圖。
【具體實(shí)施方式】
[0021]下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0022]本發(fā)明實(shí)施例提供了一種虛擬機(jī)逃逸的防護(hù)方法,如圖1所示,該方法應(yīng)用于設(shè)置有虛擬機(jī)的宿主機(jī)中,用于防止虛擬機(jī)逃逸的情況發(fā)生,具體步驟包括:
[0023]101、將獲取到的任務(wù)請求緩存至協(xié)線程。
[0024]要防止虛擬機(jī)逃逸的情況發(fā)生,首先要能夠獲取到虛擬機(jī)對本機(jī)資源以外的宿主機(jī)資源或其他虛擬機(jī)資源進(jìn)行的操作行為。根據(jù)該行為中的具體特征來判斷該操作行為是否構(gòu)成了虛擬機(jī)逃逸。在本實(shí)施例中,是由宿主機(jī)中的分析引擎獲取本機(jī)中所有虛擬機(jī)的對外操作行為,并將這些行為以任務(wù)請求的形式緩存在協(xié)線程中。該協(xié)線程主要用于輔助分析引擎存儲(chǔ)任務(wù)請求,以防止多個(gè)虛擬機(jī)同時(shí)產(chǎn)生任務(wù)請求或虛擬機(jī)在短時(shí)間內(nèi)大量生成任務(wù)請求對分析引擎造成的負(fù)載過大問題。通過協(xié)線程的緩存,分析引擎可以從斜線程中來獲取適當(dāng)數(shù)量的任務(wù)請求進(jìn)行分析,從而有效的緩解了分析引擎的處理壓力。
[0025]102、由協(xié)線程判斷任務(wù)請求是否為已知的虛擬機(jī)逃逸行為。
[0026]任務(wù)請求緩存至協(xié)線程后,協(xié)線程將判斷該任務(wù)請求是否需要由分析引擎進(jìn)行虛擬機(jī)逃逸的行為分析,即判斷該任務(wù)請求是否為已知的虛擬機(jī)逃逸行為。而已知的虛擬機(jī)逃逸行為可以通過分析引擎的分析結(jié)果得到,也可以通過管理員設(shè)置規(guī)定哪些具體的操作行為屬于虛擬機(jī)逃逸行為,在本實(shí)施例中,已知的虛擬機(jī)逃逸行為可以是在宿主機(jī)中維護(hù)的一個(gè)列表,在該列表中記錄有虛擬機(jī)逃逸行為的行為特征。
[0027]103、若否,則保存任務(wù)請求,以便發(fā)送給分析引擎進(jìn)行分析。
[0028]根據(jù)102的判斷,當(dāng)協(xié)線程無法確定該任務(wù)請求中所攜帶的操作行為時(shí)虛擬機(jī)逃逸行為時(shí),說明該任務(wù)請求需要由分析引擎進(jìn)行進(jìn)一步的具體分析。因此,協(xié)線程會(huì)將該任務(wù)請求保存下來,等待適合的時(shí)機(jī)發(fā)送給分析引擎進(jìn)行詳細(xì)的分析判斷。
[0029]通過上述的說明,本發(fā)明實(shí)施例所提供的一種虛擬機(jī)逃逸的防護(hù)方法,是通過獲取虛擬機(jī)對本機(jī)以外的宿主機(jī)資源所進(jìn)行的操作,并對該操作以任務(wù)請求的方式緩存至協(xié)線程中,由該協(xié)線程對所緩存的任務(wù)請求進(jìn)行過濾,判斷該任務(wù)請求中的操作行為是否為虛擬機(jī)逃逸行為,若無法確定該任務(wù)請求中的操作行為是虛擬機(jī)逃逸行為則將該任務(wù)請求保留在協(xié)線程中,以便發(fā)送至分析引擎進(jìn)行進(jìn)一步的分析判斷。相對于現(xiàn)有技術(shù)中直接由分析引擎獲取所有虛擬機(jī)的任務(wù)請求的方式,本發(fā)明實(shí)施例所采用的虛擬機(jī)逃逸的防護(hù)方法能夠?qū)⒄埱笕蝿?wù)在由分析引擎分析之前先進(jìn)行初步的篩選以減少一部分無需分析的任務(wù)請求,通過減少分析引擎的任務(wù)處理量達(dá)到部分減輕分析引擎負(fù)載壓力的效果。同時(shí),通過將任務(wù)請求先緩存在協(xié)線程中,再有序地向分析引擎發(fā)送任務(wù)請求,能夠在面對任務(wù)請求高并發(fā)狀態(tài)時(shí)起到保護(hù)分析引擎,防止分析引擎因負(fù)載過大而死機(jī)或崩潰的情況發(fā)生,從而提高了系統(tǒng)整體的防護(hù)穩(wěn)定性。
[0030]為了更進(jìn)一步的說明上述的虛擬機(jī)逃逸的防護(hù)方法,結(jié)合具體的實(shí)現(xiàn)方式,本發(fā)明實(shí)施例還提供了一種虛擬機(jī)逃逸的防護(hù)方法,如圖2所示,該方法包括:
[0031 ] 201、將獲取到的任務(wù)請求緩存至協(xié)線程。
[0032]在本發(fā)明實(shí)施例中,通過建立協(xié)線程統(tǒng)一緩存宿主機(jī)中所有虛擬機(jī)生成的任務(wù)請求。具體的實(shí)現(xiàn)方式,可以是在該協(xié)線程中創(chuàng)建一個(gè)隊(duì)列,將任務(wù)請求根據(jù)生