一種實現虛擬機自省的方法和裝置的制造方法
【技術領域】
[0001]本發(fā)明涉及信息技術領域,尤其涉及實現虛擬機自省的方法和裝置。
【背景技術】
[0002]在增強計算機安全的諸多技術中,虛擬機自省(Virtual MachineIntrospect1n, VMI)技術可以較好的對VM (Virtual Machine,虛擬機)進行安全保護。VMI系統(tǒng)可以是運行在VMM (Virtual Machine Monitor,虛擬機監(jiān)控器)中的,VMM可以通過VMI系統(tǒng)從VM外部增強VM的安全性能,以實現對VM的保護。具體的,VMM可以通過VMI系統(tǒng)在VM外部監(jiān)控VM內部的運行狀態(tài),如,VMI系統(tǒng)可以直接掃描VM的內存、磁盤以及監(jiān)控網絡行為等以對VM進行安全檢查。在使用VMI技術后,由于VMI系統(tǒng)本身運行在VM外部,因此即使惡意軟件已經感染了 VM,也無法干擾VMI系統(tǒng)的運行。
[0003]具體的安全檢測步驟可以包括:VMI系統(tǒng)可以從VM中獲取待檢查內存數據;對獲取到的待檢查內存數據進行安全檢查。
[0004]但是,在VMI系統(tǒng)對VM中的內存數據進行安全檢查的同時,VM可能也正在對待檢查內存數據進行訪問,此時,若VMI系統(tǒng)在獲取完成部分待檢查內存數據后,VM對本地的與所述部分待檢查內存數據對應的內存數據進行了修改,則導致VMI系統(tǒng)獲取到的內存數據,與VM本地的內存數據不一致,進而導致VMI系統(tǒng)無法準確的對VM中的內存數據進行安全檢查。
【發(fā)明內容】
[0005]本發(fā)明提供一種實現虛擬機自省的方法和裝置,解決了 VMI系統(tǒng)無法準確的對VM中的數據進行安全檢查的問題。
[0006]為達到上述目的,本發(fā)明采用如下技術方案:
[0007]第一方面,提供了一種實現虛擬機自省的方法,包括:
[0008]確定虛擬機中的待檢查數據;
[0009]開始讀取所述待檢查數據,保存已讀取的待檢查數據的副本,并將已讀取的待檢查數據的存儲地址存儲到硬件事務內存中,以使得所述硬件事務內存能夠根據所述存儲地址對已讀取的待檢查數據進行監(jiān)測;
[0010]當監(jiān)測到所述已讀取的待檢查數據被修改時,則停止讀取所述待檢查數據并刪除所述副本;
[0011]當讀取所述待檢查數據完畢并且未監(jiān)測到所述已讀取的待檢查數據被修改時,則對所述副本進行安全檢查。
[0012]結合第一方面,在第一方面的第一種實現方式中,所述待檢查數據包括鎖數據,所述鎖數據用于表征所述待檢查數據當前是否正在被訪問;
[0013]在所述確定虛擬機中的待檢查數據之后,所述方法還包括:
[0014]判斷所述鎖數據對應的鎖是否處于釋放狀態(tài),所述釋放狀態(tài)用于表征所述待檢查數據當前未被訪問;
[0015]所述開始讀取所述待檢查數據,保存已讀取的待檢查數據的副本,并將已讀取的待檢查數據的存儲地址存儲到硬件事務內存中,以使得所述硬件事務內存能夠根據所述存儲地址對已讀取的待檢查數據進行監(jiān)測,包括:
[0016]若所述鎖數據對應的鎖處于所述釋放狀態(tài),則開始讀取所述待檢查數據,保存已讀取的待檢查數據的副本,并將已讀取的待檢查數據的存儲地址存儲到硬件事務內存中,以使得所述硬件事務內存能夠根據所述存儲地址對已讀取的待檢查數據進行監(jiān)測。
[0017]結合第一方面或第一方面的第一種實現方式,在第二種實現方式中,所述對所述副本進行安全檢查,包括:
[0018]檢查所述副本的完整性;和/或,
[0019]根據所述副本判斷所述虛擬機運行的系統(tǒng)中是否存在惡意軟件。
[0020]結合第一方面或第一方面的第一種實現方式或第一方面的第二種實現方式,在第三種實現方式中,在所述對所述副本進行安全檢查之后,所述方法還包括:
[0021]若所述副本未通過所述安全檢查,則向所述虛擬機發(fā)送安全檢查未通過消息,以使所述虛擬機根據所述安全檢查未通過消息進行相應處理。
[0022]結合第一方面或第一方面的第一種實現方式至第一方面的第三種實現方式中任一種實現方式,在第四種實現方式中,所述方法還包括:
[0023]當監(jiān)測到所述已讀取的待檢查數據被修改時,則獲取被修改的待檢查數據的存儲地址;
[0024]向所述虛擬機發(fā)送訪問沖突消息,所述訪問沖突消息包括所述被修改的待檢查數據的存儲地址,以使得所述虛擬機確定修改所述被修改的待存儲數據的進程是否為安全進程。
[0025]第二方面,提供了一種實現虛擬機自省的方法,包括:
[0026]確定單元,用于確定虛擬機中的待檢查數據;
[0027]讀取單元,用于讀取所述確定單元確定的所述待檢查數據,保存已讀取的待檢查數據的副本,并將已讀取的待檢查數據的存儲地址存儲到硬件事務內存中;
[0028]監(jiān)測單元,用于通過所述硬件事務內存監(jiān)測所述存儲地址所對應的已讀取的待檢查數據是否被修改;
[0029]結束單元,用于當所述監(jiān)測單元監(jiān)測到所述已讀取的待檢查數據被修改時,則停止讀取所述待檢查數據并刪除所述副本;
[0030]安全檢查單元,用于當所述讀取單元讀取所述待檢查數據完畢并且所述監(jiān)測單元未監(jiān)測到所述已讀取的待檢查數據被修改時,則對所述副本進行安全檢查。
[0031]結合第二方面,在第二方面的第一種實現方式中,所述讀取單元保存的所述副本包括鎖數據,所述鎖數據用于表征所述確定單元確定的所述待檢查數據當前是否正在被訪問;
[0032]所述裝置還包括:
[0033]判斷單元,用于在所述確定單元確定虛擬機中的待檢查數據之后,判斷所述鎖數據對應的鎖是否處于釋放狀態(tài),所述釋放狀態(tài)用于表征所述待檢查數據當前未被訪問;
[0034]所述讀取單元,具體用于若所述鎖數據對應的鎖處于所述釋放狀態(tài),則開始讀取所述待檢查數據,保存已讀取的待檢查數據的副本,并將已讀取的待檢查數據的存儲地址存儲到硬件事務內存中,以使得所述硬件事務內存能夠根據所述存儲地址對已讀取的待檢查數據進行監(jiān)測。
[0035]結合第二方面或第二方面的第一種實現方式,在第二種實現方式中,所述安全檢查單元,具體用于檢查所述讀取單元保存的所述副本的完整性;和/或,根據所述讀取單元保存的所述副本判斷所述虛擬機運行的系統(tǒng)中是否存在惡意軟件。
[0036]結合第二方面或第二方面的第一種實現方式或第二方面的第二種實現方式,在第三種實現方式中,所述裝置還包括:
[0037]發(fā)送單元,用于在所述安全檢查單元完成對所述讀取單元保存的所述副本進行的安全檢查時,若所述副本未通過所述安全檢查單元進行的所述安全檢查,則向所述虛擬機發(fā)送安全檢查未通過消息,以使得所述虛擬機根據所述發(fā)送單元發(fā)送的所述安全檢查未通過消息進行相應處理。
[0038]結合第二方面或第二方面的第一種實現方式至第二方面的第三種實現方式中任一種實現方式,在第四種實現方式中,所述裝置還包括:
[0039]獲取單元,用于當所述監(jiān)測單元監(jiān)測到所述已讀取的待檢查數據被修改時,則獲取被修改的待檢查數據的存儲地址;
[0040]所述發(fā)送單元,還用于在所述獲取單元獲取所述已讀取的待檢查數據中被修改數據的存儲地址時,向所述虛擬機發(fā)送訪問沖突消息,所述訪問沖突消息包括所述被修改的待檢查數據的存儲地址,以使得所述虛擬機確定修改所述被修改的待存儲數據的進程是否為安全進程。
[0041]本發(fā)明提供的實現虛擬機自省的方法和裝置,在讀取所述待檢查數據的過程中可以通過硬件事務內存監(jiān)控已讀取的待檢查數據是否被修改,若在讀取所述待檢查數據的過程中,未監(jiān)測到已讀取的待檢查數據中存在被修改數據,則說明所述副本與虛擬機中的待檢查數據一致,此時,可以對所述副本進行安全檢查,若在讀取所述待檢查數據的過程中,監(jiān)測到已讀取的待檢查數據中存在被修改數據,則停止讀取所述待檢查數據并刪除所述副本,即不對所述待檢查數據進行安全檢查,這樣,增加安全檢查的準確性。
[0042]另外,本發(fā)明還記載了在讀取所述待檢查數據之前,首先判斷所述待檢查數據的鎖是否處于釋放狀態(tài),只有在所述鎖處于釋放狀態(tài)時,才讀取所述待檢查數據,這樣,保證了在開始讀取所述待檢查數據時,沒有其他進程對所述待檢查數據進行訪問,減少了訪問沖突的發(fā)生次數,進而降低了在所述讀取過程中已讀取的待檢查數據被修改的概率;進一步的,還可以讀取所述鎖對應的鎖數據,即所述副本包括所述鎖數據,這樣,在讀取完成所述鎖數據后,所述鎖數據在虛擬機中的存儲地址便被存儲到硬件事務內存中,所述硬件事務內存還對所述鎖數據進行監(jiān)測,若在讀取所述待檢查數據的過程中,未監(jiān)測到已讀取的待檢查數據中存在被修改數據,則不僅可以說明所述副本與虛擬機中的待檢查數據一致,而且還可以說明在讀取所述待檢查數據的過程中,不存在其他進程訪問所述待檢查數據,進而更加嚴格的保證了所述副本與虛擬機中的待檢查數據的一致性。
[0043]再有,本發(fā)明還記載了若在所述讀取的過程中所述已讀取的待檢查數據被修改,則獲取所述已讀取的待檢查數據中被修改數據的存儲地址,并向所述虛擬機發(fā)送訪問沖突消息,所述虛擬機可以根據訪問沖突消息中的所述被修改數據的存儲地址立即定位到發(fā)生沖突訪問的位置,并確定修改所述被修改數據的進程是否為安全進程,這樣,加快了虛擬機確定發(fā)生沖突訪問的位置,進而提高了檢查出惡意軟件的效率,進而增