本公开涉及数据安全领域,尤其涉及一种实现虚拟机自省的方法和装置、电子设备及存储介质。
背景技术:
1、虚拟机自省(virtualmachineintrospection,vmi)技术是一种在虚拟机监视器(hypervisor)层面监控虚拟机(virtualmachine,vm)运行时状态的技术。由于该技术能够通过分析虚拟机操作系统运行时的活动来检测和防止异常入侵等,因而该技术在计算机安全领域研究有很高的关注度。
2、由于vmi具备可以监控和分析虚拟机运行时状态的特点,因此可以用来提高产品可维护性,例如,在虚拟机出现异常,任务无法正常运行时,可以通过vmi技术获取当前vm内部的状态信息进而进行进一步的分析;也可以通过结合从虚拟机获取的信息实现虚拟机监视器自身机制的优化,例如结合vm状态的vcpu调度策略优化等。由于虚拟机监视器具有超级权限访问虚拟机的所有硬件资源(例如处理器寄存器、内存以及设备等),因此,虚拟机监视器对运行在虚拟机上的操作系统访问的资源拥有完整的视图。
3、然而,从虚拟机监视器的视角来看,得到虚拟机的数据只是原始的位或字节数据,缺少更高层的操作系统抽象或语义信息,这个问题也被称作语义鸿沟(semanticgap)。因此,vmi技术需要克服语义鸿沟问题,重建对虚拟机操作系统的数据结构及高层语义信息的抽象。
技术实现思路
1、根据本公开实施例的第一方面,提供了一种实现虚拟机自省vmi的方法,包括:接收通过虚拟机监视器访问虚拟机内存区域以进行数据读取的读请求;虚拟机监视器根据所述读请求访问虚拟机内存区域进行数据读操作,并返回操作结果;在虚拟机监视器所属的虚拟化系统外部的设备上,基于所述操作结果进行语义信息重建。
2、可选地,在虚拟机监视器所属的虚拟化系统外部的设备上基于所述操作结果进行语义信息重建的步骤包括:通过使用虚拟机操作系统的符号表信息和源码对所述操作结果中包含的元数据进行解析;根据解析的元数据,重建虚拟机操作系统的数据结构和高层语义信息。
3、可选地,在所述语音信息重建以后,所述方法还包括:接收通过虚拟机监视器访问虚拟机内存区域以进行数据写入的写请求,并且虚拟机监视器根据所述写请求访问虚拟机内存区域进行数据写操作;和/或接收在虚拟机监视器中调度虚拟机操作系统中的虚拟机程序的程序调度请求,并且虚拟机监视器根据所述程序调度请求调度所述虚拟机程序执行操作,其中,所述写请求和所述程序调度请求符合通过所述语义信息重建而获得的虚拟机操作系统的数据结构和高层语义信息。
4、可选地,所述读请求、所述写请求和所述程序调度请求中的每一个请求是从所述设备接收的,并且至少包括虚拟机id、操作类型和符号的虚拟地址,其中,所述符号是函数名或变量名。
5、可选地,所述数据读操作/数据写操作的步骤包括:根据读请求/写请求中包含的虚拟机id,确定对应的虚拟机;根据所述虚拟机以及读请求/写请求中包含的所述符号的虚拟地址,确定待访问的所述虚拟机内存区域;对所述虚拟机内存区域进行读操作/写操作。
6、可选地,所述调度所述虚拟机程序执行操作的步骤是在虚拟化系统的硬件支持虚拟化主机扩展特性的情况下,在异常级别2中,在所述虚拟机监视器中执行的。
7、可选地,所述调度所述虚拟机程序执行操作的步骤包括:根据所述程序调度请求中包含的虚拟机id,确定对应的虚拟机;根据所述虚拟机以及所述程序调度请求中包含的所述符号的虚拟地址,确定所述虚拟机操作系统中的所述虚拟机程序;在所述虚拟机监视器中调度所述虚拟机程序执行操作。
8、根据本公开实施例的第二方面,提供了一种实现虚拟机自省vmi的装置,包括:vmi消息处理模块,被配置为接收通过虚拟机监视器访问虚拟机内存区域以进行数据读取的读请求;数据探测模块,被配置为:在虚拟化系统的虚拟机监视器中根据所述读请求访问虚拟机内存区域进行数据读操作,并返回操作结果;语义信息重建模块,被配置为:在虚拟机监视器所属的虚拟化系统外部的设备上,基于所述操作结果进行语义信息重建。
9、可选地,语义信息重建模块通过以下操作进行语义信息重建:通过使用虚拟机操作系统的符号表信息和源码对所述操作结果中包含的元数据进行解析;根据解析的元数据,重建虚拟机操作系统的数据结构和高层语义信息。
10、可选地,vmi消息处理模块还被配置为接收通过虚拟机监视器访问虚拟机内存区域以进行数据写入的写请求,并且,数据探测模块还被配置为在虚拟机监视器中根据所述写请求访问虚拟机内存区域进行数据写操作,和/或vmi消息处理模块还被配置为接收在虚拟机监视器中调度虚拟机操作系统中的虚拟机程序的程序调度请求,并且,所述装置还包括:操作系统os例程执行模块,被配置为在虚拟机监视器中根据所述程序调度请求调度所述虚拟机程序执行操作,其中,所述写请求和所述程序调度请求符合通过所述语义信息重建而获得的虚拟机操作系统的数据结构和高层语义信息。
11、可选地,所述读请求、所述写请求和所述程序调度请求中的每一个请求是从所述设备接收的,并且至少包括:虚拟机id、操作类型和符号的虚拟地址,其中,所述符号是函数名或变量名。
12、可选地,数据探测模块通过以下操作进行数据读操作/数据写操作:根据所述读请求/写请求中包含的虚拟机id,确定对应的虚拟机;根据所述虚拟机以及所述读请求/写请求中包含的所述符号的虚拟地址,确定待访问的所述虚拟机内存区域;对所述虚拟机内存区域进行读操作/写操作。
13、可选地,os例程执行模块在虚拟化系统的硬件支持虚拟化主机扩展特性的情况下,在异常级别2中,在所述虚拟机监视器中调度所述虚拟机程序执行操作。
14、可选地,os例程执行模块通过以下操作调度所述虚拟机程序执行操作:根据所述程序调度请求中包含的虚拟机id,确定对应的虚拟机;根据所述虚拟机以及所述程序调度请求中包含的所述符号的虚拟地址,确定所述虚拟机操作系统中的所述虚拟机程序;在所述虚拟机监视器中调度所述虚拟机程序执行操作。
15、根据本公开实施例的第三方面,提供了一种电子设备,包括:至少一个处理器;至少一个存储计算机可执行指令的存储器,其中,所述计算机可执行指令在被所述至少一个处理器运行时,促使所述至少一个处理器执行如上所述的实现vmi的方法。
16、根据本公开实施例的第四方面,提供了一种存储指令的计算机可读存储介质,其中,当所述指令被至少一个处理器运行时,促使所述至少一个处理器执行如上所述的实现vmi的方法。
17、本公开的实施例提供的技术方案至少带来以下有益效果:根据本公开实施例的实现vmi的方法和装置,不需要在虚拟机操作系统中做任何修改或增加任何模块,完全消除了新增模块会对虚拟机操作系统带来的性能开销,并且通过只在虚拟机监视器中添加轻量模块(例如,vmi消息处理模块、数据探测和例程执行模块(即数据探测模块和os例程执行模块)),达到监视虚拟机的运行状态的效果。此外,还能够在虚拟机监视器侧访问并修改虚拟机操作系统的指定运行参数(如通过写操作执行运行参数,进行任务调度机制),优化操作系统的运行策略。进一步地,在硬件支持vhe的虚拟化系统中,通过在虚拟机监视器侧运行指定的虚拟机程序,改变客户虚拟机函数执行的时机和顺序,达到提升系统运行效率的目的(如虚拟机操作系统启动阶段的初始化函数)。另外,根据本公开实施例的实现vmi的方法和装置可通过设置在虚拟化系统外的pc端的语义信息重建模块进行语义重建,能够较大程度减轻虚拟机监视器的负担,同理,减少了对整个系统带来的性能开销。
18、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。