监控VT系统上的目标代理执行模式的方法、计算设备和系统转让专利

申请号 : CN200710192913.8

文献号 : CN101221608B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : U·萨瓦冈卡尔R·萨希塔D·德拉姆

申请人 : 英特尔公司

摘要 :

本发明涉及目标进程执行模式监控方法和装置,以确定进程是否按照期望的方式执行,它通过物理设备的虚拟机管理器来观测物理设备的虚拟机的目标进程的执行情况,包括在执行期间所引用的虚拟机虚拟地址。虚拟机管理器至少部分地根据观测到的虚拟地址引用和期望的虚拟地址引用,进一步确定目标进程是否以期望的方式在执行。

权利要求 :

1.一种用于验证计算设备的虚拟机的目标进程的期望执行的方法,包括:由计算设备的虚拟机管理器观测所述计算设备的虚拟机的目标进程的执行情况,所述执行情况包括在执行期间所引用的虚拟机虚拟地址;

由所述虚拟机管理器至少部分地根据观测到的虚拟地址引用和期望的虚拟地址引用,确定目标进程是否以期望的执行方式在执行,其中,所述目标进程的所述期望的执行方式反映在完整性显示中,所述完整性显示包括目标进程期望引用的虚拟地址,并且所述确定包括:由所述虚拟机管理器把观测到的虚拟地址引用和期望的虚拟地址引用进行比较。

2.根据权利要求1的方法,其中,由所述虚拟机管理器的存储器管理器来执行所述观测,该方法进一步包括:由所述存储器管理器来修改所述虚拟机管理器的活动页表,以便于由所述存储器管理器捕获对所述目标进程期望引用的虚拟地址的引用而进行处理。

3.根据权利要求2的方法,其中,由所述存储器管理器进行的所述修改包括:修改所述虚拟机管理器的活动页表,以便于对所述目标进程期望引用的虚拟地址的引用会导致向所述存储器管理器发出页面错误。

4.根据权利要求1的方法,其中,由所述虚拟机管理器的存储器管理器来执行所述观测,该方法进一步包括:由所述存储器管理器来修改所述虚拟机管理器的嵌套的和扩展的页表,以便于由所述存储器管理器捕获对所述目标进程期望引用的虚拟地址的引用而进行处理。

5.根据权利要求1的方法,其中,由所述虚拟存储器管理器的代码执行引擎执行所述观测,该方法进一步包括:由所述代码执行引擎修改目标进程,以便于由所述代码执行引擎捕获对所述目标进程期望引用的虚拟地址的引用而进行处理。

6.根据权利要求5的方法,其中,所述修改包括:当要引用所述虚拟地址时,修改目标进程以调用所述代码执行引擎,该方法进一步包括:

第一,在捕获到引用时,就由所述代码执行引擎恢复目标进程的被替换指令,以启动原始函数的执行,第二,在捕获到引用时,就由所述代码执行引擎将所述捕获通知给验证引擎,所述验证引擎记录对所述虚拟地址的引用,第三,在执行时,由所述代码执行引擎重新修改指令,以使所述代码执行引擎再一次捕获对所述虚拟地址的未来引用。

7.根据权利要求1的方法,其中,所述虚拟地址映射到计算设备寄存器。

8.根据权利要求1的方法,进一步包括:

额外地观测至少一个已观测到的虚拟地址引用的存储器访问类型。

9.根据权利要求1的方法,进一步包括:

由验证引擎比较不同虚拟地址的引用统计量和相应的门限度量。

10.根据权利要求1的方法,其中,目标进程是入侵检测进程。

11.根据权利要求1的方法,其中,所述观测进一步包括:

监控目标进程和由该目标进程实际引用的另一进程的相互依赖性以及调用和返回点中的至少一个。

12.一种计算设备,其配置为验证所述计算设备的虚拟机的目标进程的期望执行,所述计算设备包括:一个或多个处理器;

由所述一个或多个处理器操作的虚拟机管理器,其用于:观测所述计算设备的虚拟机的目标进程的执行情况,包括观测在执行期间所引用的虚拟机虚拟地址;至少部分地根据观测到的虚拟地址引用和期望的虚拟地址引用,确定目标进程是否以期望的执行方式在执行,所述虚拟机管理器包括存储器管理器,其用于执行所述观测,包括修改活动页表,以便于由所述存储器管理器捕获对虚拟地址的引用而进行处理,其中,所述目标进程的所述期望的执行方式反映在完整性显示中,所述完整性显示包括目标进程期望引用的虚拟地址,所述虚拟机管理器进一步包括验证引擎,其至少部分地通过把观测到的虚拟地址引用和期望的虚拟地址引用进行比较来执行所述确定。

13.根据权利要求12的计算设备,其中,所述虚拟机和所述虚拟机管理器由同一处理器操作。

14.根据权利要求12的计算设备,其中,所述存储器管理器修改所述虚拟机管理器的活动页表,以使得对所述目标进程期望引用的虚拟地址的引用会导致向所述存储器管理器发出页面错误。

15.根据权利要求14的计算设备,其中,所述验证引擎还基于对所述观测到的虚拟地址引用和所述期望的虚拟地址引用的比较结果产生引用统计量。

16.根据权利要求12的计算设备,其中,所述虚拟机管理器进一步包括完整性测量模块,所述完整性测量模块使用完整性显示去验证目标进程的完整性,其中,在目标进程被载入所述计算设备的存储器中时,所述完整性显示进一步描述了该目标进程。

17.根据权利要求15的计算设备,其中,所述验证引擎进一步比较不同虚拟地址的引用统计量和相应的门限度量。

18.根据权利要求12的计算设备,其中,目标进程是入侵检测进程。

19.一种计算设备,其配置为验证所述计算设备的虚拟机的目标进程的期望执行,所述计算设备包括:一个或多个处理器;

由所述一个或多个处理器操作的虚拟机管理器,所述虚拟机管理器包括代码执行引擎并且被配置为:使用所述代码执行引擎修改所述计算设备的虚拟机的所述目标进程,以便由所述代码执行引擎捕获对所述目标进程期望引用的虚拟地址的引用而进行处理,使用所述代码执行引擎来观测目标进程的执行情况,所述执行情况包括在执行期间所引用的虚拟机虚拟地址,由所述虚拟机管理器至少部分地根据观测到的虚拟地址引用和期望的虚拟地址引用,确定目标进程是否以期望的执行方式在执行,其中,所述目标进程的所述期望的执行方式反映在完整性显示中,所述完整性显示包括目标进程期望引用的虚拟地址,所述虚拟机管理器进一步包括验证引擎,所述验证引擎配置为至少部分地通过比较观测到的虚拟地址引用和期望的虚拟地址引用而执行所述确定。

20.根据权利要求19的计算设备,其中,至少部分地通过所述验证引擎比较不同虚拟地址的引用统计量和相应的门限度量而执行所述确定。

21.根据权利要求19的计算设备,其中,所述虚拟机管理器还配置为:使用所述代码执行引擎去修改目标进程,从而在要引用所述虚拟地址时目标进程调用所述代码执行引擎;

在捕获到对虚拟地址的引用时使用所述代码执行引擎恢复目标进程,替换目标进程的指令,以启动原始函数的执行;

在执行时重新修改进程,以使所述代码执行引擎再一次捕获对虚拟地址的未来引用。

22.根据权利要求21的计算设备,其中,所述虚拟机管理器包括验证引擎,并且所述代码执行引擎在捕获到对虚拟地址的引用时通知所述验证引擎,其中所述验证引擎记录对虚拟地址的引用。

23.根据权利要求19的计算设备,其中,目标进程是入侵检测进程。

24.一种确定目标进程是否以期望的方式执行的系统,包括:一个或多个处理器;

耦合到所述一个或多个处理器的易失性存储器,其能够对观测到的在所述系统的虚拟机的目标进程的执行期间所引用的虚拟地址和期望的虚拟地址引用进行存储,以便加以比较;

由所述一个或多个处理器中之一操作的虚拟机管理器,用于:

由所述虚拟机管理器观测目标进程的执行情况,所述执行情况包括在执行期间所引用的虚拟地址;

至少部分地根据观测到的虚拟地址引用和期望的虚拟地址引用,确定目标进程是否以期望的执行方式在执行,其中,所述目标进程的所述期望的执行方式反映在完整性显示中,所述完整性显示包括目标进程期望引用的虚拟地址,以及所述虚拟机管理器进一步包括验证引擎,其用于把观测到的虚拟地址引用和期望的虚拟地址引用进行比较来进行所述确定。

25.根据权利要求24的系统,其中,所述虚拟机管理器进一步包括存储器管理器,其用于执行所述观测并修改所述虚拟机管理器的活动页表,以使得对所述目标进程期望引用的虚拟地址的引用会导致向所述存储器管理器发出页面错误。

26.根据权利要求24的系统,其中,所述验证引擎基于所述比较的结果产生引用统计量。

27.根据权利要求24的系统,其中,所述虚拟机管理器进一步包括完整性测量模块,所述完整性测量模块使用完整性显示来验证目标进程的完整性,其中,当目标进程被载入海量存储器中时,所述完整性显示进一步描述该目标进程。

28.根据权利要求26的系统,其中,目标进程是入侵检测进程。

说明书 :

监控VT系统上的目标代理执行模式的方法、计算设备和系

发明领域

[0001] 实施例涉及数据处理和信息保障领域,尤其涉及监控目标进程的执行模式以确定进程是否按照期望的方式执行。

背景技术

[0002] 现代的病毒和蠕虫对信息处理系统的安全具有很大的威胁。基于主机的入侵检测系统能够在蠕虫突破系统防护时为检测蠕虫提供有效的解决方案。然而,大量的蠕虫会使入侵检测系统受到损害和失去效能。
[0003] 对于这个问题,已经提供了很多解决方案,所提供的方法用于确保入侵检测系统能够正确运行。例如,已知有很多系统完整性服务,它们都需要由受监控的软件代理(例如入侵检测系统)来提供正确运行的非欺骗性证据。然而,这些服务,需要修改监控代理的编程指令。很多软件厂商并不愿意做出这样的修改。而且,很多的现有软件代理,都是在系统完整性服务出现之前创建的,所以它们不能提供这项技术所需要的非欺骗性证据。
[0004] 主机代理测量为蠕虫和病毒导致入侵检测系统丧失效能这一问题提供了另外的解决方案。主机代理测量使得在独立执行环境中执行的进程能周期性地验证出受监控的软件代理(例如入侵检测系统)以未变的形式存在于主机存储器中。然而,在有些攻击中,病毒或者蠕虫实际上并没有修改被监控的代理,只是通过损害操作系统的调度器而使代理丧失了效能,这种方法对此不能提供任何保护。发明内容根据本发明的一个实施例,提供了一种用于验证计算设备的虚拟机的目标进程的期望执行的方法,该方法包括:由计算设备的虚拟机管理器观测所述计算设备的虚拟机的目标进程的执行情况,所述执行情况包括在执行期间所引用的虚拟机虚拟地址;由所述虚拟机管理器至少部分地根据观测到的虚拟地址引用和期望的虚拟地址引用,确定目标进程是否以期望的执行方式在执行,其中,所述目标进程的所述期望的执行方式反映在完整性显示中,所述完整性显示包括目标进程期望引用的虚拟地址,并且所述确定包括:由所述虚拟机管理器把观测到的虚拟地址引用和期望的虚拟地址引用进行比较。根据本发明的一个实施例,提供了一种计算设备,其配置为验证所述计算设备的虚拟机的目标进程的期望执行。该计算设备包括:一个或多个处理器以及由所述一个或多个处理器操作的虚拟机管理器。该虚拟机管理器用于:观测所述计算设备的虚拟机的目标进程的执行情况,包括观测在执行期间所引用的虚拟机虚拟地址;至少部分地根据观测到的虚拟地址引用和期望的虚拟地址引用,确定目标进程是否以期望的执行方式在执行。该虚拟机管理器包括存储器管理器,其用于执行所述观测,包括修改活动页表,以便于由所述存储器管理器捕获对虚拟地址的引用而进行处理。所述目标进程的所述期望的执行方式反映在完整性显示中,所述完整性显示包括目标进程期望引用的虚拟地址。所述虚拟机管理器进一步包括验证引擎,其至少部分地通过把观测到的虚拟地址引用和期望的虚拟地址引用进行比较来执行所述确定。根据本发明的一个实施例,提供了一种计算设备,其配置为验证所述计算设备的虚拟机的目标进程的期望执行。所述计算设备包括:一个或多个处理器以及由所述一个或多个处理器操作的虚拟机管理器。在这个实施例中,所述虚拟机管理器包括代码执行引擎,其被配置为:修改所述计算设备的虚拟机的所述目标进程,以便由所述代码执行引擎捕获对所述目标进程期望引用的虚拟地址的引用而进行处理。所述代码执行引擎观测目标进程的执行情况,所述执行情况包括在执行期间所引用的虚拟机虚拟地址。所述虚拟机管理器至少部分地根据观测到的虚拟地址引用和期望的虚拟地址引用,确定目标进程是否以期望的执行方式在执行。所述目标进程的所述期望的执行方式反映在完整性显示中,所述完整性显示包括目标进程期望引用的虚拟地址。所述虚拟机管理器进一步包括验证引擎。所述验证引擎配置为至少部分地通过比较观测到的虚拟地址引用和期望的虚拟地址引用而执行所述确定。根据本发明的一个实施例,提供了一种确定目标进程是否以期望的方式执行的系统,包括一个或多个处理器和耦合到所述一个或多个处理器的易失性存储器,该易失性存储器能够对观测到的在所述系统的虚拟机的目标进程的执行期间所引用的虚拟地址和期望的虚拟地址引用进行存储,以便加以比较,还包括由所述一个或多个处理器中之一操作的虚拟机管理器,用于:由所述虚拟机管理器观测目标进程的执行情况,所述执行情况包括在执行期间所引用的虚拟地址;至少部分地根据观测到的虚拟地址引用和期望的虚拟地址引用,确定目标进程是否以期望的执行方式在执行。所述目标进程的所述期望的执行方式反映在完整性显示中,所述完整性显示包括目标进程期望引用的虚拟地址。所述虚拟机管理器进一步包括验证引擎,其用于把观测到的虚拟地址引用和期望的虚拟地址引用进行比较来进行所述确定。

附图说明

[0005] 本发明的实施例将通过附图所示的说明性实施例进行描述,但并不受限于此,图中相同的标记表示相同的元件,其中:
[0006] 图1a-1b示出了本发明不同实施例的总体情况,监控目标进程的执行模式以确定进程是否以期望的方式执行;
[0007] 图2示出了本发明不同实施例的方法的选定操作的流程图;
[0008] 图3示出了用于实施本发明不同实施例的示例性计算机系统。

具体实施方式

[0009] 本发明给出的实施例包括、但不限于:通过物理设备的虚拟机管理器观测物理设备的虚拟机的目标进程执行情况(包括在执行期间所引用的虚拟机虚拟地址)的方法和设备。虚拟机管理器至少部分地根据观测到的虚拟地址引用和期望的虚拟地址引用,进一步确定目标进程是否以期望的方式在执行。
[0010] 下面使用本领域技术人员向本领域其它技术人员传达他们劳动成果时通常使用的术语来描述说明性的实施例的不同方面。然而,对于本领域技术人员来说显然的是,只使用一部分描述的方面就可以实施可替代的实施例。出于解释的目的,为了对说明性的实施例有一个彻底的理解,给出了具体的数字、材料和结构。然而,对本领域技术人员来说不使用特定细节来实施可替代实施例也是显然的。在其它实例中,为了不混淆说明性的实施例,省略或者简化了公知的特征。
[0011] 另外,本文将不同的操作描述为多个分立的有序操作,这有助于理解说明性的实施例;然而,描述的顺序不应当被解释为是暗示这些操作必须依赖于这样的顺序。尤其是,这些操作不一定要以给出的顺序执行。
[0012] 重复使用了短语“在一个实施例中”。这个短语通常不是针对相同的实施例;然而,它也可以针对相同的实施例。术语“包含”、“具有”以及“包括”是同义词,除非文中另有说明。短语“A/B”指“A或者B”。短语“A和/或B”指“(A)、(B)或(A且B)”。短语“A、B、C中的至少一个”指“(A),(B),(C),(A和B),(A和C),(B和C),或者(A,B和C)”。短语“(A)B”指“(B)或者(AB)”,也就是说,A是可选的。
[0013] 图1a-1b示出了本发明不同实施例的总体情况,监控一个目标进程的执行模式以确定进程是否以期望的方式执行。如图所示,计算设备102的虚拟机管理器106(用于管理计算设备的虚拟机)的验证引擎120能够进一步比较计算设备102的虚拟机104的目标进程110所引用的虚拟地址和目标进程110期望引用的虚拟地址。这种比较可以包括:由验证引擎120生成统计量,并将统计量和门限度量进行比较,以便于确定是否已经危害目标进程110的安全。目标进程实际引用的虚拟地址可以通过在执行期间引用的虚拟地址来确定。在图1a所示的一个实施例中,虚拟地址引用可以通过以下方式观测到:修改虚拟机管理器106的活动页表116,从而当每次引用一个期望虚拟地址时都导致向存储器管理器114发出页面错误。在图1b所示的一个可替代实施例中,虚拟机管理器106的代码执行引擎(CodeInstrumentation Engine)118可以修改存储器中的目标进程110代码,这样,当目标进程110引用一个期望虚拟地址时,目标进程110可以向代码执行引擎118发出一条调用指令,代码执行引擎118可以捕获这样的调用。
[0014] 在不同的实施例中,除虚拟机104和虚拟机管理器106之外,计算设备102还可以包括其它额外的虚拟机。虚拟机104可以包括客户页表108以及大量的进程(例如目标进程110),客户页表108中存储着线性存储器地址到客户物理地址的映射。在不同的实施例中,目标进程110可以是关键的进程,例如入侵检测进程。虚拟机管理器106可以包括大量便于对计算设备102的虚拟机进行管理的组件。在这些组件当中,有一个完整性测量模块112可以用于在目标进程被载入到存储器中时验证其完整性以及向存储器管理器116和/或代码执行引擎118以及验证引擎120提供完整性显示(integrity manifest),所述的完整性显示指明了期望的虚拟地址引用。另外,虚拟机管理器106组件还进一步包括存储器管理器114、活动页表116、验证引擎120,以及图1b所示的实施例中的代码执行引擎118。
[0015] 如图所示,计算设备102可以是任意的单处理器或者多处理器或者本领域中公知的处理器核心中央处理单元(CPU)计算系统。计算设备102可以是个人计算机(PC)、工作站、服务器、路由器、大型机、刀片式服务器或者高密度服务器中的模块化计算机、个人数字助理(PDA)、娱乐中心、机顶盒或者移动设备。计算设备102能够操作多个虚拟机(例如虚拟机104)以及使用虚拟技术的虚拟机管理器106的多个操作系统。如果计算设备102是多处理器或者多处理器核心系统,则计算设备102的每一个虚拟机/虚拟机管理器都耦合到专用于虚拟机/虚拟机管理器的处理器或者处理器核心上。在单处理器或者单处理器核心计算设备102中,多个虚拟机和虚拟机管理器106可以共享单处理器或者处理器核心。图3中示出了举例性的单/多处理器或者处理器核心计算设备102,下面会对此进行详细描述。下文中,包括在权利要求在内,处理器和处理器核心将可以互换使用,每一术语都包括另外一个。
[0016] 如图所示和前面间接提到的那样,计算设备102可以包括多个虚拟机,例如虚拟机104。除非本发明实施例加以明确说明,否则的话,虚拟机104可以是任何一种虚拟机。虚拟机104可以是一个独立的操作环境,它表现得就像一个独立的计算机系统一样。对于通过网络结构耦合到计算设备102的外部系统而言,虚拟机104就好像独立的计算设备一样。虚拟机104也可以具有能够管理多个进程(例如目标进程110)的操作系统,可以包括用于将所引用的线性存储器地址映射到客户物理地址的数据结构,例如客户页面表,还可以具有专属于虚拟机104的受保护存储器空间。适当的虚拟机和虚拟技术包括、但不限于:位于华盛顿州Redmond的微软公司、位于加州Palo Alto的VMware公司以及英国剑桥的XenSource的产品。
[0017] 在一些实施例中,计算设备102可以包括虚拟机管理器(下文中称之为VMM)106,后者具有服务操作系统(OS)(未显示)、完整性测量模块(IMM)112、存储器管理器114、活动页表116、验证引擎120,在一些实施例中还包括例如图1b所示的代码执行引擎118。VMM106可以包括计算机设备102的服务分区,它管理设备102的实际硬件资源,包括存储器页面,例如进程110的存储器页面,以及协调资源在虚拟机计算设备102中的使用情况。如果计算设备102是单处理器设备或者可由计算设备102的不同处理器操作(未显示),则VMM
106可以由与虚拟机104相同的处理器操作。
[0018] 如图所示,虚拟机104包括客户页面表108。客户页表108可以由虚拟机104的处理器用来查找与由处理器正在执行的指令所引用的线性存储器地址相对应的客户物理存储器地址。然而,客户页面表108可以不包括正在处理的指令试图访问的存储器页面的主机物理地址和客户物理地址之间的映射。如下面要进一步进行讨论的那样,这些映射可以存储在VMM106的活动页表116内。因此,当由虚拟机104创建客户页表108以便用于目标进程110的地址转换时,客户页表108并没有被虚拟机104用于完全的地址转换。客户页表在本领域中是公知的,因此这里不再赘述。
[0019] 在不同的实施例中,虚拟机104包括许多进程,例如目标进程110。目标进程110可以是一个基于主机的入侵检测进程,它能够检测计算机的安全利用情况,例如蠕虫和病毒。例如,入侵检测进程包括由加州Santa Clara的McAfee和加州Cupertino的Symantec提供的进程。目标进程110被载入计算设备102的存储器中,并且在执行期间它会引用其存储器空间的许多虚拟地址。在目标进程110的例程执行期间,虚拟地址会以某一个频率和一定的顺序而被引用。在一些实施例中,例如图1b所示的那些实施例中,目标进程110的指令可以由代码执行引擎118中的存储器加以修改,以使目标进程110向VMM 106的代码执行引擎118发出VMCALL。在发出VMCALL之后,代码执行引擎118可以将目标进程110的指令恢复到它们原始的状态。在另一个未显示的实施例中,目标进程110可以引用存储器映射计算设备102寄存器的虚拟地址,而不是引用虚拟地址进行存储器访问。在另一个实施例中,目标进程110可以引用另一进程的虚拟地址,所述另一进程正在执行位于虚拟地址的进程调用。
[0020] 如图所示,VMM 106包括完整性测量模块(IMM)112。在一些实施例中,IMM 112能够在其被载入到存储器中时测量和验证目标进程110的完整性。在测量和验证目标进程110时,IMM 112依赖由例如管理员提供给IMM的完整性显示。完整性显示在目标进程110被载入到存储器中时对其进行描述,可以包括关于目标进程110的静态信息(例如目标进程110的各部分的内容),可以描述目标进程110的统计执行情况,从而可以标识目标进程
110期望引用的虚拟地址,以及目标进程110期望引用每一地址的频率。在一个实施例中,完整性显示的统计执行情况可以包括表示目标进程110应当以何种频率引用给定虚拟地址的柱状图。IMM 112可以利用描述当被载入到存储器中时目标进程110的那部分完整性显示,将该描述与目标进程110当前是如何被载入到存储器中的情形进行比较,这样就验证出包括目标进程110的指令没有受损害。一旦验证了目标进程110,在图1a所示的一个实施例中,IMM 112就可以给存储器管理114以及验证引擎120提供完整性显示。在如图
1b中所示的一个可替代实施例中,IMM 112可以给代码执行引擎118和验证引擎120提供完整性显示。关于IMM 112和完整性显示的详细情况可以参阅申请号为11/173,851、标题为“Signed Manifestfor Run-Time Verification of Software Program Identity and Integrity”的美国专利申请。
[0021] 在不同的实施例中,VMM 106包括用于创建和维护VMM 106的活动页表116的存储器管理器114。在例如图1a所示的一些实施例中,VMM106的存储器管理器114还能观测目标进程期望引用的虚拟地址的引用情况,并且将引用情况通知给验证引擎120。在一个实施例中,存储器管理114可以进一步监控目标进程110和由目标进程110实际引用的另一进程之间的相互依赖性,和/或监控目标进程110和实际引用进程之间的调用和返回点。相互依赖性和/或调用和返回点也可以通知给验证引擎120。一旦从IMM 112接收到目标进程110的验证结果以及接收到完整性显示,存储器管理器114就可以基于由完整性显示描述的目标进程110的统计执行情况修改活动页表116。例如,对于目标进程110期望引用的每一虚拟地址,存储器管理器114都可以将该虚拟地址相应的活动页表入口标记为“不存在”。虚拟机104的处理器处理那些引用了被标记为不存在的虚拟地址的目标进程110的指令,它可以通过一条VMEXIT指令向VMM 106发出页面错误。然后,存储器管理器114就可以记录每一个页面错误,并且确定与页面错误关联的引用虚拟地址是不是由存储器管理器114在活动页表116中标记为不存在的虚拟地址。如果页面错误与那些地址中的某一个相关联,则存储器管理器114就可以将观测到的虚拟地址引用通知验证引擎120。在一个实施例中,存储器管理器114可以只在目标进程110的执行结束时将观测到的虚拟地址引用成批地通知给验证引擎120。在其它实施例中,除了将引用的虚拟地址通知验证引擎120之外,存储器管理器114还记录与每一个引用相关的访问类型(也就是,读访问、写访问、执行访问、计算设备102寄存器的访问,等等),并进一步将多种访问类型通知验证引擎120。在其它未显示的实施例中,存储器管理器可以创建和维护嵌套的和扩展的页表,而不是活动页表116。这些嵌套和扩展页表可以不与客户页表108自动同步,但是可以与客户页表108相干地执行。在所有其它方面,例如进入上述的页面错误,存储器管理器114可以对嵌套和扩展的页表以与上述的引用活动页表116相同的方式操作。
[0022] 如图所示,VMM 106可以包括提供客户物理地址到主机物理地址映射的活动页表116。如上所述,活动页表116可以由存储器管理器114创建和维护。活动页表116对应于客户页表108并周期性或者持续性地与客户页表同步。如果不是使用客户页表108进行地址转换,虚拟机104的处理器实际上可以利用活动页表116来获得目标进程110的指令试图访问的存储器页面的物理存储器位置。在如图1a所示的一些实施例中,存储器管理器
114可以将活动页表116的一个或多个条目标记为“不存在”,从而使试图使用这些条目的处理器发出页面错误。诸如活动页表116这样的活动页表116在本领域中都是公知的,因此不再赘述。
[0023] 在如图1b所示的一些实施例中,VMM 106可以进一步包括代码执行引擎118。代码执行引擎118能够观测由目标进程110引用的虚拟地址以及将此引用通知给验证引擎120。在目标进程110执行之前,当目标进程110的指令存入存储器中时,代码执行引擎118可以修改目标进程110的指令,以使目标进程110向代码执行引擎118发出VMCALL,而不是引用目标进程110期望引用的虚拟地址或者除此之外。至少部分地根据上述的完整性显示可以确定此修改,这些完整性显示描述目标进程110的统计执行情况,包括目标进程110期望引用的虚拟地址。对于每一地址,代码执行引擎118都可以修改将会引用该虚拟地址的指令,用一个指令代替它或者向它增加一个指令,这个指令在执行时可以对代码执行引擎118发出VMCALL。然后,代码执行引擎118可以捕获VMCALL,对于与每个VMCALL相关的虚拟地址,记录该VACALL对该虚拟地址的引用,将该虚拟地址的引用通知给验证引擎120。在一个实施例中,代码执行引擎118可以只在目标进程110的执行结束时将观测到的虚拟地址引用成批量地通知给验证引擎120。在其它实施例中,除了将引用的虚拟地址通知验证引擎120之外,代码执行引擎118还记录与每一个引用相关的访问类型(也就是,读访问、写访问,等等),并进一步将多种访问类型通知验证引擎120。而且,在不同实施例中,代码执行引擎118可以存储修改前的目标进程110指令的副本,一旦接收到VMCALL,就执行目标进程110的运行时(run-time)修补,将其恢复到修改前的状态并且对目标进程110的未修改执行进行仿真。然后,代码执行引擎118在目标进程110中重新插入修改结果,以使得进一步引用将会导致进一步的VMCALL。
[0024] 如图1a和1b所示,VMM 106还包括验证引擎120,它用于将观测到的虚拟地址引用与期望的虚拟地址引用进行比较,基于比较结果产生统计量,将至少一个生成的统计量与门限度量进行比较。如上所述,验证引擎120可以从存储器管理器114(在图1a所示的一系列实施例中)或者从代码执行引擎118(在图1b所示的一系列实施例中)接收所观测到的虚拟地址的通知。在一个实施例中,验证引擎120也可以得知至少一些观测到的虚拟地址引用的访问类型。如上所述,验证引擎120还可以从IMM 112接收完整性显示,完整性显示描述目标进程110的统计执行情况,包括目标进程110期望引用的虚拟地址和目标进程110期望引用一个或多个虚拟地址的频率。在一个实施例中,完整性显示还可以提供门限度量。
[0025] 一旦接收到观测的虚拟地址引用和完整性显示,验证引擎120就可以比较观测到的引用和期望的引用并且产生统计量,例如百分率,来描述观测到的执行情况。在一些实施例中,验证引擎120还可以确定观测频率,以描述一个或多个虚拟地址被引用的频率,可以比较计算出的观测频率和期望的频率,可以产生统计量,例如标准偏差,以描述偏离期望频率的幅度或变化量。
[0026] 在一些实施例中,完整性显示还包括期望的访问类型,验证引擎120比较观测到的访问类型和期望的访问类型,可以基于比较结果产生例如上面描述的那些统计量。在一个实施例中,完整性显示还包括期望的相互依赖性和/或调用和返回点,例如上面提到的那些,验证引擎120将观测的相互依赖性和/或调用和返回点与期望的相互依赖性和/或调用和返回点进行比较,并且基于比较结果产生例如上面描述的那些统计量。
[0027] 在产生统计量之后,验证引擎120可以将这些量和门限度量作比较。门限度量可以表示,例如,该量必须满足的值。如果比较的结果是该量不满足门限度量,则验证引擎120可以,例如通过告警或者本领域任何其它适当的公知技术通知计算设备102的管理员。
[0028] 图2示出了本发明的不同实施例的方法的选定的操作的流程图。如图所示,在模块202中,计算设备的VMM的IMM可以在计算设备的虚拟机的目标进程被载入到存储器中时验证其完整性。在验证目标进程的完整性的过程中,IMM可以利用完整性显示,该完整性显示描述了当该目标进程被载入到存储器中时的该目标进程,以及描述了该目标进程的统计执行情况,包括目标进程期望引用的虚拟地址以及目标进程期望引用虚拟地址的频率。
[0029] 在图1a所示和上述的一些实施例中,在验证了目标进程之后,IMM可以为存储器管理器和VMM的验证引擎提供完整性显示。然后,在模块204中,存储器管理器可以修改VMM的活动页表,把那些被完整性显示列为期望要引用的虚拟地址标记为“不存在”。在模块206中,存储器管理器接下来可以观测目标进程的执行情况,在模块208中捕获/记录由处理目标进程指令的虚拟机的处理器发出的页面错误。在使用活动页表试图转换引用虚拟地址时处理器就会发出错误,这是因为活动页表已经被存储器管理器修改而将虚拟地址标记为“不存在”。在模块210中,在捕获/记录页面错误之后,存储器管理器可以记录虚拟地址引用的观测结果并且将观测到的引用通知验证引擎。
[0030] 在图1b所示和上面所述的可替代实施例中,在验证了目标进程之后,IMM为代码VMM的验证引擎和执行引擎提供完整性显示。然后,代码执行引擎记录目标进程期望引用的虚拟地址,并且在模块212中修改存储器中包括目标进程在内的指令,一旦达到引用一个期望虚拟地址的指令,就让目标进程发出VMCALL到代码执行引擎。代码执行引擎还在修改目标进程之前以未修改的形式存储目标进程指令。在修改了目标进程之后,在模块214中,代码执行引擎可以观测目标进程的执行情况,在模块216中为了响应修改而捕获/接收由目标进程发出的VMCALL。在接收到每一VMCALL时,代码执行引擎都在模块218中执行目标进程修补的运行时修补,从而将指令恢复到它们修改前的状态,这样就可以对目标进程的未修改执行进行仿真。在捕获VMCALL之后,在模块220中,代码执行引擎可以观测对与VMCALL相关的虚拟地址的引用,并可以将虚拟地址引用的观测结果通知验证引擎。
[0031] 一旦从存储器管理器或者代码执行引擎接收到虚拟地址引用观测的通知,在模块222中,验证引擎就可以比较观测到的引用和从完整性显示获得的虚拟地址引用,并且,可以产生一个或多个统计量,例如百分率,以描述观测到的执行情况。在一个实施例中,验证引擎还可以确定观测到的虚拟地址被引用的一个或多个频率,可以将这个频率或这多个频率与从完整性显示获得的期望频率作比较,从而产生一个或多个统计量,例如标准偏差。产生统计量之后,在模块224中,验证引擎将统计量与门限度量进行比较,以确定是否需要提醒计算设备的管理员。
[0032] 图3示出了适于实施本发明不同实施例的示例性计算机系统。如图所示,计算系统300包括许多处理器(或者处理器核心)302和系统存储器304。在本申请中,包括权利要求在内,术语“处理器”和“处理器核心”应解释为是同义词,除非文中另有明确说明。另外,计算系统300包括海量存储器306(例如盘片、硬盘、只读光盘(CDROM)等等)、输入/输出设备308(例如键盘、光标控制器等等)和通信接口310(例如网络接口卡、调制解调器等等)。这些部件通过系统总线312互相耦合,系统总线312代表一个或多个总线。在多个总线的情况下,它们通过一个或多个总线桥接器而桥接(未显示)起来。在不同的实施例中,海量存储器306可以分为多个分区,以供虚拟机使用,每一个虚拟机都对分得的分区具有排他性的使用权。
[0033] 这些部件各自执行其在本领域中公知的传统功能。尤其是,系统存储器304和海量存储器306可以用于存储编程指令的工作副本和永久副本,所述编程指令能够实现存储器管理器、完整性测量模块、代码执行引擎、验证引擎等等的所有方面或者选定的方面,本申请中将它们统一表示为322。指令可以由处理器302或者高级语言例如C语言支持的汇编程序指令编译而来。
[0034] 编程指令的永久副本可以在工厂中放入永久性的海量存储器306中,或者现场放入,通过例如分发介质(未显示),例如光盘(CD),或者通过通信接口310(从分发服务器(未显示))。
[0035] 这些部件302-312的结构都是公知的,因此这里不再赘述。
[0036] 虽然上面说明和描述了具体的实施例,但本领域技术人员将会明白,大量可替代的和/或等效实现方式可以替代所示和描述的具体实施例,而这并不偏离本发明的实施例的保护范围。本申请试图涵盖本文讨论的实施例的任何变通和变化。因此,应明白的是,本发明的实施例只由权利要求及其等同物来加以界定。