亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種數(shù)據(jù)訪問方法、代碼調(diào)用方法及虛擬機監(jiān)視器與流程

文檔序號:12123195閱讀:201來源:國知局
一種數(shù)據(jù)訪問方法、代碼調(diào)用方法及虛擬機監(jiān)視器與流程

本發(fā)明涉及計算機內(nèi)存管理技術領域,具體涉及了一種數(shù)據(jù)訪問方法、代碼調(diào)用方法及虛擬機監(jiān)視器VMM。



背景技術:

現(xiàn)代操作系統(tǒng)幾乎都支持模塊的動態(tài)插入與卸載,這使得操作系統(tǒng)內(nèi)核可以按需拓展功能。當目標內(nèi)核模塊插入操作系統(tǒng)內(nèi)核后,其行為就不再受到監(jiān)控與限制。被加載的目標內(nèi)核模塊與操作系統(tǒng)內(nèi)核運行在相同特權級,目標內(nèi)核模塊可以任意調(diào)用操作系統(tǒng)內(nèi)核提供的代碼并修改操作系統(tǒng)內(nèi)核數(shù)據(jù),致使操作系統(tǒng)內(nèi)核完整性面臨安全威脅。

以在操作系統(tǒng)內(nèi)核添加驅(qū)動程序模塊為例,目前,開發(fā)人員一般通過在操作系統(tǒng)內(nèi)核以及驅(qū)動程序模塊之間添加一個驅(qū)動隔離層,從而達到隔離操作系統(tǒng)內(nèi)核與驅(qū)動程序模塊的目的,但是,由于該驅(qū)動隔離層位于操作系統(tǒng)內(nèi)核空間中,與操作系統(tǒng)內(nèi)核空間中的驅(qū)動程序模塊位于同一特權級,因此,驅(qū)動程序模塊可以修改該驅(qū)動程序模塊的頁表中的權限映射關系,修改后的權限映射關系能夠使驅(qū)動隔離層的隔離功能失效,使得操作系統(tǒng)處于不安全狀態(tài),并且由于該驅(qū)動隔離層對每個內(nèi)核設備的驅(qū)動程序模塊均進行隔離,將嚴重影響系統(tǒng)性能。



技術實現(xiàn)要素:

本發(fā)明實施例提供一種數(shù)據(jù)訪問方法、代碼調(diào)用方法及VMM,以期提升系統(tǒng)內(nèi)核數(shù)據(jù)訪問和代碼調(diào)用的安全性。

本發(fā)明實施例第一方面公開了一種數(shù)據(jù)訪問方法,包括:

虛擬機監(jiān)視器VMM捕獲頁表中斷事件,所述頁表中斷事件是由中央處理單元CPU在檢測到目標內(nèi)核模塊發(fā)送的針對內(nèi)核空間K-SPACE中的內(nèi)核數(shù)據(jù) 的訪問請求之后、且判斷出隔離空間頁表MPGT中未創(chuàng)建所述目標內(nèi)核模塊對所述K-SPACE中的內(nèi)核數(shù)據(jù)的訪問權限映射的情況下產(chǎn)生的,其中,所述VMM對應的虛擬機內(nèi)核空間包括所述K-SPACE和隔離空間M-SPACE,所述M-SPACE包括所述目標內(nèi)核模塊和所述MPGT,所述MPGT用于支持所述目標內(nèi)核模塊的運行;

所述VMM通過預存的頁表中斷處理函數(shù)判斷所述目標內(nèi)核模塊是否有權限訪問所述K-SPACE中的內(nèi)核數(shù)據(jù);

當所述VMM通過預存的頁表中斷處理函數(shù)判斷出所述目標內(nèi)核模塊有權限訪問所述K-SPACE中的內(nèi)核數(shù)據(jù)時,所述VMM在所述MPGT中創(chuàng)建所述目標內(nèi)核模塊對所述K-SPACE中的內(nèi)核數(shù)據(jù)的訪問權限映射,以使得所述目標內(nèi)核模塊有權限訪問所述K-SPACE中的內(nèi)核數(shù)據(jù)。

本發(fā)明實施例第一方面第一種可能的實現(xiàn)方式中,所述VMM通過預存的頁表中斷處理函數(shù)判斷所述目標內(nèi)核模塊是否有權限訪問所述K-SPACE中的內(nèi)核數(shù)據(jù),包括:

所述VMM通過預存的頁表中斷函數(shù)獲取所述頁表中斷事件對應的預設權限判斷策略,并獲取所述K-SPACE中的內(nèi)核數(shù)據(jù)的虛擬地址分布信息;

所述VMM確定所述頁表中斷事件的事件類型;

所述VMM根據(jù)所述預設權限判斷策略、所述虛擬地址分布信息以及所述事件類型判斷所述目標內(nèi)核模塊是否有權限訪問所述K-SPACE中的內(nèi)核數(shù)據(jù)。

結合本發(fā)明實施例第一方面或第一方面第一種可能的實現(xiàn)方式,在本發(fā)明實施例第一方面第二種可能的實現(xiàn)方式中,所述VMM捕獲頁表中斷事件之前,所述方法還包括:

所述VMM根據(jù)預存的所述虛擬機內(nèi)核空間的空間頁表將所述目標內(nèi)核模塊的虛擬地址分布信息映射為物理地址分布信息,其中,所述目標內(nèi)核模塊為從所述虛擬機內(nèi)核空間中插入的N個內(nèi)核模塊中選取的需要被隔離的內(nèi)核模塊,所述N為正整數(shù);

所述VMM基于所述物理地址分布信息分隔所述虛擬機內(nèi)核空間為所述M-SPACE和所述K-SPACE;

所述VMM標記所述虛擬機內(nèi)核空間的空間頁表為內(nèi)核空間頁表KPGT,并基于所述物理地址分布信息創(chuàng)建所述MPGT,其中,所述KPGT用于支持所述K-SPACE中的內(nèi)核模塊的運行,所述K-SPACE中的內(nèi)核模塊包括所述虛擬機內(nèi)核空間中的基礎內(nèi)核模塊和所述N個內(nèi)核模塊中除所述目標內(nèi)核模塊之外的內(nèi)核模塊

結合本發(fā)明實施例第一方面或第一方面第一種或第二種可能的實現(xiàn)方式,在本發(fā)明實施例第一方面第三種可能的實現(xiàn)方式中,所述MPGT中創(chuàng)建有所述目標內(nèi)核模塊對所述M-SPACE中的內(nèi)核數(shù)據(jù)的訪問權限映射,以使得所述目標內(nèi)核模塊有權限訪問所述M-SPACE中的內(nèi)核數(shù)據(jù)。

本發(fā)明實施例第二方面公開了一種VMM,包括:

事件捕獲單元,用于捕獲頁表中斷事件,所述頁表中斷事件是由CPU在檢測到目標內(nèi)核模塊發(fā)送的針對內(nèi)核空間K-SPACE中的內(nèi)核數(shù)據(jù)的訪問請求之后、且判斷出隔離空間頁表MPGT中未創(chuàng)建所述目標內(nèi)核模塊對所述K-SPACE中的內(nèi)核數(shù)據(jù)的訪問權限映射的情況下產(chǎn)生的,其中,所述VMM對應的虛擬機內(nèi)核空間包括所述K-SPACE和隔離空間M-SPACE,所述M-SPACE包括所述目標內(nèi)核模塊和所述MPGT,所述MPGT用于支持所述目標內(nèi)核模塊的運行;

權限判斷單元,用于通過預存的頁表中斷處理函數(shù)判斷所述目標內(nèi)核模塊是否有權限訪問所述K-SPACE中的內(nèi)核數(shù)據(jù);

權限創(chuàng)建單元,用于當所述權限判斷單元通過預存的頁表中斷處理函數(shù)判斷出所述目標內(nèi)核模塊有權限訪問所述K-SPACE中的內(nèi)核數(shù)據(jù)時,在所述MPGT中創(chuàng)建所述目標內(nèi)核模塊對所述K-SPACE中的內(nèi)核數(shù)據(jù)的訪問權限映射,以使得所述目標內(nèi)核模塊有權限訪問所述K-SPACE中的內(nèi)核數(shù)據(jù)。

本發(fā)明實施例第二方面第一種可能的實現(xiàn)方式中,所述權限判斷單元具體用于:

通過預存的頁表中斷函數(shù)獲取所述頁表中斷事件對應的預設權限判斷策略,并獲取所述K-SPACE中的內(nèi)核數(shù)據(jù)的虛擬地址分布信息;

確定所述頁表中斷事件的事件類型;

根據(jù)所述預設權限判斷策略、所述虛擬地址分布信息以及所述事件類型判 斷所述目標內(nèi)核模塊是否有權限訪問所述K-SPACE中的內(nèi)核數(shù)據(jù)。

結合本發(fā)明實施例第二方面或第二方面第一種可能的實現(xiàn)方式中,在本發(fā)明實施例第二方面第二種可能的實現(xiàn)方式中,所述VMM還包括:

地址映射單元,用于在所述事件捕獲單元捕獲頁表中斷事件之前之前,根據(jù)預存的所述虛擬機內(nèi)核空間的空間頁表將所述目標內(nèi)核模塊的虛擬地址分布信息映射為物理地址分布信息,其中,所述目標內(nèi)核模塊為從所述虛擬機內(nèi)核空間中插入的N個內(nèi)核模塊中選取的需要被隔離的內(nèi)核模塊,所述N為正整數(shù);

空間分隔單元,用于基于所述物理地址分布信息分隔所述虛擬機內(nèi)核空間為所述M-SPACE和所述K-SPACE;

頁表創(chuàng)建單元,用于標記所述虛擬機內(nèi)核空間的空間頁表為內(nèi)核空間頁表KPGT,并基于所述物理地址分布信息創(chuàng)建所述MPGT,其中,所述KPGT用于支持所述K-SPACE中的內(nèi)核模塊的運行,所述K-SPACE中的內(nèi)核模塊包括所述虛擬機內(nèi)核空間中的基礎內(nèi)核模塊和所述N個內(nèi)核模塊中除所述目標內(nèi)核模塊之外的內(nèi)核模塊。

結合本發(fā)明實施例第二方面或第二方面第一種或第二種可能的實現(xiàn)方式中,在本發(fā)明實施例第二方面第三種可能的實現(xiàn)方式中,所述MPGT中創(chuàng)建有所述目標內(nèi)核模塊對所述M-SPACE中的內(nèi)核數(shù)據(jù)的訪問權限映射,以使得所述目標內(nèi)核模塊有權限訪問所述M-SPACE中的內(nèi)核數(shù)據(jù)。

本發(fā)明實施例中,VMM首先捕獲頁表中斷事件,其次,VMM通過預存的頁表中斷處理函數(shù)判斷目標內(nèi)核模塊是否有權限訪問K-SPACE中的內(nèi)核數(shù)據(jù),最后,當VMM通過預存的頁表中斷處理函數(shù)判斷出目標內(nèi)核模塊有權限訪問K-SPACE中的內(nèi)核數(shù)據(jù)時,VMM在MPGT中創(chuàng)建目標內(nèi)核模塊對K-SPACE中的內(nèi)核數(shù)據(jù)的訪問權限映射,以使得目標內(nèi)核模塊有權限訪問K-SPACE中的內(nèi)核數(shù)據(jù)。由于上述頁表中斷事件是CPU在檢測到目標內(nèi)核模塊發(fā)送的針對內(nèi)核空間K-SPACE中的內(nèi)核數(shù)據(jù)的訪問請求之后、且判斷出隔離空間頁表MPGT中未創(chuàng)建目標內(nèi)核模塊對所述K-SPACE中的內(nèi)核數(shù)據(jù)的訪問權限映射的情況下產(chǎn)生的,可見,目標內(nèi)核模塊無權限直接訪問K-SPACE空間中內(nèi)核數(shù)據(jù),從而 能夠避免目標內(nèi)核模塊在安全性未知的情況下肆意訪問K-SPACE中的內(nèi)核數(shù)據(jù),有利于提升系統(tǒng)內(nèi)核數(shù)據(jù)訪問的安全性。

同時,由于VMM相對于虛擬機操作系統(tǒng)擁有更高的運行權限,故而在虛擬化環(huán)境下,具備更高特權級VMM在執(zhí)行權限上與虛擬機之間相互隔離,不會受到虛擬機的直接攻擊。

同時,由于VMM具有客戶機平臺無關性,可以同時對多個不同類型的客戶操作系統(tǒng)的內(nèi)核模塊進行隔離。

本發(fā)明實施例第三方面公開了一種代碼調(diào)用方法,包括:

虛擬機監(jiān)視器VMM捕獲頁表中斷事件,所述頁表中斷事件是由中央處理單元CPU在檢測到目標內(nèi)核模塊針對內(nèi)核空間K-SPACE中的內(nèi)核代碼的調(diào)用請求之后、且判斷出隔離空間頁表MPGT中未創(chuàng)建所述目標內(nèi)核模塊對所述K-SPACE中的內(nèi)核代碼的調(diào)用權限映射的情況下生成的,其中,所述VMM對應的虛擬機內(nèi)核空間包括所述K-SPACE和隔離空間M-SPACE,所述M-SPACE包括所述目標內(nèi)核模塊和所述MPGT,所述MPGT用于支持所述目標內(nèi)核模塊的運行;

所述VMM通過預存的頁表中斷處理函數(shù)判斷所述目標內(nèi)核模塊是否有權限調(diào)用所述K-SPACE中的內(nèi)核代碼;

當所述VMM通過預存的頁表中斷處理函數(shù)判斷出所述目標內(nèi)核模塊有權限調(diào)用所述K-SPACE中的內(nèi)核代碼時,所述VMM根據(jù)所述目標內(nèi)核模塊對所述K-SPACE中的內(nèi)核代碼的調(diào)用權限映射,執(zhí)行頁表切換操作和堆棧切換操作以將所述虛擬機內(nèi)核空間的堆棧由隔離空間堆棧M-STACK切換為內(nèi)核空間堆棧K-STACK,以使得所述目標內(nèi)核模塊基于切換后的所述K-STACK調(diào)用所述K-SPACE中的內(nèi)核代碼。

本發(fā)明實施例第三方面第一種可能的實現(xiàn)方式中,所述VMM通過預存的頁表中斷處理函數(shù)判斷所述目標內(nèi)核模塊是否有權限調(diào)用所述K-SPACE中的內(nèi)核代碼,包括:

所述VMM通過預存的頁表中斷函數(shù)獲取所述頁表中斷事件對應的預設權限判斷策略,并獲取所述K-SPACE中的內(nèi)核代碼的虛擬地址分布信息;

所述VMM根據(jù)獲取的所述預設權限判斷策略和所述虛擬地址分布信息判斷所述目標內(nèi)核模塊是否有權限訪問所述K-SPACE中的內(nèi)核代碼。

結合本發(fā)明實施例第三方面或第三方面第一種可能的實現(xiàn)方式,在本發(fā)明實施例第三方面第二種可能的實現(xiàn)方式中,所述VMM執(zhí)行頁表頁表切換操作,包括:

所述VMM將所述VMM當前加載的頁表由所述MPGT切換為內(nèi)核空間頁表KPGT,其中,所述KPGT用于支持所述K-SPACE中的內(nèi)核模塊的運行,所述K-SPACE中包括所述虛擬機內(nèi)核空間中的基礎內(nèi)核模塊、所述虛擬機內(nèi)核空間中插入的N個內(nèi)核模塊中除所述目標內(nèi)核模塊之外的內(nèi)核模塊以及所述KPGT,所述N為大于1的正整數(shù)。

結合本發(fā)明實施例第三方面或第三方面第一種或第二種可能的實現(xiàn)方式,在本發(fā)明實施例第三方面第三種可能的實現(xiàn)方式中,所述VMM執(zhí)行堆棧切換操作,包括:

所述VMM拷貝M-STACK中存儲的用于傳遞所述K-SPACE中的內(nèi)核代碼的代碼參數(shù)和用于調(diào)用所述K-SPACE中的內(nèi)核代碼的返回地址RIP;

所述VMM在所述K-STACK中寫入所述代碼參數(shù)和所述RIP;

所述VMM將所述虛擬機內(nèi)核空間當前使用的堆棧由esp-old位置轉變?yōu)閑sp-new位置,其中,所述esp-old位置為所述RIP在所述M-STACK中的存儲位置,所述esp-new位置為所述RIP在所述K-STACK中的存儲位置。

結合本發(fā)明實施例第三方面或第三方面第一種或第二種或第三種可能的實現(xiàn)方式,在本發(fā)明實施例第三方面第四種可能的實現(xiàn)方式中,所述VMM捕獲頁表中斷事件之前,所述方法還包括:

所述VMM根據(jù)預存的所述虛擬機內(nèi)核空間的空間頁表將目標內(nèi)核模塊的虛擬地址分布信息映射為物理地址分布信息,其中,所述目標內(nèi)核模塊為從所述虛擬機內(nèi)核空間中插入的N個內(nèi)核模塊中選取的需要被隔離的內(nèi)核模塊,所述N為大于1的正整數(shù);

所述VMM基于所述物理地址分布信息分隔所述虛擬機內(nèi)核空間為所述M-SPACE和所述K-SPACE;

所述VMM標記所述虛擬機內(nèi)核空間的空間頁表為內(nèi)核空間頁表KPGT,并基于所述物理地址分布信息創(chuàng)建所述MPGT。

結合本發(fā)明實施例第三方面或第三方面第一種或第二種或第三種或第四種可能的實現(xiàn)方式,在本發(fā)明實施例第三方面第五種可能的實現(xiàn)方式中,所述MPGT中創(chuàng)建有所述目標內(nèi)核模塊對所述M-SPACE中的內(nèi)核代碼的調(diào)用權限映射,以使得所述目標內(nèi)核模塊有權限調(diào)用所述M-SPACE中的內(nèi)核代碼。

本發(fā)明實施例第四方面公開了一種VMM,包括:

事件捕獲單元,用于捕獲頁表中斷事件,所述頁表中斷事件是由中央處理單元CPU在檢測到目標內(nèi)核模塊針對內(nèi)核空間K-SPACE中的內(nèi)核代碼的調(diào)用請求之后、且判斷出隔離空間頁表MPGT中未創(chuàng)建所述目標內(nèi)核模塊對所述K-SPACE中的內(nèi)核代碼的調(diào)用權限映射的情況下生成的,其中,所述VMM對應的虛擬機內(nèi)核空間包括所述K-SPACE和隔離空間M-SPACE,所述M-SPACE包括所述目標內(nèi)核模塊和所述MPGT,所述MPGT用于支持所述目標內(nèi)核模塊的運行;

權限判斷單元,用于通過預存的頁表中斷處理函數(shù)判斷所述目標內(nèi)核模塊是否有權限調(diào)用所述K-SPACE中的內(nèi)核代碼;

切換單元,用于當所述權限判斷單元通過預存的頁表中斷處理函數(shù)判斷出所述目標內(nèi)核模塊有權限調(diào)用所述K-SPACE中的內(nèi)核代碼時,根據(jù)所述目標內(nèi)核模塊對所述K-SPACE中的內(nèi)核代碼的調(diào)用權限映射,執(zhí)行頁表切換操作和堆棧切換操作以將所述虛擬機內(nèi)核空間的堆棧由隔離空間堆棧M-STACK切換為內(nèi)核空間堆棧K-STACK,以使得所述目標內(nèi)核模塊基于切換后的所述K-STACK調(diào)用所述K-SPACE中的內(nèi)核代碼。

本發(fā)明實施例第四方面第一種可能的實現(xiàn)方式中,所述權限判斷單元具體用于:

通過預存的頁表中斷函數(shù)獲取所述頁表中斷事件對應的預設權限判斷策略,并獲取所述K-SPACE中的內(nèi)核代碼的虛擬地址分布信息;

根據(jù)獲取的所述預設權限判斷策略和所述虛擬地址分布信息判斷所述目標內(nèi)核模塊是否有權限訪問所述K-SPACE中的內(nèi)核代碼。

結合本發(fā)明實施例第四方面或第四方面第一種可能的實現(xiàn)方式,在本發(fā)明實施例第四方面第二種可能的實現(xiàn)方式中,所述切換單元具體用于:

將所述VMM當前加載的頁表由所述MPGT切換為內(nèi)核空間頁表KPGT,其中,所述KPGT用于支持所述K-SPACE中的內(nèi)核模塊的運行,所述K-SPACE中包括所述虛擬機內(nèi)核空間中的基礎內(nèi)核模塊、所述虛擬機內(nèi)核空間中插入的N個內(nèi)核模塊中除所述目標內(nèi)核模塊之外的內(nèi)核模塊以及所述KPGT,所述N為大于1的正整數(shù)。

結合本發(fā)明實施例第四方面或第四方面第一種或第二種可能的實現(xiàn)方式,在本發(fā)明實施例第四方面第三種可能的實現(xiàn)方式中,所述切換單元具體用于:

拷貝M-STACK中存儲的用于傳遞所述K-SPACE中的內(nèi)核代碼的代碼參數(shù)和用于調(diào)用所述K-SPACE中的內(nèi)核代碼的返回地址RIP;

在所述K-STACK中寫入所述代碼參數(shù)和所述RIP;

將所述虛擬機內(nèi)核空間當前使用的堆棧由esp-old位置轉變?yōu)閑sp-new位置,其中,所述esp-old位置為所述RIP在所述M-STACK中的存儲位置,所述esp-new位置為所述RIP在所述K-STACK中的存儲位置。

結合本發(fā)明實施例第四方面或第四方面第一種或第二種或第三種可能的實現(xiàn)方式,在本發(fā)明實施例第四方面第四種可能的實現(xiàn)方式中,所述VMM還包括:

地址映射單元,用于在所述事件捕獲單元捕獲頁表中斷事件之前,根據(jù)預存的所述虛擬機內(nèi)核空間的空間頁表將目標內(nèi)核模塊的虛擬地址分布信息映射為物理地址分布信息,其中,所述目標內(nèi)核模塊為從所述虛擬機內(nèi)核空間中插入的N個內(nèi)核模塊中選取的需要被隔離的內(nèi)核模塊,所述N為大于1的正整數(shù);

空間分隔單元,用于基于所述物理地址分布信息分隔所述虛擬機內(nèi)核空間為所述M-SPACE和所述K-SPACE;

頁表創(chuàng)建單元,用于標記所述虛擬機內(nèi)核空間的空間頁表為內(nèi)核空間頁表KPGT,并基于所述物理地址分布信息創(chuàng)建所述MPGT。

結合本發(fā)明實施例第四方面或第四方面第一種或第二種或第三種或第四 種可能的實現(xiàn)方式,在本發(fā)明實施例第四方面第五種可能的實現(xiàn)方式中,所述MPGT中創(chuàng)建有所述目標內(nèi)核模塊對所述M-SPACE中的內(nèi)核代碼的調(diào)用權限映射,以使得所述目標內(nèi)核模塊有權限調(diào)用所述M-SPACE中的內(nèi)核代碼。

本發(fā)明實施例中,VMM首先捕獲頁表中斷事件,其次,當VMM通過預存的頁表中斷處理函數(shù)判斷出目標內(nèi)核模塊有權限調(diào)用K-SPACE中的內(nèi)核代碼時,VMM根據(jù)目標內(nèi)核模塊對K-SPACE中的內(nèi)核代碼的調(diào)用權限映射,執(zhí)行頁表切換操作和堆棧切換操作以將虛擬機內(nèi)核空間的堆棧由隔離空間堆棧M-STACK切換為內(nèi)核空間堆棧K-STACK,以使得所述目標內(nèi)核模塊基于切換后的所述K-STACK調(diào)用所述K-SPACE中的內(nèi)核代碼。其中,上述頁表中斷事件是CPU在檢測到目標內(nèi)核模塊針對內(nèi)核空間K-SPACE中的內(nèi)核代碼的調(diào)用請求之后、且判斷出隔離空間頁表MPGT中未創(chuàng)建目標內(nèi)核模塊對K-SPACE中的內(nèi)核代碼的調(diào)用權限映射的情況下生成的,可見,目標內(nèi)核模塊無權限直接調(diào)用內(nèi)核代碼,能夠避免目標內(nèi)核模塊在安全性未知的情況下肆意調(diào)用K-SPACE中的內(nèi)核代碼,有利于提升系統(tǒng)內(nèi)核代碼調(diào)用的安全性。

同時,由于VMM相對于虛擬機操作系統(tǒng)擁有更高的運行權限,故而在虛擬化環(huán)境下,具備更高特權級VMM在執(zhí)行權限上與虛擬機之間相互隔離,不會受到虛擬機的直接攻擊。

同時,由于VMM具有客戶機平臺無關性,可以同時對多個不同類型的客戶操作系統(tǒng)的內(nèi)核模塊進行隔離。

附圖說明

為了更清楚地說明本發(fā)明實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1.1是本發(fā)明實施例公開的一種典型裸機模式虛擬化平臺部署架構圖;

圖1.2是本發(fā)明實施例公開的一種典型宿主模式虛擬化平臺部署架構圖;

圖2是本發(fā)明實施例公開的一種數(shù)據(jù)訪問方法的流程示意圖;

圖3是本發(fā)明實施例公開的另一種數(shù)據(jù)訪問方法的流程示意圖;

圖4是本發(fā)明實施例公開的有一種數(shù)據(jù)訪問方法的流程示意圖;

圖5是本發(fā)明實施例公開的一種代碼調(diào)用方法的流程示意圖;

圖6是本發(fā)明實施例公開的另一種代碼調(diào)用方法的流程示意圖;

圖7是本發(fā)明實施例公開的又一種代碼調(diào)用方法的流程示意圖;

圖8是本發(fā)明實施例公開的一種用于控制M-SPACE中的目標內(nèi)核模塊對K-SPACE中的內(nèi)核數(shù)據(jù)的訪問的VMM的結構示意圖;

圖9是本發(fā)明實施例公開的一種用于控制M-SPACE中的目標內(nèi)核模塊對K-SPACE中的內(nèi)核代碼的調(diào)用VMM的結構示意圖;

圖10是本發(fā)明實施例公開的一種VMM的實體裝置結構示意圖;

圖11是本發(fā)明實施例公開的一種VMM的實體裝置結構示意圖。

具體實施方式

下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分的實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應當屬于本發(fā)明保護的范圍。

本發(fā)明實施例提供一種數(shù)據(jù)訪問方法、代碼調(diào)用方法及虛擬機監(jiān)視器(Virtual Machine Monitor,VMM),以期提升系統(tǒng)內(nèi)核數(shù)據(jù)訪問和代碼調(diào)用的安全性。

為了便于理解本發(fā)明實施例,下面先對本發(fā)明實施例的網(wǎng)絡架構進行描述。請參閱圖1.1和圖1.2,圖1.1是本發(fā)明實施例公開的一種典型裸機模式虛擬化平臺部署架構圖,圖1.2是本發(fā)明實施例公開的一種典型宿主模式虛擬化平臺部署架構圖。如圖1.1和圖1.2所示,兩種模式中的虛擬機操作系統(tǒng)都運行在VMM之上,VMM擁有比虛擬機操作系統(tǒng)更高的執(zhí)行權限,且兩者之間相互隔離。虛擬機操作系統(tǒng)內(nèi)核可以進一步劃分為代碼部分、數(shù)據(jù)部分、內(nèi)核運行所需堆棧以及動態(tài)可加載的內(nèi)核模塊。附圖1.1所示的典型的裸機虛擬化模式(比如Xen)中,VMM直接運行在物理機之上,操作物理硬件,向上對虛擬機提 供服務。附圖1.2所示的典型宿主模式(比如KVM)中,VMM運行在宿主機操作系統(tǒng)之上,其虛擬化功能需要借助于宿主機實現(xiàn),宿主機直接控制下層硬件資源。

參閱圖2,圖2是本發(fā)明實施例公開的一種數(shù)據(jù)訪問方法的流程示意圖,如圖2所示,該數(shù)據(jù)訪問方法是從VMM單側進行描述的,具體包括以下步驟:

S201,VMM捕獲頁表中斷事件,所述頁表中斷事件是由CPU在檢測到目標內(nèi)核模塊發(fā)送的針對內(nèi)核空間K-SPACE中的內(nèi)核數(shù)據(jù)的訪問請求之后、且判斷出隔離空間頁表MPGT中未創(chuàng)建所述目標內(nèi)核模塊對所述K-SPACE中的內(nèi)核數(shù)據(jù)的訪問權限映射的情況下產(chǎn)生的,其中,所述VMM對應的虛擬機內(nèi)核空間包括所述K-SPACE和隔離空間M-SPACE,所述M-SPACE包括所述目標內(nèi)核模塊和所述MPGT,所述MPGT用于支持所述目標內(nèi)核模塊的運行;

本發(fā)明實施例中,上述MPGT中創(chuàng)建有所述目標內(nèi)核模塊對所述M-SPACE中的內(nèi)核數(shù)據(jù)的訪問權限映射,以使得所述目標內(nèi)核模塊有權限訪問所述M-SPACE中的內(nèi)核數(shù)據(jù)。

S202,所述VMM通過預存的頁表中斷處理函數(shù)判斷所述目標內(nèi)核模塊是否有權限訪問所述K-SPACE中的內(nèi)核數(shù)據(jù);

本發(fā)明實施例中,上述VMM通過預存的頁表中斷處理函數(shù)判斷所述目標內(nèi)核模塊是否有權限訪問所述K-SPACE中的內(nèi)核數(shù)據(jù)的具體方式為:

所述VMM首先通過預存的頁表中斷函數(shù)獲取所述頁表中斷事件對應的預設權限判斷策略,并獲取所述K-SPACE中的內(nèi)核數(shù)據(jù)的虛擬地址分布信息;其次,VMM確定所述頁表中斷事件的事件類型;最后,VMM根據(jù)所述預設權限判斷策略、所述虛擬地址分布信息以及所述事件類型判斷所述目標內(nèi)核模塊是否有權限訪問所述K-SPACE中的內(nèi)核數(shù)據(jù)。

S203,當所述VMM通過預存的頁表中斷處理函數(shù)判斷出所述目標內(nèi)核模塊有權限訪問所述K-SPACE中的內(nèi)核數(shù)據(jù)時,所述VMM在所述MPGT中創(chuàng)建所述目標內(nèi)核模塊對所述K-SPACE中的內(nèi)核數(shù)據(jù)的訪問權限映射,以使得所述目標內(nèi)核模塊有權限訪問所述K-SPACE中的內(nèi)核數(shù)據(jù)。

可以看出,本發(fā)明實施例中,VMM首先捕獲頁表中斷事件,其次,VMM 通過預存的頁表中斷處理函數(shù)判斷目標內(nèi)核模塊是否有權限訪問K-SPACE中的內(nèi)核數(shù)據(jù),最后,當VMM通過預存的頁表中斷處理函數(shù)判斷出目標內(nèi)核模塊有權限訪問K-SPACE中的內(nèi)核數(shù)據(jù)時,VMM在MPGT中創(chuàng)建目標內(nèi)核模塊對K-SPACE中的內(nèi)核數(shù)據(jù)的訪問權限映射,以使得目標內(nèi)核模塊有權限訪問K-SPACE中的內(nèi)核數(shù)據(jù)。由于上述頁表中斷事件是CPU在檢測到目標內(nèi)核模塊發(fā)送的針對內(nèi)核空間K-SPACE中的內(nèi)核數(shù)據(jù)的訪問請求之后、且判斷出隔離空間頁表MPGT中未創(chuàng)建目標內(nèi)核模塊對所述K-SPACE中的內(nèi)核數(shù)據(jù)的訪問權限映射的情況下產(chǎn)生的,可見,目標內(nèi)核模塊無權限直接訪問K-SPACE空間中內(nèi)核數(shù)據(jù),從而能夠避免目標內(nèi)核模塊在安全性未知的情況下肆意訪問K-SPACE中的內(nèi)核數(shù)據(jù),有利于提升系統(tǒng)內(nèi)核數(shù)據(jù)訪問的安全性。

同時,由于VMM相對于虛擬機操作系統(tǒng)擁有更高的運行權限,故而在虛擬化環(huán)境下,具備更高特權級VMM在執(zhí)行權限上與虛擬機之間相互隔離,不會受到虛擬機的直接攻擊。

同時,由于VMM具有客戶機平臺無關性,可以同時對多個不同類型的客戶操作系統(tǒng)的內(nèi)核模塊進行隔離。

可選的,本發(fā)明實施例中,上述VMM捕獲頁表中斷事件之前,還可以執(zhí)行以下操作以針對目標內(nèi)核模塊創(chuàng)建內(nèi)核空間隔離機制:

所述VMM根據(jù)預存的所述虛擬機內(nèi)核空間的空間頁表將所述目標內(nèi)核模塊的虛擬地址分布信息映射為物理地址分布信息,其中,所述目標內(nèi)核模塊為從所述虛擬機內(nèi)核空間中插入的N個內(nèi)核模塊中選取的需要被隔離的內(nèi)核模塊,所述N為正整數(shù);

所述VMM基于所述物理地址分布信息分隔所述虛擬機內(nèi)核空間為所述M-SPACE和所述K-SPACE;

所述VMM標記所述虛擬機內(nèi)核空間的空間頁表為內(nèi)核空間頁表KPGT,并基于所述物理地址分布信息創(chuàng)建所述MPGT,其中,所述KPGT用于支持所述K-SPACE中的內(nèi)核模塊的運行,所述K-SPACE中的內(nèi)核模塊包括所述虛擬機內(nèi)核空間中的基礎內(nèi)核模塊和所述N個內(nèi)核模塊中除所述目標內(nèi)核模塊之外的內(nèi)核模塊。

參閱圖3,圖3是本發(fā)明實施例公開的一種數(shù)據(jù)訪問方法的流程示意圖,如圖3所示,該數(shù)據(jù)訪問方法是從VMM單側進行描述的,具體包括以下步驟:

S301,虛擬機監(jiān)視器VMM捕獲頁表中斷事件,所述頁表中斷事件是由中央處理單元CPU在檢測到目標內(nèi)核模塊發(fā)送的針對內(nèi)核空間K-SPACE中的內(nèi)核數(shù)據(jù)的訪問請求之后、且判斷出隔離空間頁表MPGT中未創(chuàng)建所述目標內(nèi)核模塊對所述K-SPACE中的內(nèi)核數(shù)據(jù)的訪問權限映射的情況下產(chǎn)生的,其中,所述VMM對應的虛擬機內(nèi)核空間包括所述K-SPACE和隔離空間M-SPACE,所述M-SPACE包括所述目標內(nèi)核模塊和所述MPGT,所述MPGT用于支持所述目標內(nèi)核模塊的運行;

本發(fā)明實施例中,上述MPGT中創(chuàng)建有所述目標內(nèi)核模塊對所述M-SPACE中的內(nèi)核數(shù)據(jù)的訪問權限映射,以使得所述目標內(nèi)核模塊有權限訪問所述M-SPACE中的內(nèi)核數(shù)據(jù)。

S302,所述VMM通過預存的頁表中斷函數(shù)獲取所述頁表中斷事件對應的預設權限判斷策略,并獲取所述K-SPACE中的內(nèi)核數(shù)據(jù)的虛擬地址分布信息;

S303,所述VMM確定所述頁表中斷事件的事件類型;

S304,所述VMM根據(jù)所述預設權限判斷策略、所述虛擬地址分布信息以及所述事件類型判斷所述目標內(nèi)核模塊是否有權限訪問所述K-SPACE中的內(nèi)核數(shù)據(jù);

S305,當所述VMM通過預存的頁表中斷處理函數(shù)判斷出所述目標內(nèi)核模塊有權限訪問所述K-SPACE中的內(nèi)核數(shù)據(jù)時,所述VMM在所述MPGT中創(chuàng)建所述目標內(nèi)核模塊對所述K-SPACE中的內(nèi)核數(shù)據(jù)的訪問權限映射,以使得所述目標內(nèi)核模塊有權限訪問所述K-SPACE中的內(nèi)核數(shù)據(jù)。

可以看出,本發(fā)明實施例中,VMM首先捕獲頁表中斷事件,其次,VMM通過預存的頁表中斷處理函數(shù)判斷目標內(nèi)核模塊是否有權限訪問K-SPACE中的內(nèi)核數(shù)據(jù),最后,當VMM通過預存的頁表中斷處理函數(shù)判斷出目標內(nèi)核模塊有權限訪問K-SPACE中的內(nèi)核數(shù)據(jù)時,VMM在MPGT中創(chuàng)建目標內(nèi)核模塊對K-SPACE中的內(nèi)核數(shù)據(jù)的訪問權限映射,以使得目標內(nèi)核模塊有權限訪問K-SPACE中的內(nèi)核數(shù)據(jù)。由于上述頁表中斷事件是CPU在檢測到目標內(nèi)核模塊 發(fā)送的針對內(nèi)核空間K-SPACE中的內(nèi)核數(shù)據(jù)的訪問請求之后、且判斷出隔離空間頁表MPGT中未創(chuàng)建目標內(nèi)核模塊對所述K-SPACE中的內(nèi)核數(shù)據(jù)的訪問權限映射的情況下產(chǎn)生的,可見,目標內(nèi)核模塊無權限直接訪問K-SPACE空間中內(nèi)核數(shù)據(jù),從而能夠避免目標內(nèi)核模塊在安全性未知的情況下肆意訪問K-SPACE中的內(nèi)核數(shù)據(jù),有利于提升系統(tǒng)內(nèi)核數(shù)據(jù)訪問的安全性。

同時,由于VMM相對于虛擬機操作系統(tǒng)擁有更高的運行權限,故而在虛擬化環(huán)境下,具備更高特權級VMM在執(zhí)行權限上與虛擬機之間相互隔離,不會受到虛擬機的直接攻擊。

同時,由于VMM具有客戶機平臺無關性,可以同時對多個不同類型的客戶操作系統(tǒng)的內(nèi)核模塊進行隔離。

可選的,本發(fā)明實施例中,上述VMM捕獲頁表中斷事件之前,還可以執(zhí)行以下操作以針對目標內(nèi)核模塊創(chuàng)建內(nèi)核空間隔離機制:

所述VMM根據(jù)預存的所述虛擬機內(nèi)核空間的空間頁表將所述目標內(nèi)核模塊的虛擬地址分布信息映射為物理地址分布信息,其中,所述目標內(nèi)核模塊為從所述虛擬機內(nèi)核空間中插入的N個內(nèi)核模塊中選取的需要被隔離的內(nèi)核模塊,所述N為正整數(shù);

所述VMM基于所述物理地址分布信息分隔所述虛擬機內(nèi)核空間為所述M-SPACE和所述K-SPACE;

所述VMM標記所述虛擬機內(nèi)核空間的空間頁表為內(nèi)核空間頁表KPGT,并基于所述物理地址分布信息創(chuàng)建所述MPGT,其中,所述KPGT用于支持所述K-SPACE中的內(nèi)核模塊的運行,所述K-SPACE中的內(nèi)核模塊包括所述虛擬機內(nèi)核空間中的基礎內(nèi)核模塊和所述N個內(nèi)核模塊中除所述目標內(nèi)核模塊之外的內(nèi)核模塊。

可選的,本發(fā)明實施例中,上述VMM捕獲頁表中斷事件之前,還可以執(zhí)行以下操作以針對目標內(nèi)核模塊創(chuàng)建內(nèi)核空間隔離機制:

所述VMM根據(jù)預存的所述虛擬機內(nèi)核空間的空間頁表將所述目標內(nèi)核模塊的虛擬地址分布信息映射為物理地址分布信息,其中,所述目標內(nèi)核模塊為從所述虛擬機內(nèi)核空間中插入的N個內(nèi)核模塊中選取的需要被隔離的內(nèi)核模 塊,所述N為正整數(shù);

所述VMM基于所述物理地址分布信息分隔所述虛擬機內(nèi)核空間為所述M-SPACE和所述K-SPACE;

所述VMM標記所述虛擬機內(nèi)核空間的空間頁表為內(nèi)核空間頁表KPGT,并基于所述物理地址分布信息創(chuàng)建所述MPGT,其中,所述KPGT用于支持所述K-SPACE中的內(nèi)核模塊的運行,所述K-SPACE中的內(nèi)核模塊包括所述虛擬機內(nèi)核空間中的基礎內(nèi)核模塊和所述N個內(nèi)核模塊中除所述目標內(nèi)核模塊之外的內(nèi)核模塊。

參閱圖4,圖4是本發(fā)明實施例公開的一種數(shù)據(jù)訪問方法的流程示意圖,如圖4所示,該數(shù)據(jù)訪問方法是從VMM單側進行描述的,具體包括以下步驟:

S401,VMM根據(jù)預存的所述虛擬機內(nèi)核空間的空間頁表將所述目標內(nèi)核模塊的虛擬地址分布信息映射為物理地址分布信息,其中,所述目標內(nèi)核模塊為從所述虛擬機內(nèi)核空間中插入的N個內(nèi)核模塊中選取的需要被隔離的內(nèi)核模塊,所述N為正整數(shù);

S402,所述VMM基于所述物理地址分布信息分隔所述虛擬機內(nèi)核空間為所述M-SPACE和所述K-SPACE;

S403,所述VMM標記所述虛擬機內(nèi)核空間的空間頁表為內(nèi)核空間頁表KPGT,并基于所述物理地址分布信息創(chuàng)建所述MPGT,其中,所述KPGT用于支持所述K-SPACE中的內(nèi)核模塊的運行,所述K-SPACE中的內(nèi)核模塊包括所述虛擬機內(nèi)核空間中的基礎內(nèi)核模塊和所述N個內(nèi)核模塊中除所述目標內(nèi)核模塊之外的內(nèi)核模塊;

本發(fā)明實施例中,上述MPGT中創(chuàng)建有所述目標內(nèi)核模塊對所述M-SPACE中的內(nèi)核數(shù)據(jù)的訪問權限映射,以使得所述目標內(nèi)核模塊有權限訪問所述M-SPACE中的內(nèi)核數(shù)據(jù)。

S404,VMM捕獲頁表中斷事件,所述頁表中斷事件是由CPU在檢測到目標內(nèi)核模塊發(fā)送的針對內(nèi)核空間K-SPACE中的內(nèi)核數(shù)據(jù)的訪問請求之后、且判斷出隔離空間頁表MPGT中未創(chuàng)建所述目標內(nèi)核模塊對所述K-SPACE中的內(nèi)核數(shù)據(jù)的訪問權限映射的情況下產(chǎn)生的,其中,所述VMM對應的虛擬機內(nèi)核 空間包括所述K-SPACE和隔離空間M-SPACE,所述M-SPACE包括所述目標內(nèi)核模塊和所述MPGT,所述MPGT用于支持所述目標內(nèi)核模塊的運行;

S405,所述VMM通過預存的頁表中斷函數(shù)獲取所述頁表中斷事件對應的預設權限判斷策略,并獲取所述K-SPACE中的內(nèi)核數(shù)據(jù)的虛擬地址分布信息;

S406,所述VMM確定所述頁表中斷事件的事件類型;

S407,所述VMM根據(jù)所述預設權限判斷策略、所述虛擬地址分布信息以及所述事件類型判斷所述目標內(nèi)核模塊是否有權限訪問所述K-SPACE中的內(nèi)核數(shù)據(jù);

本發(fā)明實施例中,上述權限判斷策略可以由用戶預先設置并存儲在內(nèi)存空間中,上述頁表中斷事件對應的事件類型包括數(shù)據(jù)讀取類型和數(shù)據(jù)寫入類型。

舉例來說,假設目標內(nèi)核模塊對K-SPACE中的內(nèi)核數(shù)據(jù)的數(shù)據(jù)讀取類型對應的權限判斷策略中包括以下子策略:若目標內(nèi)核模塊向CPU的內(nèi)存管理單元請求數(shù)據(jù)讀取的內(nèi)核數(shù)據(jù)為K-SPACE中的中斷向量表,則內(nèi)存管理單元拒絕目標內(nèi)核模塊本次的數(shù)據(jù)讀取請求。

S408,當所述VMM通過預存的頁表中斷處理函數(shù)判斷出所述目標內(nèi)核模塊有權限訪問所述K-SPACE中的內(nèi)核數(shù)據(jù)時,所述VMM在所述MPGT中創(chuàng)建所述目標內(nèi)核模塊對所述K-SPACE中的內(nèi)核數(shù)據(jù)的訪問權限映射,以使得所述目標內(nèi)核模塊有權限訪問所述K-SPACE中的內(nèi)核數(shù)據(jù)。

可以看出,本發(fā)明實施例中,VMM首先捕獲頁表中斷事件,其次,VMM通過預存的頁表中斷處理函數(shù)判斷目標內(nèi)核模塊是否有權限訪問K-SPACE中的內(nèi)核數(shù)據(jù),最后,當VMM通過預存的頁表中斷處理函數(shù)判斷出目標內(nèi)核模塊有權限訪問K-SPACE中的內(nèi)核數(shù)據(jù)時,VMM在MPGT中創(chuàng)建目標內(nèi)核模塊對K-SPACE中的內(nèi)核數(shù)據(jù)的訪問權限映射,以使得目標內(nèi)核模塊有權限訪問K-SPACE中的內(nèi)核數(shù)據(jù)。由于上述頁表中斷事件是CPU在檢測到目標內(nèi)核模塊發(fā)送的針對內(nèi)核空間K-SPACE中的內(nèi)核數(shù)據(jù)的訪問請求之后、且判斷出隔離空間頁表MPGT中未創(chuàng)建目標內(nèi)核模塊對所述K-SPACE中的內(nèi)核數(shù)據(jù)的訪問權限映射的情況下產(chǎn)生的,可見,目標內(nèi)核模塊無權限直接訪問K-SPACE空間中內(nèi)核數(shù)據(jù),從而能夠避免目標內(nèi)核模塊在安全性未知的情況下肆意訪問 K-SPACE中的內(nèi)核數(shù)據(jù),有利于提升系統(tǒng)內(nèi)核數(shù)據(jù)訪問的安全性。

同時,由于VMM相對于虛擬機操作系統(tǒng)擁有更高的運行權限,故而在虛擬化環(huán)境下,具備更高特權級VMM在執(zhí)行權限上與虛擬機之間相互隔離,不會受到虛擬機的直接攻擊。

同時,由于VMM具有客戶機平臺無關性,可以同時對多個不同類型的客戶操作系統(tǒng)的內(nèi)核模塊進行隔離。

進一步可選的,本發(fā)明實施例中,上述VMM根據(jù)預存的虛擬機內(nèi)核空間的空間頁表將目標內(nèi)核模塊的虛擬地址分布信息映射為物理地址分布信息之前,VMM還可以執(zhí)行以下操作:

VMM獲取所述虛擬機內(nèi)核空間中的客戶代理模塊發(fā)送的目標內(nèi)核模塊在虛擬機內(nèi)核空間中的虛擬地址分布信息。

其中,該客戶代理模塊設置于K-SAPCE中,用于獲取需要目標內(nèi)核模塊在虛擬機內(nèi)核空間中的虛擬地址分布信息,并向VMM發(fā)送獲取的上述虛擬地址分布信息,以便于VMM基于上述虛擬地址分布信息建立上述目標內(nèi)核模塊的隔離地址空間。其中,上述客戶代理獲取虛擬地址分布信息的具體實現(xiàn)方式包括以下兩種:

當檢測到上述目標內(nèi)核模塊在虛擬機中尚未開始運行時,上述客戶代理模塊攔截該目標內(nèi)核模塊插入時所調(diào)用的相關的系統(tǒng)調(diào)用,當檢測到目標內(nèi)核模塊插入時所調(diào)用的相關的系統(tǒng)調(diào)用時,客戶代理模塊獲取目標內(nèi)核模塊在加載進入虛擬機內(nèi)核空間后的虛擬地址分布信息{virt1,virt2}。例如,Windows虛擬機可以通過注冊回調(diào)函數(shù)的方式來獲取虛擬機中的內(nèi)存映像插入事件,根據(jù)映像名稱判斷是否是目標內(nèi)核模塊被加載到虛擬機內(nèi)核空間中。

當檢測到上述目標內(nèi)核模塊在虛擬機中已經(jīng)開始運行時,上述客戶代理模塊需要遍歷虛擬機內(nèi)核空間中的內(nèi)核模塊鏈表,獲取目標內(nèi)核模塊在虛擬機內(nèi)核空間中的虛擬地址分布信息{virt1,virt2}。

可以看出,本發(fā)明實施例中,上述客戶代理模塊位于K-SPACE中,與M-SPACE中的目標內(nèi)核模塊運行于不同內(nèi)核空間,因而不會受到來自目標內(nèi)核模塊的攻擊,有利于進一步提升系統(tǒng)內(nèi)核的安全性。

進一步可選的,本發(fā)明實施例中,上述VMM基于所述物理地址分布信息創(chuàng)建隔離空間頁表MPGT之后,上述VMM還可以執(zhí)行以下操作:

所述VMM刪除所述KPGT中存儲的所述K-SPACE中的內(nèi)核模塊所述M-SPACE中的內(nèi)核數(shù)據(jù)的訪問權限映射,以使得所述K-SPACE中的內(nèi)核模塊無法直接訪問M-SPACE中的內(nèi)核數(shù)據(jù),進一步增強系統(tǒng)內(nèi)核數(shù)據(jù)訪問的安全性。

請參閱圖5,圖5是本發(fā)明實施例公開的一種代碼調(diào)用方法的流程示意圖,如圖5所示,該代碼調(diào)用方法是從VMM單側進行描述的,具體包括以下步驟:

S501,虛擬機監(jiān)視器VMM捕獲頁表中斷事件,所述頁表中斷事件是由中央處理單元CPU在檢測到目標內(nèi)核模塊針對內(nèi)核空間K-SPACE中的內(nèi)核代碼的調(diào)用請求之后、且判斷出隔離空間頁表MPGT中未創(chuàng)建所述目標內(nèi)核模塊對所述K-SPACE中的內(nèi)核代碼的調(diào)用權限映射的情況下生成的,其中,所述VMM對應的虛擬機內(nèi)核空間包括所述K-SPACE和隔離空間M-SPACE,所述M-SPACE包括所述目標內(nèi)核模塊和所述MPGT,所述MPGT用于支持所述目標內(nèi)核模塊的運行;

本發(fā)明實施例中,所述MPGT中創(chuàng)建有所述目標內(nèi)核模塊對所述M-SPACE中的內(nèi)核代碼的調(diào)用權限映射,以使得所述目標內(nèi)核模塊有權限調(diào)用所述M-SPACE中的內(nèi)核代碼。

S502,所述VMM通過預存的頁表中斷處理函數(shù)判斷所述目標內(nèi)核模塊是否有權限調(diào)用所述K-SPACE中的內(nèi)核代碼;

本發(fā)明實施例中,上述VMM通過預存的頁表中斷處理函數(shù)判斷所述目標內(nèi)核模塊是否有權限調(diào)用所述K-SPACE中的內(nèi)核代碼的具體實施方式為:

所述VMM通過預存的頁表中斷函數(shù)獲取所述頁表中斷事件對應的預設權限判斷策略,并獲取所述K-SPACE中的內(nèi)核代碼的虛擬地址分布信息;

所述VMM根據(jù)獲取的所述預設權限判斷策略和所述虛擬地址分布信息判斷所述目標內(nèi)核模塊是否有權限訪問所述K-SPACE中的內(nèi)核代碼。

S503,當所述VMM通過預存的頁表中斷處理函數(shù)判斷出所述目標內(nèi)核模塊有權限調(diào)用所述K-SPACE中的內(nèi)核代碼時,所述VMM根據(jù)所述目標內(nèi)核模 塊對所述K-SPACE中的內(nèi)核代碼的調(diào)用權限映射,執(zhí)行頁表切換操作和堆棧切換操作以將所述虛擬機內(nèi)核空間的堆棧由隔離空間堆棧M-STACK切換為內(nèi)核空間堆棧K-STACK,以使得所述目標內(nèi)核模塊基于切換后的所述K-STACK調(diào)用所述K-SPACE中的內(nèi)核代碼。

本發(fā)明實施例中,上述VMM執(zhí)行頁表頁表切換操作的具體實施方式為:

所述VMM將所述VMM當前加載的頁表由所述MPGT切換為內(nèi)核空間頁表KPGT,其中,所述KPGT用于支持所述K-SPACE中的內(nèi)核模塊的運行,所述K-SPACE中包括所述虛擬機內(nèi)核空間中的基礎內(nèi)核模塊、所述虛擬機內(nèi)核空間中插入的N個內(nèi)核模塊中除所述目標內(nèi)核模塊之外的內(nèi)核模塊以及所述KPGT,所述N為大于1的正整數(shù)。

上述VMM執(zhí)行堆棧切換操作的具體實施方式為:

所述VMM拷貝M-STACK中存儲的用于傳遞所述K-SPACE中的內(nèi)核代碼的代碼參數(shù)和用于調(diào)用所述K-SPACE中的內(nèi)核代碼的返回地址RIP;

所述VMM在所述K-STACK中寫入所述代碼參數(shù)和所述RIP;

所述VMM將所述虛擬機內(nèi)核空間當前使用的堆棧由esp-old位置轉變?yōu)閑sp-new位置,其中,所述esp-old位置為所述RIP在所述M-STACK中的存儲位置,所述esp-new位置為所述RIP在所述K-STACK中的存儲位置。

可以看出,本發(fā)明實施例中,VMM首先捕獲頁表中斷事件,其次,當VMM通過預存的頁表中斷處理函數(shù)判斷出目標內(nèi)核模塊有權限調(diào)用K-SPACE中的內(nèi)核代碼時,VMM根據(jù)目標內(nèi)核模塊對K-SPACE中的內(nèi)核代碼的調(diào)用權限映射,執(zhí)行頁表切換操作和堆棧切換操作以將虛擬機內(nèi)核空間的堆棧由隔離空間堆棧M-STACK切換為內(nèi)核空間堆棧K-STACK,以使得所述目標內(nèi)核模塊基于切換后的所述K-STACK調(diào)用所述K-SPACE中的內(nèi)核代碼。其中,上述頁表中斷事件是CPU在檢測到目標內(nèi)核模塊針對內(nèi)核空間K-SPACE中的內(nèi)核代碼的調(diào)用請求之后、且判斷出隔離空間頁表MPGT中未創(chuàng)建目標內(nèi)核模塊對K-SPACE中的內(nèi)核代碼的調(diào)用權限映射的情況下生成的,可見,目標內(nèi)核模塊無權限直接調(diào)用K-SPACE中的內(nèi)核代碼,能夠避免目標內(nèi)核模塊在安全性未知的情況下肆意調(diào)用K-SPACE中的內(nèi)核代碼,有利于提升系統(tǒng)內(nèi)核代碼調(diào)用的安 全性。

同時,由于VMM相對于虛擬機操作系統(tǒng)擁有更高的運行權限,故而在虛擬化環(huán)境下,具備更高特權級VMM在執(zhí)行權限上與虛擬機之間相互隔離,不會受到虛擬機的直接攻擊。

同時,由于VMM具有客戶機平臺無關性,可以同時對多個不同類型的客戶操作系統(tǒng)的內(nèi)核模塊進行隔離。

可選的,本發(fā)明實施例中,上述VMM捕獲頁表中斷事件之前,還可以執(zhí)行以下操作以創(chuàng)建針對目標內(nèi)核模塊的隔離機制:

所述VMM根據(jù)預存的所述虛擬機內(nèi)核空間的空間頁表將目標內(nèi)核模塊的虛擬地址分布信息映射為物理地址分布信息,其中,所述目標內(nèi)核模塊為從所述虛擬機內(nèi)核空間中插入的N個內(nèi)核模塊中選取的需要被隔離的內(nèi)核模塊,所述N為大于1的正整數(shù);

所述VMM基于所述物理地址分布信息分隔所述虛擬機內(nèi)核空間為所述M-SPACE和所述K-SPACE;

所述VMM標記所述虛擬機內(nèi)核空間的空間頁表為內(nèi)核空間頁表KPGT,并基于所述物理地址分布信息創(chuàng)建所述MPGT。

請參閱圖6,圖6是本發(fā)明實施例公開的一種代碼調(diào)用方法的流程示意圖,如圖6所示,該代碼調(diào)用方法是從VMM單側進行描述的,具體包括以下步驟:

S601,虛擬機監(jiān)視器VMM捕獲頁表中斷事件,所述頁表中斷事件是由中央處理單元CPU在檢測到目標內(nèi)核模塊針對內(nèi)核空間K-SPACE中的內(nèi)核代碼的調(diào)用請求之后、且判斷出隔離空間頁表MPGT中未創(chuàng)建所述目標內(nèi)核模塊對所述K-SPACE中的內(nèi)核代碼的調(diào)用權限映射的情況下生成的,其中,所述VMM對應的虛擬機內(nèi)核空間包括所述K-SPACE和隔離空間M-SPACE,所述M-SPACE包括所述目標內(nèi)核模塊和所述MPGT,所述MPGT用于支持所述目標內(nèi)核模塊的運行;

本發(fā)明實施例中,所述MPGT中創(chuàng)建有所述目標內(nèi)核模塊對所述M-SPACE中的內(nèi)核代碼的調(diào)用權限映射,以使得所述目標內(nèi)核模塊有權限調(diào)用所述M-SPACE中的內(nèi)核代碼。

S602,所述VMM通過預存的頁表中斷函數(shù)獲取所述頁表中斷事件對應的預設權限判斷策略,并獲取所述K-SPACE中的內(nèi)核代碼的虛擬地址分布信息;

S603,所述VMM根據(jù)獲取的所述預設權限判斷策略和所述虛擬地址分布信息判斷所述目標內(nèi)核模塊是否有權限訪問所述K-SPACE中的內(nèi)核代碼;

S604,當所述VMM通過預存的頁表中斷處理函數(shù)判斷出所述目標內(nèi)核模塊有權限調(diào)用所述K-SPACE中的內(nèi)核代碼時,所述VMM根據(jù)所述目標內(nèi)核模塊對所述K-SPACE中的內(nèi)核代碼的調(diào)用權限映射,執(zhí)行頁表切換操作和堆棧切換操作以將所述虛擬機內(nèi)核空間的堆棧由隔離空間堆棧M-STACK切換為內(nèi)核空間堆棧K-STACK,以使得所述目標內(nèi)核模塊基于切換后的所述K-STACK調(diào)用所述K-SPACE中的內(nèi)核代碼。

本發(fā)明實施例中,上述VMM執(zhí)行頁表頁表切換操作的具體實施方式為:

所述VMM將所述VMM當前加載的頁表由所述MPGT切換為內(nèi)核空間頁表KPGT,其中,所述KPGT用于支持所述K-SPACE中的內(nèi)核模塊的運行,所述K-SPACE中包括所述虛擬機內(nèi)核空間中的基礎內(nèi)核模塊、所述虛擬機內(nèi)核空間中插入的N個內(nèi)核模塊中除所述目標內(nèi)核模塊之外的內(nèi)核模塊以及所述KPGT,所述N為大于1的正整數(shù)。

上述VMM執(zhí)行堆棧切換操作的具體實施方式為:

所述VMM拷貝M-STACK中存儲的用于傳遞所述K-SPACE中的內(nèi)核代碼的代碼參數(shù)和用于調(diào)用所述K-SPACE中的內(nèi)核代碼的返回地址RIP;

所述VMM在所述K-STACK中寫入所述代碼參數(shù)和所述RIP;

所述VMM將所述虛擬機內(nèi)核空間當前使用的堆棧由esp-old位置轉變?yōu)閑sp-new位置,其中,所述esp-old位置為所述RIP在所述M-STACK中的存儲位置,所述esp-new位置為所述RIP在所述K-STACK中的存儲位置。

可以看出,本發(fā)明實施例中,VMM首先捕獲頁表中斷事件,其次,當VMM通過預存的頁表中斷處理函數(shù)判斷出目標內(nèi)核模塊有權限調(diào)用K-SPACE中的內(nèi)核代碼時,VMM根據(jù)目標內(nèi)核模塊對K-SPACE中的內(nèi)核代碼的調(diào)用權限映射,執(zhí)行頁表切換操作和堆棧切換操作以將虛擬機內(nèi)核空間的堆棧由隔離空間堆棧M-STACK切換為內(nèi)核空間堆棧K-STACK,以使得所述目標內(nèi)核模塊基于 切換后的所述K-STACK調(diào)用所述K-SPACE中的內(nèi)核代碼。其中,上述頁表中斷事件是CPU在檢測到目標內(nèi)核模塊針對內(nèi)核空間K-SPACE中的內(nèi)核代碼的調(diào)用請求之后、且判斷出隔離空間頁表MPGT中未創(chuàng)建目標內(nèi)核模塊對K-SPACE中的內(nèi)核代碼的調(diào)用權限映射的情況下生成的,可見,目標內(nèi)核模塊無權限直接調(diào)用K-SPACE中的內(nèi)核代碼,能夠避免目標內(nèi)核模塊在安全性未知的情況下肆意調(diào)用K-SPACE中的內(nèi)核代碼,有利于提升系統(tǒng)內(nèi)核代碼調(diào)用的安全性。

可以看出,本發(fā)明實施例中,VMM首先捕獲頁表中斷事件,其次,當VMM通過預存的頁表中斷處理函數(shù)判斷出目標內(nèi)核模塊有權限調(diào)用K-SPACE中的內(nèi)核代碼時,VMM根據(jù)目標內(nèi)核模塊對K-SPACE中的內(nèi)核代碼的調(diào)用權限映射,執(zhí)行頁表切換操作和堆棧切換操作以將虛擬機內(nèi)核空間的堆棧由隔離空間堆棧M-STACK切換為內(nèi)核空間堆棧K-STACK,以使得所述目標內(nèi)核模塊基于切換后的所述K-STACK調(diào)用所述K-SPACE中的內(nèi)核代碼。其中,上述頁表中斷事件是CPU在檢測到目標內(nèi)核模塊針對內(nèi)核空間K-SPACE中的內(nèi)核代碼的調(diào)用請求之后、且判斷出隔離空間頁表MPGT中未創(chuàng)建目標內(nèi)核模塊對K-SPACE中的內(nèi)核代碼的調(diào)用權限映射的情況下生成的,可見,目標內(nèi)核模塊無權限直接調(diào)用內(nèi)核代碼,能夠避免目標內(nèi)核模塊在安全性未知的情況下肆意調(diào)用K-SPACE中的內(nèi)核代碼,有利于提升系統(tǒng)內(nèi)核代碼調(diào)用的安全性。

同時,由于VMM相對于虛擬機操作系統(tǒng)擁有更高的運行權限,故而在虛擬化環(huán)境下,具備更高特權級VMM在執(zhí)行權限上與虛擬機之間相互隔離,不會受到虛擬機的直接攻擊。

同時,由于VMM具有客戶機平臺無關性,可以同時對多個不同類型的客戶操作系統(tǒng)的內(nèi)核模塊進行隔離。

可選的,本發(fā)明實施例中,上述VMM捕獲頁表中斷事件之前,還可以執(zhí)行以下操作以創(chuàng)建針對目標內(nèi)核模塊的隔離機制:

所述VMM根據(jù)預存的所述虛擬機內(nèi)核空間的空間頁表將目標內(nèi)核模塊的虛擬地址分布信息映射為物理地址分布信息,其中,所述目標內(nèi)核模塊為從所述虛擬機內(nèi)核空間中插入的N個內(nèi)核模塊中選取的需要被隔離的內(nèi)核模塊,所 述N為大于1的正整數(shù);

所述VMM基于所述物理地址分布信息分隔所述虛擬機內(nèi)核空間為所述M-SPACE和所述K-SPACE;

所述VMM標記所述虛擬機內(nèi)核空間的空間頁表為內(nèi)核空間頁表KPGT,并基于所述物理地址分布信息創(chuàng)建所述MPGT。

參閱圖7,圖7是本發(fā)明實施例公開的一種代碼調(diào)用方法的流程示意圖,如圖7所示,該代碼調(diào)用方法是從VMM單側進行描述的,具體包括以下步驟:

S701,所述VMM根據(jù)預存的所述虛擬機內(nèi)核空間的空間頁表將目標內(nèi)核模塊的虛擬地址分布信息映射為物理地址分布信息,其中,所述目標內(nèi)核模塊為從所述虛擬機內(nèi)核空間中插入的N個內(nèi)核模塊中選取的需要被隔離的內(nèi)核模塊,所述N為大于1的正整數(shù);

S702,所述VMM基于所述物理地址分布信息分隔所述虛擬機內(nèi)核空間為所述M-SPACE和所述K-SPACE;

S703,所述VMM標記所述虛擬機內(nèi)核空間的空間頁表為內(nèi)核空間頁表KPGT,并基于所述物理地址分布信息創(chuàng)建所述MPGT;

本發(fā)明實施例中,所述MPGT中創(chuàng)建有所述目標內(nèi)核模塊對所述M-SPACE中的內(nèi)核代碼的調(diào)用權限映射,以使得所述目標內(nèi)核模塊有權限調(diào)用所述M-SPACE中的內(nèi)核代碼。

S704,虛擬機監(jiān)視器VMM捕獲頁表中斷事件,所述頁表中斷事件是由中央處理單元CPU在檢測到目標內(nèi)核模塊針對內(nèi)核空間K-SPACE中的內(nèi)核代碼的調(diào)用請求之后、且判斷出隔離空間頁表MPGT中未創(chuàng)建所述目標內(nèi)核模塊對所述K-SPACE中的內(nèi)核代碼的調(diào)用權限映射的情況下生成的,其中,所述VMM對應的虛擬機內(nèi)核空間包括所述K-SPACE和隔離空間M-SPACE,所述M-SPACE包括所述目標內(nèi)核模塊和所述MPGT,所述MPGT用于支持所述目標內(nèi)核模塊的運行;

S705,所述VMM通過預存的頁表中斷處理函數(shù)判斷所述目標內(nèi)核模塊是否有權限調(diào)用所述K-SPACE中的內(nèi)核代碼;

S706,當所述VMM通過預存的頁表中斷處理函數(shù)判斷出所述目標內(nèi)核模 塊有權限調(diào)用所述K-SPACE中的內(nèi)核代碼時,所述VMM根據(jù)所述目標內(nèi)核模塊對所述K-SPACE中的內(nèi)核代碼的調(diào)用權限映射,執(zhí)行頁表切換操作和堆棧切換操作以將所述虛擬機內(nèi)核空間的堆棧由隔離空間堆棧M-STACK切換為內(nèi)核空間堆棧K-STACK,以使得所述目標內(nèi)核模塊基于切換后的所述K-STACK調(diào)用所述K-SPACE中的內(nèi)核代碼。

本發(fā)明實施例中,上述VMM執(zhí)行頁表頁表切換操作的具體實施方式為:

所述VMM將所述VMM當前加載的頁表由所述MPGT切換為內(nèi)核空間頁表KPGT,其中,所述KPGT用于支持所述K-SPACE中的內(nèi)核模塊的運行,所述K-SPACE中包括所述虛擬機內(nèi)核空間中的基礎內(nèi)核模塊、所述虛擬機內(nèi)核空間中插入的N個內(nèi)核模塊中除所述目標內(nèi)核模塊之外的內(nèi)核模塊以及所述KPGT,所述N為大于1的正整數(shù)。

上述VMM執(zhí)行堆棧切換操作的具體實施方式為:

所述VMM拷貝M-STACK中存儲的用于傳遞所述K-SPACE中的內(nèi)核代碼的代碼參數(shù)和用于調(diào)用所述K-SPACE中的內(nèi)核代碼的返回地址RIP;

所述VMM在所述K-STACK中寫入所述代碼參數(shù)和所述RIP;

所述VMM將所述虛擬機內(nèi)核空間當前使用的堆棧由esp-old位置轉變?yōu)閑sp-new位置,其中,所述esp-old位置為所述RIP在所述M-STACK中的存儲位置,所述esp-new位置為所述RIP在所述K-STACK中的存儲位置。

可以看出,本發(fā)明實施例中,VMM首先捕獲頁表中斷事件,其次,當VMM通過預存的頁表中斷處理函數(shù)判斷出目標內(nèi)核模塊有權限調(diào)用K-SPACE中的內(nèi)核代碼時,VMM根據(jù)目標內(nèi)核模塊對K-SPACE中的內(nèi)核代碼的調(diào)用權限映射,執(zhí)行頁表切換操作和堆棧切換操作以將虛擬機內(nèi)核空間的堆棧由隔離空間堆棧M-STACK切換為內(nèi)核空間堆棧K-STACK,以使得所述目標內(nèi)核模塊基于切換后的所述K-STACK調(diào)用所述K-SPACE中的內(nèi)核代碼。其中,上述頁表中斷事件是CPU在檢測到目標內(nèi)核模塊針對內(nèi)核空間K-SPACE中的內(nèi)核代碼的調(diào)用請求之后、且判斷出隔離空間頁表MPGT中未創(chuàng)建目標內(nèi)核模塊對K-SPACE中的內(nèi)核代碼的調(diào)用權限映射的情況下生成的,可見,目標內(nèi)核模塊無權限直接調(diào)用K-SPACE中的內(nèi)核代碼,能夠避免目標內(nèi)核模塊在安全性未知 的情況下肆意調(diào)用K-SPACE中的內(nèi)核代碼,有利于提升系統(tǒng)內(nèi)核代碼調(diào)用的安全性。

同時,由于VMM相對于虛擬機操作系統(tǒng)擁有更高的運行權限,故而在虛擬化環(huán)境下,具備更高特權級VMM在執(zhí)行權限上與虛擬機之間相互隔離,不會受到虛擬機的直接攻擊。

同時,由于VMM具有客戶機平臺無關性,可以同時對多個不同類型的客戶操作系統(tǒng)的內(nèi)核模塊進行隔離。

進一步可選的,本發(fā)明實施例中,上述步驟S706中所述目標內(nèi)核模塊基于切換為K-STACK的所述堆棧調(diào)用所述K-SPACE中的內(nèi)核代碼之后,上述代碼調(diào)用執(zhí)行流程需要從K-SPACE返回到目標內(nèi)核模塊中,具體包括如下過程:

上述K-SPACE中的內(nèi)核代碼所屬的內(nèi)核模塊CPU執(zhí)行ret指令,請求返回到目標內(nèi)核模塊中;

CPU中的內(nèi)存管理模塊檢測到上述ret指令,判斷KPGT中是否創(chuàng)建有K-SPACE中的內(nèi)核模塊對目標內(nèi)核模塊中的內(nèi)核代碼的調(diào)用權限映射;

CPU中的內(nèi)存管理模塊判斷出KPGT中未創(chuàng)建有K-SPACE中的內(nèi)核模塊對目標內(nèi)核模塊中的內(nèi)核代碼的調(diào)用權限映射,產(chǎn)生頁表中斷事件M3,

VMM捕捉到上述頁表中斷事件M3,響應該頁表中斷事件M3,通過預存的頁表中斷處理函數(shù)判斷K-SPACE中的內(nèi)核模塊是否有權限調(diào)用目標內(nèi)核模塊的內(nèi)核代碼,若判斷出有權限,則所述VMM在KPGT中創(chuàng)建K-SPACE中的內(nèi)核模塊對目標內(nèi)核模塊的內(nèi)核代碼的調(diào)用權限映射,將當前加載的頁表由所述KPGT切換為MPGT,以及執(zhí)行堆棧切換操作以將虛擬機內(nèi)核空間加載的堆棧由隔離空間堆棧K-STACK切換回內(nèi)核空間堆棧M-STACK,此時執(zhí)行流程返回到M-SPACE,可以繼續(xù)在目標內(nèi)核空間調(diào)用內(nèi)核代碼。

進一步可選的,本發(fā)明實施例中,上述VMM執(zhí)行堆棧切換操作之后,還可以執(zhí)行以下操作:VMM刪除所述KPGT中存儲的所述K-SPACE中的內(nèi)核模塊所述M-SPACE中的內(nèi)核代碼的調(diào)用權限映射。

進一步可選的,本發(fā)明實施例中,上述VMM在刪除所述KPGT中存儲的所述K-SPACE中的內(nèi)核模塊所述M-SPACE中的內(nèi)核代碼的調(diào)用權限映射之后, K-SPACE中的內(nèi)核模塊請求調(diào)用目標內(nèi)核模塊中的內(nèi)核代碼,具體執(zhí)行過程如下:

CPU檢測到K-SPACE中的內(nèi)核模塊發(fā)出的針對目標內(nèi)核模塊中的內(nèi)核代碼的代碼調(diào)用指令,則判斷KPGT中是否創(chuàng)建有K-SPACE中的內(nèi)核模塊對目標內(nèi)核模塊的內(nèi)核代碼的調(diào)用權限映射;

CPU判斷出KPGT中未創(chuàng)建有K-SPACE中的內(nèi)核模塊對目標內(nèi)核模塊的內(nèi)核代碼的調(diào)用權限映射,則產(chǎn)生頁表中斷事件M1;

VMM捕捉到上述頁表中斷事件M1,通過預存的頁表中斷處理函數(shù)判斷所述K-SPACE中的內(nèi)核模塊是否有權限調(diào)用目標內(nèi)核模塊的內(nèi)核代碼,若判斷出有權限,則所述VMM根據(jù)所述K-SPACE中的內(nèi)核模塊對目標內(nèi)核模塊的內(nèi)核代碼的調(diào)用權限映射,將所述VMM當前加載的頁表由所述KPGT切換為MPGT,以及執(zhí)行堆棧切換操作以將虛擬機內(nèi)核空間加載的堆棧由隔離空間堆棧K-STACK切換為內(nèi)核空間堆棧M-STACK,此時,系統(tǒng)的代碼調(diào)用執(zhí)行流程處于M-SPACE,執(zhí)行目標內(nèi)核模塊的內(nèi)核代碼。

進一步可選的,上述M-SPACE中的目標內(nèi)核模塊執(zhí)行完K-SPACE中的內(nèi)核模塊所調(diào)用的內(nèi)核代碼之后,虛擬機代碼調(diào)用執(zhí)行流程需要從目標內(nèi)核模塊返回到K-SPACE中,具體包括以下步驟:

CPU檢測到目標內(nèi)核模塊發(fā)出的返回ret指令,判斷MPGT中是否創(chuàng)建有目標內(nèi)核模塊對K-SPACE中的內(nèi)核代碼的調(diào)用權限映射;

CPU判斷出MPGT中未創(chuàng)建目標內(nèi)核模塊對K-SPACE中的內(nèi)核代碼的調(diào)用權限映射,產(chǎn)生頁表中斷事件M2;

VMM捕捉到上述頁表中斷事件M2,通過預存的頁表中斷處理函數(shù)判斷所述目標內(nèi)核模塊是否有權限調(diào)用上述K-SPACE中的內(nèi)核模塊中的內(nèi)核代碼,若判斷出有權限,則上述VMM根據(jù)所述目標內(nèi)核模塊對K-SPACE中的內(nèi)核代碼的調(diào)用權限映射,將所述VMM當前加載的頁表由所述MPGT切換為所述KPGT,以及執(zhí)行堆棧切換操作以將虛擬機內(nèi)核空間加載的堆棧由隔離空間堆棧M-STACK切換為內(nèi)核空間堆棧K-STACK,此時,虛擬機的代碼調(diào)用執(zhí)行流程返回到K-SPACE中。

參閱圖8,圖8是本發(fā)明實施例公開的一種VMM的結構示意圖,用于控制M-SPACE中的目標內(nèi)核模塊對K-SPACE中的內(nèi)核數(shù)據(jù)的訪問,如圖8所示,該VMM包括事件捕獲單元801、權限判斷單元802、權限創(chuàng)建單元803,其中,

所述事件捕獲單元801,用于捕獲頁表中斷事件,所述頁表中斷事件是由CPU在檢測到目標內(nèi)核模塊發(fā)送的針對內(nèi)核空間K-SPACE中的內(nèi)核數(shù)據(jù)的訪問請求之后、且判斷出隔離空間頁表MPGT中未創(chuàng)建所述目標內(nèi)核模塊對所述K-SPACE中的內(nèi)核數(shù)據(jù)的訪問權限映射的情況下產(chǎn)生的,其中,所述VMM對應的虛擬機內(nèi)核空間包括所述K-SPACE和隔離空間M-SPACE,所述M-SPACE包括所述目標內(nèi)核模塊和所述MPGT,所述MPGT用于支持所述目標內(nèi)核模塊的運行;

本發(fā)明實施例中,上述MPGT中創(chuàng)建有所述目標內(nèi)核模塊對所述M-SPACE中的內(nèi)核數(shù)據(jù)的訪問權限映射,以使得所述目標內(nèi)核模塊有權限訪問所述M-SPACE中的內(nèi)核數(shù)據(jù)。

所述權限判斷單元802,用于通過預存的頁表中斷處理函數(shù)判斷所述目標內(nèi)核模塊是否有權限訪問所述K-SPACE中的內(nèi)核數(shù)據(jù);

所述權限創(chuàng)建單元803,用于當所述權限判斷單元通過預存的頁表中斷處理函數(shù)判斷出所述目標內(nèi)核模塊有權限訪問所述K-SPACE中的內(nèi)核數(shù)據(jù)時,在所述MPGT中創(chuàng)建所述目標內(nèi)核模塊對所述K-SPACE中的內(nèi)核數(shù)據(jù)的訪問權限映射,以使得所述目標內(nèi)核模塊有權限訪問所述K-SPACE中的內(nèi)核數(shù)據(jù)。

可以理解的是,本發(fā)明實施例的VMM的各功能模塊的功能可根據(jù)上述方法實施例中的方法具體實現(xiàn),其具體實現(xiàn)過程可以參照上述方法實施例的相關描述,此處不再贅述。

可以看出,本發(fā)明實施例中,VMM首先捕獲頁表中斷事件,其次,VMM通過預存的頁表中斷處理函數(shù)判斷目標內(nèi)核模塊是否有權限訪問K-SPACE中的內(nèi)核數(shù)據(jù),最后,當VMM通過預存的頁表中斷處理函數(shù)判斷出目標內(nèi)核模塊有權限訪問K-SPACE中的內(nèi)核數(shù)據(jù)時,VMM在MPGT中創(chuàng)建目標內(nèi)核模塊對K-SPACE中的內(nèi)核數(shù)據(jù)的訪問權限映射,以使得目標內(nèi)核模塊有權限訪問K-SPACE中的內(nèi)核數(shù)據(jù)。由于上述頁表中斷事件是CPU在檢測到目標內(nèi)核模塊 發(fā)送的針對內(nèi)核空間K-SPACE中的內(nèi)核數(shù)據(jù)的訪問請求之后、且判斷出隔離空間頁表MPGT中未創(chuàng)建目標內(nèi)核模塊對所述K-SPACE中的內(nèi)核數(shù)據(jù)的訪問權限映射的情況下產(chǎn)生的,可見,目標內(nèi)核模塊無權限直接訪問K-SPACE空間中內(nèi)核數(shù)據(jù),從而能夠避免目標內(nèi)核模塊在安全性未知的情況下肆意訪問K-SPACE中的內(nèi)核數(shù)據(jù),有利于提升系統(tǒng)內(nèi)核數(shù)據(jù)訪問的安全性。

同時,由于VMM相對于虛擬機操作系統(tǒng)擁有更高的運行權限,故而在虛擬化環(huán)境下,具備更高特權級VMM在執(zhí)行權限上與虛擬機之間相互隔離,不會受到虛擬機的直接攻擊。

同時,由于VMM具有客戶機平臺無關性,可以同時對多個不同類型的客戶操作系統(tǒng)的內(nèi)核模塊進行隔離。

可選的,本發(fā)明實施例中,上述權限判斷單元802具體用于:

通過預存的頁表中斷函數(shù)獲取所述頁表中斷事件對應的預設權限判斷策略,并獲取所述K-SPACE中的內(nèi)核數(shù)據(jù)的虛擬地址分布信息;

確定所述頁表中斷事件的事件類型;

根據(jù)所述預設權限判斷策略、所述虛擬地址分布信息以及所述事件類型判斷所述目標內(nèi)核模塊是否有權限訪問所述K-SPACE中的內(nèi)核數(shù)據(jù)。

可選的,本發(fā)明實施例中,上述VMM還包括:

地址映射單元,用于在所述事件捕獲單元捕獲頁表中斷事件之前之前,根據(jù)預存的所述虛擬機內(nèi)核空間的空間頁表將所述目標內(nèi)核模塊的虛擬地址分布信息映射為物理地址分布信息,其中,所述目標內(nèi)核模塊為從所述虛擬機內(nèi)核空間中插入的N個內(nèi)核模塊中選取的需要被隔離的內(nèi)核模塊,所述N為正整數(shù);

空間分隔單元,用于基于所述物理地址分布信息分隔所述虛擬機內(nèi)核空間為所述M-SPACE和所述K-SPACE;

頁表創(chuàng)建單元,用于標記所述虛擬機內(nèi)核空間的空間頁表為內(nèi)核空間頁表KPGT,并基于所述物理地址分布信息創(chuàng)建所述MPGT,其中,所述KPGT用于支持所述K-SPACE中的內(nèi)核模塊的運行,所述K-SPACE中的內(nèi)核模塊包括所述虛擬機內(nèi)核空間中的基礎內(nèi)核模塊和所述N個內(nèi)核模塊中除所述目標內(nèi)核 模塊之外的內(nèi)核模塊。

參閱圖9,圖9是本發(fā)明實施例公開的一種VMM的結構示意圖,用于控制M-SPACE中的目標內(nèi)核模塊對K-SPACE中的內(nèi)核代碼的調(diào)用,如圖9所示,該VMM包括事件捕獲單元901、權限判斷單元902、切換單元903,其中,

所述事件捕獲單元901,用于捕獲頁表中斷事件,所述頁表中斷事件是由中央處理單元CPU在檢測到目標內(nèi)核模塊針對內(nèi)核空間K-SPACE中的內(nèi)核代碼的調(diào)用請求之后、且判斷出隔離空間頁表MPGT中未創(chuàng)建所述目標內(nèi)核模塊對所述K-SPACE中的內(nèi)核代碼的調(diào)用權限映射的情況下生成的,其中,所述VMM對應的虛擬機內(nèi)核空間包括所述K-SPACE和隔離空間M-SPACE,所述M-SPACE包括所述目標內(nèi)核模塊和所述MPGT,所述MPGT用于支持所述目標內(nèi)核模塊的運行;

本發(fā)明實施例中,上述MPGT中創(chuàng)建有所述目標內(nèi)核模塊對所述M-SPACE中的內(nèi)核代碼的調(diào)用權限映射,以使得所述目標內(nèi)核模塊有權限調(diào)用所述M-SPACE中的內(nèi)核代碼。

所述權限判斷單元902,用于通過預存的頁表中斷處理函數(shù)判斷所述目標內(nèi)核模塊是否有權限調(diào)用所述K-SPACE中的內(nèi)核代碼;

所述切換單元903,用于當所述權限判斷單元通過預存的頁表中斷處理函數(shù)判斷出所述目標內(nèi)核模塊有權限調(diào)用所述K-SPACE中的內(nèi)核代碼時,根據(jù)所述目標內(nèi)核模塊對所述K-SPACE中的內(nèi)核代碼的調(diào)用權限映射,執(zhí)行頁表切換操作和堆棧切換操作以將所述虛擬機內(nèi)核空間的堆棧由隔離空間堆棧M-STACK切換為內(nèi)核空間堆棧K-STACK,以使得所述目標內(nèi)核模塊基于切換后的所述K-STACK調(diào)用所述K-SPACE中的內(nèi)核代碼。

可以看出,本發(fā)明實施例中,VMM首先捕獲頁表中斷事件,其次,當VMM通過預存的頁表中斷處理函數(shù)判斷出目標內(nèi)核模塊有權限調(diào)用K-SPACE中的內(nèi)核代碼時,VMM根據(jù)目標內(nèi)核模塊對K-SPACE中的內(nèi)核代碼的調(diào)用權限映射,執(zhí)行頁表切換操作和堆棧切換操作以將虛擬機內(nèi)核空間的堆棧由隔離空間堆棧M-STACK切換為內(nèi)核空間堆棧K-STACK,以使得所述目標內(nèi)核模塊基于切換后的所述K-STACK調(diào)用所述K-SPACE中的內(nèi)核代碼。其中,上述頁表中 斷事件是CPU在檢測到目標內(nèi)核模塊針對內(nèi)核空間K-SPACE中的內(nèi)核代碼的調(diào)用請求之后、且判斷出隔離空間頁表MPGT中未創(chuàng)建目標內(nèi)核模塊對K-SPACE中的內(nèi)核代碼的調(diào)用權限映射的情況下生成的,可見,目標內(nèi)核模塊無權限直接調(diào)用K-SPACE中的內(nèi)核代碼,能夠避免目標內(nèi)核模塊在安全性未知的情況下肆意調(diào)用K-SPACE中的內(nèi)核代碼,有利于提升系統(tǒng)內(nèi)核代碼調(diào)用的安全性。

同時,由于VMM相對于虛擬機操作系統(tǒng)擁有更高的運行權限,故而在虛擬化環(huán)境下,具備更高特權級VMM在執(zhí)行權限上與虛擬機之間相互隔離,不會受到虛擬機的直接攻擊。

同時,由于VMM具有客戶機平臺無關性,可以同時對多個不同類型的客戶操作系統(tǒng)的內(nèi)核模塊進行隔離。

可選的,本發(fā)明實施例中,上述權限判斷單元902具體用于:

通過預存的頁表中斷函數(shù)獲取所述頁表中斷事件對應的預設權限判斷策略,并獲取所述K-SPACE中的內(nèi)核代碼的虛擬地址分布信息;

根據(jù)獲取的所述預設權限判斷策略和所述虛擬地址分布信息判斷所述目標內(nèi)核模塊是否有權限訪問所述K-SPACE中的內(nèi)核代碼。

可選的,本發(fā)明實施例中,上述切換單元903具體用于:

將所述VMM當前加載的頁表由所述MPGT切換為內(nèi)核空間頁表KPGT,其中,所述KPGT用于支持所述K-SPACE中的內(nèi)核模塊的運行,所述K-SPACE中包括所述虛擬機內(nèi)核空間中的基礎內(nèi)核模塊、所述虛擬機內(nèi)核空間中插入的N個內(nèi)核模塊中除所述目標內(nèi)核模塊之外的內(nèi)核模塊以及所述KPGT,所述N為大于1的正整數(shù)。

可選的,本發(fā)明實施例中,上述切換單元903具體用于:

拷貝M-STACK中存儲的用于傳遞所述K-SPACE中的內(nèi)核代碼的代碼參數(shù)和用于調(diào)用所述K-SPACE中的內(nèi)核代碼的返回地址RIP;

在所述K-STACK中寫入所述代碼參數(shù)和所述RIP;

將所述虛擬機內(nèi)核空間當前使用的堆棧由esp-old位置轉變?yōu)閑sp-new位置,其中,所述esp-old位置為所述RIP在所述M-STACK中的存儲位置,所述 esp-new位置為所述RIP在所述K-STACK中的存儲位置。

可選的,本發(fā)明實施例中,上述VMM還包括:

地址映射單元,用于在所述事件捕獲單元捕獲頁表中斷事件之前,根據(jù)預存的所述虛擬機內(nèi)核空間的空間頁表將目標內(nèi)核模塊的虛擬地址分布信息映射為物理地址分布信息,其中,所述目標內(nèi)核模塊為從所述虛擬機內(nèi)核空間中插入的N個內(nèi)核模塊中選取的需要被隔離的內(nèi)核模塊,所述N為大于1的正整數(shù);

空間分隔單元,用于基于所述物理地址分布信息分隔所述虛擬機內(nèi)核空間為所述M-SPACE和所述K-SPACE;

頁表創(chuàng)建單元,用于標記所述虛擬機內(nèi)核空間的空間頁表為內(nèi)核空間頁表KPGT,并基于所述物理地址分布信息創(chuàng)建所述MPGT。

參閱圖10,圖10是本發(fā)明實施例公開的一種VMM的結構示意圖,如圖10所示,該VMM可以包括:至少一個處理器1001,例如CPU,至少一個存儲器1002,至少一個通信總線1003。通信總線1003用于實現(xiàn)處理器1001和存儲器1002之間的連接通信,其中,存儲器1002可能包含高速RAM存儲器,也可能還包括非易失性存儲器(non-volatile memory),例如至少一個磁盤存儲器。

在一些實施方式中,存儲器1002存儲了如下的元素(可執(zhí)行模塊或者數(shù)據(jù)結構,或者他們的子集,或者他們的擴展集):

操作系統(tǒng)10021,包含各種系統(tǒng)程序,用于實現(xiàn)各種基礎業(yè)務以及處理基于硬件的任務;

應用程序10022,包含設備控制服務程序、設備識別服務程序等各種應用程序,用于實現(xiàn)各種應用業(yè)務。

具體地,處理器1001用于調(diào)用存儲器1002中存儲的程序,執(zhí)行以下操作:

上述處理器1001捕獲頁表中斷事件,所述頁表中斷事件是由CPU在檢測到目標內(nèi)核模塊發(fā)送的針對內(nèi)核空間K-SPACE中的內(nèi)核數(shù)據(jù)的訪問請求之后、且判斷出隔離空間頁表MPGT中未創(chuàng)建所述目標內(nèi)核模塊對所述K-SPACE中的內(nèi)核數(shù)據(jù)的訪問權限映射的情況下產(chǎn)生的,其中,所述VMM對應的虛擬機內(nèi)核空間包括所述K-SPACE和隔離空間M-SPACE,所述M-SPACE包括所述目標 內(nèi)核模塊和所述MPGT,所述MPGT用于支持所述目標內(nèi)核模塊的運行;

本發(fā)明實施例中,上述MPGT中創(chuàng)建有所述目標內(nèi)核模塊對所述M-SPACE中的內(nèi)核數(shù)據(jù)的訪問權限映射,以使得所述目標內(nèi)核模塊有權限訪問所述M-SPACE中的內(nèi)核數(shù)據(jù)。

上述處理器1001通過預存的頁表中斷處理函數(shù)判斷所述目標內(nèi)核模塊是否有權限訪問所述K-SPACE中的內(nèi)核數(shù)據(jù);

上述處理器1001當通過預存的頁表中斷處理函數(shù)判斷出所述目標內(nèi)核模塊有權限訪問所述K-SPACE中的內(nèi)核數(shù)據(jù)時,在所述MPGT中創(chuàng)建所述目標內(nèi)核模塊對所述K-SPACE中的內(nèi)核數(shù)據(jù)的訪問權限映射,以使得所述目標內(nèi)核模塊有權限訪問所述K-SPACE中的內(nèi)核數(shù)據(jù)。

可以看出,本發(fā)明實施例中,VMM首先捕獲頁表中斷事件,其次,VMM通過預存的頁表中斷處理函數(shù)判斷目標內(nèi)核模塊是否有權限訪問K-SPACE中的內(nèi)核數(shù)據(jù),最后,當VMM通過預存的頁表中斷處理函數(shù)判斷出目標內(nèi)核模塊有權限訪問K-SPACE中的內(nèi)核數(shù)據(jù)時,VMM在MPGT中創(chuàng)建目標內(nèi)核模塊對K-SPACE中的內(nèi)核數(shù)據(jù)的訪問權限映射,以使得目標內(nèi)核模塊有權限訪問K-SPACE中的內(nèi)核數(shù)據(jù)。由于上述頁表中斷事件是CPU在檢測到目標內(nèi)核模塊發(fā)送的針對內(nèi)核空間K-SPACE中的內(nèi)核數(shù)據(jù)的訪問請求之后、且判斷出隔離空間頁表MPGT中未創(chuàng)建目標內(nèi)核模塊對所述K-SPACE中的內(nèi)核數(shù)據(jù)的訪問權限映射的情況下產(chǎn)生的,可見,目標內(nèi)核模塊無權限直接訪問K-SPACE空間中內(nèi)核數(shù)據(jù),從而能夠避免目標內(nèi)核模塊在安全性未知的情況下肆意訪問K-SPACE中的內(nèi)核數(shù)據(jù),有利于提升系統(tǒng)內(nèi)核數(shù)據(jù)訪問的安全性。

同時,由于VMM相對于虛擬機操作系統(tǒng)擁有更高的運行權限,故而在虛擬化環(huán)境下,具備更高特權級VMM在執(zhí)行權限上與虛擬機之間相互隔離,不會受到虛擬機的直接攻擊。

同時,由于VMM具有客戶機平臺無關性,可以同時對多個不同類型的客戶操作系統(tǒng)的內(nèi)核模塊進行隔離。

可選的,本發(fā)明實施例中,上述處理器1001通過預存的頁表中斷處理函數(shù)判斷所述目標內(nèi)核模塊是否有權限訪問所述K-SPACE中的內(nèi)核數(shù)據(jù)的具體方 式為:處理器1001首先通過預存的頁表中斷函數(shù)獲取所述頁表中斷事件對應的預設權限判斷策略,并獲取所述K-SPACE中的內(nèi)核數(shù)據(jù)的虛擬地址分布信息;其次,處理器1001確定所述頁表中斷事件的事件類型;最后,處理器1001根據(jù)所述預設權限判斷策略、所述虛擬地址分布信息以及所述事件類型判斷所述目標內(nèi)核模塊是否有權限訪問所述K-SPACE中的內(nèi)核數(shù)據(jù)。

可選的,本發(fā)明實施例中,上述處理器1001捕獲頁表中斷事件之前,還可以執(zhí)行以下操作以針對目標內(nèi)核模塊創(chuàng)建內(nèi)核空間隔離機制:

上述處理器1001根據(jù)預存的所述虛擬機內(nèi)核空間的空間頁表將所述目標內(nèi)核模塊的虛擬地址分布信息映射為物理地址分布信息,其中,所述目標內(nèi)核模塊為從所述虛擬機內(nèi)核空間中插入的N個內(nèi)核模塊中選取的需要被隔離的內(nèi)核模塊,所述N為正整數(shù);

上述處理器1001基于所述物理地址分布信息分隔所述虛擬機內(nèi)核空間為所述M-SPACE和所述K-SPACE;

上述處理器1001標記所述虛擬機內(nèi)核空間的空間頁表為內(nèi)核空間頁表KPGT,并基于所述物理地址分布信息創(chuàng)建所述MPGT,其中,所述KPGT用于支持所述K-SPACE中的內(nèi)核模塊的運行,所述K-SPACE中的內(nèi)核模塊包括所述虛擬機內(nèi)核空間中的基礎內(nèi)核模塊和所述N個內(nèi)核模塊中除所述目標內(nèi)核模塊之外的內(nèi)核模塊。

參閱圖11,圖11是本發(fā)明實施例公開的一種代碼調(diào)用裝置的結構示意圖,如圖11所示,該代碼調(diào)用裝置可以包括:至少一個處理器1001,例如CPU,至少一個存儲器1002,至少一個通信總線1003。通信總線1003用于實現(xiàn)處理器1001和存儲器1002之間的連接通信,其中,存儲器1002可能包含高速RAM存儲器,也可能還包括非易失性存儲器(non-volatile memory),例如至少一個磁盤存儲器。

在一些實施方式中,存儲器1002存儲了如下的元素(可執(zhí)行模塊或者數(shù)據(jù)結構,或者他們的子集,或者他們的擴展集):

操作系統(tǒng)10021,包含各種系統(tǒng)程序,用于實現(xiàn)各種基礎業(yè)務以及處理基于硬件的任務;

應用程序10022,包含設備控制服務程序、設備識別服務程序等各種應用程序,用于實現(xiàn)各種應用業(yè)務。

具體地,處理器1001用于調(diào)用存儲器1002中存儲的程序,執(zhí)行以下操作:

上述處理器1001捕獲頁表中斷事件,所述頁表中斷事件是由中央處理單元CPU在檢測到目標內(nèi)核模塊針對內(nèi)核空間K-SPACE中的內(nèi)核代碼的調(diào)用請求之后、且判斷出隔離空間頁表MPGT中未創(chuàng)建所述目標內(nèi)核模塊對所述K-SPACE中的內(nèi)核代碼的調(diào)用權限映射的情況下生成的,其中,所述VMM對應的虛擬機內(nèi)核空間包括所述K-SPACE和隔離空間M-SPACE,所述M-SPACE包括所述目標內(nèi)核模塊和所述MPGT,所述MPGT用于支持所述目標內(nèi)核模塊的運行;

本發(fā)明實施例中,上述MPGT中創(chuàng)建有所述目標內(nèi)核模塊對所述M-SPACE中的內(nèi)核代碼的調(diào)用權限映射,以使得所述目標內(nèi)核模塊有權限調(diào)用所述M-SPACE中的內(nèi)核代碼。

上述處理器1001通過預存的頁表中斷處理函數(shù)判斷所述目標內(nèi)核模塊是否有權限調(diào)用所述K-SPACE中的內(nèi)核代碼;

上述處理器1001當所述VMM通過預存的頁表中斷處理函數(shù)判斷出所述目標內(nèi)核模塊有權限調(diào)用所述K-SPACE中的內(nèi)核代碼時,所述VMM根據(jù)所述目標內(nèi)核模塊對所述K-SPACE中的內(nèi)核代碼的調(diào)用權限映射,執(zhí)行頁表切換操作和堆棧切換操作以將所述虛擬機內(nèi)核空間的堆棧由隔離空間堆棧M-STACK切換為內(nèi)核空間堆棧K-STACK,以使得所述目標內(nèi)核模塊基于切換后的所述K-STACK調(diào)用所述K-SPACE中的內(nèi)核代碼。

可選的,本發(fā)明實施例中,VMM首先捕獲頁表中斷事件,其次,當VMM通過預存的頁表中斷處理函數(shù)判斷出目標內(nèi)核模塊有權限調(diào)用K-SPACE中的內(nèi)核代碼時,VMM根據(jù)目標內(nèi)核模塊對K-SPACE中的內(nèi)核代碼的調(diào)用權限映射,執(zhí)行頁表切換操作和堆棧切換操作以將虛擬機內(nèi)核空間的堆棧由隔離空間堆棧M-STACK切換為內(nèi)核空間堆棧K-STACK,以使得所述目標內(nèi)核模塊基于切換后的所述K-STACK調(diào)用所述K-SPACE中的內(nèi)核代碼。其中,上述頁表中斷事件是CPU在檢測到目標內(nèi)核模塊針對內(nèi)核空間K-SPACE中的內(nèi)核代碼的 調(diào)用請求之后、且判斷出隔離空間頁表MPGT中未創(chuàng)建目標內(nèi)核模塊對K-SPACE中的內(nèi)核代碼的調(diào)用權限映射的情況下生成的,可見,目標內(nèi)核模塊無權限直接調(diào)用K-SPACE中的內(nèi)核代碼,能夠避免目標內(nèi)核模塊在安全性未知的情況下肆意調(diào)用K-SPACE中的內(nèi)核代碼,有利于提升系統(tǒng)內(nèi)核代碼調(diào)用的安全性。

同時,由于VMM相對于虛擬機操作系統(tǒng)擁有更高的運行權限,故而在虛擬化環(huán)境下,具備更高特權級VMM在執(zhí)行權限上與虛擬機之間相互隔離,不會受到虛擬機的直接攻擊。

同時,由于VMM具有客戶機平臺無關性,可以同時對多個不同類型的客戶操作系統(tǒng)的內(nèi)核模塊進行隔離。

可選的,本發(fā)明實施例中,上述處理器1001VMM捕獲頁表中斷事件之前,還可以執(zhí)行以下操作以創(chuàng)建針對目標內(nèi)核模塊的隔離機制:

上述處理器1001根據(jù)預存的所述虛擬機內(nèi)核空間的空間頁表將目標內(nèi)核模塊的虛擬地址分布信息映射為物理地址分布信息,其中,所述目標內(nèi)核模塊為從所述虛擬機內(nèi)核空間中插入的N個內(nèi)核模塊中選取的需要被隔離的內(nèi)核模塊,所述N為大于1的正整數(shù);

上述處理器1001基于所述物理地址分布信息分隔所述虛擬機內(nèi)核空間為所述M-SPACE和所述K-SPACE;

上述處理器1001標記所述虛擬機內(nèi)核空間的空間頁表為內(nèi)核空間頁表KPGT,并基于所述物理地址分布信息創(chuàng)建所述MPGT。

可選的,本發(fā)明實施例中,上述處理器1001通過預存的頁表中斷處理函數(shù)判斷所述目標內(nèi)核模塊是否有權限調(diào)用所述K-SPACE中的內(nèi)核代碼的具體實施方式為:上述處理器1001通過預存的頁表中斷函數(shù)獲取所述頁表中斷事件對應的預設權限判斷策略,并獲取所述K-SPACE中的內(nèi)核代碼的虛擬地址分布信息;根據(jù)獲取的所述預設權限判斷策略和所述虛擬地址分布信息判斷所述目標內(nèi)核模塊是否有權限訪問所述K-SPACE中的內(nèi)核代碼。

可選的,本發(fā)明實施例中,上述處理器1001執(zhí)行頁表頁表切換操作的具體實施方式為:上述處理器1001將所述VMM當前加載的頁表由所述MPGT切換 為內(nèi)核空間頁表KPGT,其中,所述KPGT用于支持所述K-SPACE中的內(nèi)核模塊的運行,所述K-SPACE中包括所述虛擬機內(nèi)核空間中的基礎內(nèi)核模塊、所述虛擬機內(nèi)核空間中插入的N個內(nèi)核模塊中除所述目標內(nèi)核模塊之外的內(nèi)核模塊以及所述KPGT,所述N為大于1的正整數(shù)。

可選的,本發(fā)明實施例中,上述處理器1001執(zhí)行堆棧切換操作的具體實施方式為:上述處理器1001拷貝M-STACK中存儲的用于傳遞所述K-SPACE中的內(nèi)核代碼的代碼參數(shù)和用于調(diào)用所述K-SPACE中的內(nèi)核代碼的返回地址RIP;在所述K-STACK中寫入所述代碼參數(shù)和所述RIP;將所述虛擬機內(nèi)核空間當前使用的堆棧由esp-old位置轉變?yōu)閑sp-new位置,其中,所述esp-old位置為所述RIP在所述M-STACK中的存儲位置,所述esp-new位置為所述RIP在所述K-STACK中的存儲位置。

本領域普通技術人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指令相關的硬件來完成,該程序可以存儲于一計算機可讀存儲介質(zhì)中,存儲介質(zhì)可以包括:閃存盤、只讀存儲器(Read-Only Memory,ROM)、隨機存取器(Random Access Memory,RAM)、磁盤或光盤等。

以上對本發(fā)明實施例公開的一種模塊隔離、數(shù)據(jù)訪問、代碼調(diào)用方法、相關裝置及系統(tǒng)進行了詳細介紹,本文中應用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領域的一般技術人員,依據(jù)本發(fā)明的思想,在具體實施方式及應用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應理解為對本發(fā)明的限制。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1