(12)发明专利申请
(10)申请公布号 CN 108388793 A(43)申请公布日 2018.08.10
(21)申请号 201810018832.4(22)申请日 2018.01.09
(71)申请人 南瑞集团有限公司
地址 210003 江苏省南京市鼓楼区南瑞路8
号
申请人 南京南瑞信息通信科技有限公司
国网浙江省电力有限公司信息通信分公司
国家电网有限公司(72)发明人 刘苇 吕小亮 姚一杨 祁龙云
赵保华 丁晓玉 栾国强 刘行 魏兴慎 从正海 屠正伟 (74)专利代理机构 南京纵横知识产权代理有限
公司 32224
代理人 董建林 张赏
权利要求书2页 说明书5页 附图2页
(51)Int.Cl.
G06F 21/55(2013.01)G06F 21/53(2013.01)
CN 108388793 A(54)发明名称
一种基于主动防御的虚拟机逃逸防护方法(57)摘要
本发明公开了一种基于主动防御的虚拟机逃逸防护方法,包括自主学习Hypervisor程序和虚拟机模拟器程序的可信度量值和正常执行时的所有行为,并生成系统日志;解析系统日志,更新可信策略配置文件和强制访问控制策略配置文件;将可信策略配置文件和强制访问控制策略配置文件以强制模式加载到内核增强模块中;内核增强模块根据加载的可信度量值和系统行为,阻止被修改的程序执行,阻止程序的异常行为。本发明采用可信计算和自学习的强制访问控制,保证了被修改的Hypervisor程序或者虚拟机模拟器程序不能被运行,限制异常行为,有效的遏制虚拟机非法权限状态转换。
CN 108388793 A
权 利 要 求 书
1/2页
1.一种基于主动防御的虚拟机逃逸防护方法,其特征在于,包括以下步骤:1)自主学习Hypervisor 程序和虚拟机模拟器程序的可信度量值和正常执行时的所有行为,并生成系统日志;
2)解析系统日志,更新Hypervisor 程序和虚拟机模拟器程序所对应的可信策略配置文件和强制访问控制策略配置文件;
3)将可信策略配置文件和强制访问控制策略配置文件以强制模式加载到内核增强模块中;
4)内核增强模块根据所加载的策略监控Hypervisor 程序和虚拟机模拟器程序的可信度量值和系统行为,阻止被修改的程序执行,并阻止程序的异常行为。
2.根据权利要求1所述的一种基于主动防御的虚拟机逃逸防护方法,其特征在于,所述步骤1)的具体实现过程如下:
11)加载内核增强模块;12)获取Hypervisor 程序路径和虚拟机模拟器程序路径;13)生成Hypervisor 程序和虚拟机模拟器程序的可信策略配置文件;14)生成Hypervisor 程序和虚拟机模拟器程序强制访问控制策略配置文件;15)将可信策略配置文件以学习模式加载到内核增强模块中;16)将强制访问控制策略配置文件以学习模式加载到内核增强模块中;17)启动Hypervisor 程序并通过虚拟机模拟器程序启动并运行虚拟机;18)内核增强模块将Hypervisor 程序和虚拟机模拟器程序的可信度量值记录到可信度量日志中,将所有系统行为记录到强制访问控制日志中。
3.根据权利要求2所述的一种基于主动防御的虚拟机逃逸防护方法,其特征在于,所述强制访问控制策略配置文件通过程序代码编写,具体内容为,保证每个虚拟机只能访问自己的文件,从而实现虚拟机之间的隔离。
4.根据权利要求1所述的一种基于主动防御的虚拟机逃逸防护方法,其特征在于,所述步骤2)的具体实现过程如下:
21)读取系统日志,过滤出由内核增强模块所产生的可信度量日志和强制访问控制日志;
22)解析Hypervisor 程序和虚拟机模拟器程序的可信度量日志,将可信度量值更新到可信策略配置文件中;
23)解析所有的强制访问控制日志,将解析到的每条操作插入到事件树中;24)遍历事件数中的事件,即进程对文件的所有访问操作,提供相应的处理策略,供用户选择;
25)将选择的结果更新到Hypervisor 程序和虚拟机模拟器程序的强制访问控制策略配置文件中。
5.根据权利要求4所述的一种基于主动防御的虚拟机逃逸防护方法,其特征在于,所述步骤24)中,将处理策略抽象为<主体、客体、权限>,其中权限表示是否允许,如果允许,表示将以何种权限允许。
6.根据权利要求1所述的一种基于主动防御的虚拟机逃逸防护方法,其特征在于,所述步骤3)的具体实现过程如下:
2
CN 108388793 A
权 利 要 求 书
2/2页
31)读取Hypervisor 程序和虚拟机模拟器程序的可信策略配置文件,解析出程序路径和程序的可信度量值,并将程序路径和可信度量值、强制模式运行标志通过ioctl接口写入到内核增强模块中;
32)读取Hypervisor 程序和虚拟机模拟器程序的强制访问控制策略配置文件,解析出程序对系统文件、系统资源、系统能力等所允许执行的操作,并将解析结果和强制模式运行标志通过sysfs写入到内核增强模块中。
7.根据权利要求1所述的一种基于主动防御的虚拟机逃逸防护方法,其特征在于,所述步骤4)中内核增强模块采用Linux的LSM框架,在LSM hook检查位置插入内核增强模块的检查执行函数,hook处的内核增强模块检查执行函数检查安全上下文,判断该请求是否符合可信安全策略和强制访问控制安全策略,以对程序的可信度量值与系统行为进行监控,并允许或者拒绝,具体过程如下:
41)当内核准备加载Hypervisor 程序或虚拟机模拟器程序时,内核增强模块先计算程序的可信度量值,与内核增强模块中保存的可信度量值进行比较,若不相等,则说明程序被修改了,阻止其继续加载;
42)在Hypervisor 程序或虚拟机模拟器程序运行时,当调用到LSM接口时,内核增强模块通过保存的强制访问控制策略判断是否可以执行,若没有这条策略,则阻止其执行。
3
CN 108388793 A
说 明 书
一种基于主动防御的虚拟机逃逸防护方法
1/5页
技术领域
[0001]本发明涉及一种基于主动防御的虚拟机逃逸防护方法,属于虚拟化安全技术领域。
背景技术
[0002]云计算是继并行计算、网格计算、效用计算等之后的又一个新的计算概念,被视为计算机领域的又一场变革。云计算是一种以服务为特征的计算模式,它通过对所有的计算资源进行抽象后以新的业务模式提供高性能、低成本的持续计算以及存储空间等各种资源服务,支撑各类信息化应用。云计算服务最大的特点在于能够合理配置计算机资源、提高计算资源的利用率和降低成本。
[0003]随着互联网的飞速发展,传统计算环境正大规模向云计算环境迁移,传统环境下的安全问题有些可以在云计算环境下解决,然而云计算环境也带来了新型的安全问题。从理论上来看,无论是云计算环境或者传统环境,操作系统本身的安全问题都无法避免,但云计算环境的集中化管理可解决部分传统环境不便处理的安全问题。然而,云计算环境引入的虚拟化、多租户、数据集中管理和平台共享化等特性,使得云计算环境面临了比传统环境更加复杂的安全隐患,譬如在虚拟化环境中出现的虚拟机逃逸攻击、虚拟机跳跃攻击等问题。因此,如何解决云计算环境下的安全问题,是云计算提供可靠交付和使用的重要瓶颈。[0004]云计算环境的多租户情况使得无法保证每一个用户或者虚拟机都处于无恶意攻击的情形,而虚拟机直接处于虚拟化层之上,因此需要对虚拟机的攻击进行研究和预防。虚拟机逃逸攻击通过攻击Hypervisor 或宿主机操作系统,进而危害其他虚拟机或共享资源,在云环境中造成的危害是极大的。[0005]在虚拟化环境中,系统内核必须运行于Ring 0,而Hypervisor 及其管理下的Guest OS 却不能运行于Ring 0(否则就无法对所有虚拟机进行有效的管理,就像以往的协同式多任务操作系统无法保证系统的稳健运行一样)。因此,在没有处理器辅助的虚拟化情况下,困难在于如何采用Ring 0 之外的等级来运行Guest OS。目前主流的解决方法是利用Ring Deprivileging(特权等级下降),并具有两种选择:Guest OS 运行于Ring 1(0/1/3 模型),或者Ring 3(0/3/3 模型)。无论是哪种模型,Guest OS 都无法运行于Ring 0。发明内容
[0006]为了解决上述技术问题,本发明提供了一种基于主动防御的虚拟机逃逸防护方法,采用可信计算和自学习的强制访问控制,有效的遏制虚拟机非法权限状态转换。[0007]为了达到上述目的,本发明所采用的技术方案是:
一种基于主动防御的虚拟机逃逸防护方法,包括以下步骤:1)自主学习Hypervisor 程序和虚拟机模拟器程序的可信度量值和正常执行时的所有行为,并生成系统日志;
2)解析系统日志,更新Hypervisor 程序和虚拟机模拟器程序所对应的可信策略配置
4
CN 108388793 A
说 明 书
2/5页
文件和强制访问控制策略配置文件;
3)将可信策略配置文件和强制访问控制策略配置文件以强制模式加载到内核增强模块中;
4)内核增强模块根据所加载的策略监控Hypervisor 程序和虚拟机模拟器程序的可信度量值和系统行为,阻止被修改的程序执行,并阻止程序的异常行为。[0008]前述的步骤1)的具体实现过程如下:
11)加载内核增强模块;12)获取Hypervisor 程序路径和虚拟机模拟器程序路径;13)生成Hypervisor 程序和虚拟机模拟器程序的可信策略配置文件;14)生成Hypervisor 程序和虚拟机模拟器程序强制访问控制策略配置文件;15)将可信策略配置文件以学习模式加载到内核增强模块中;16)将强制访问控制策略配置文件以学习模式加载到内核增强模块中;17)启动Hypervisor 程序并通过虚拟机模拟器程序启动并运行虚拟机;18)内核增强模块将Hypervisor 程序和虚拟机模拟器程序的可信度量值记录到可信度量日志中,将所有系统行为记录到强制访问控制日志中。
[0009]前述的强制访问控制策略配置文件通过程序代码编写,具体内容为,保证每个虚拟机只能访问自己的文件,从而实现虚拟机之间的隔离。[0010]前述的步骤2)的具体实现过程如下:
21)读取系统日志,过滤出由内核增强模块所产生的可信度量日志和强制访问控制日志;
22)解析Hypervisor 程序和虚拟机模拟器程序的可信度量日志,将可信度量值更新到可信策略配置文件中;
23)解析所有的强制访问控制日志,将解析到的每条操作插入到事件树中;24)遍历事件数中的事件,即进程对文件的所有访问操作,提供相应的处理策略,供用户选择;
25)将选择的结果更新到Hypervisor 程序和虚拟机模拟器程序的强制访问控制策略配置文件中。
[0011]前述的步骤24)中,将处理策略抽象为<主体、客体、权限>,其中权限表示是否允许,如果允许,表示将以何种权限允许。[0012]前述的步骤3)的具体实现过程如下:
31)读取Hypervisor 程序和虚拟机模拟器程序的可信策略配置文件,解析出程序路径和程序的可信度量值,并将程序路径和可信度量值、强制模式运行标志通过ioctl接口写入到内核增强模块中;
32)读取Hypervisor 程序和虚拟机模拟器程序的强制访问控制策略配置文件,解析出程序对系统文件、系统资源、系统能力等所允许执行的操作,并将解析结果和强制模式运行标志通过sysfs写入到内核增强模块中。[0013]前述的步骤4)中内核增强模块采用Linux的LSM框架,在LSM hook检查位置插入内核增强模块的检查执行函数,hook处的内核增强模块检查执行函数检查安全上下文,判断该请求是否符合可信安全策略和强制访问控制安全策略,以对程序的可信度量值与系统行
5
CN 108388793 A
说 明 书
3/5页
为进行监控,并允许或者拒绝,具体过程如下:
41)当内核准备加载Hypervisor 程序或虚拟机模拟器程序时,内核增强模块先计算程序的可信度量值,与内核增强模块中保存的可信度量值进行比较,若不相等,则说明程序被修改了,阻止其继续加载;
42)在Hypervisor 程序或虚拟机模拟器程序运行时,当调用到LSM接口时,内核增强模块通过保存的强制访问控制策略判断是否可以执行,若没有这条策略,则阻止其执行。[0014]本发明所达到的有益效果为:
本发明采用可信计算和自学习的强制访问控制,即保证了被修改的Hypervisor 程序或者虚拟机模拟器程序不能被运行,又限制了Hypervisor 程序和虚拟机模拟器程序的异常行为,有效的遏制虚拟机非法权限状态转换,达到了虚拟机逃逸防护的目的。附图说明
[0015]图1为虚拟机逃逸示意图;
图2为本发明方法流程图;
图3为内核增强模块判决流程图。
具体实施方式
[0016]下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。[0017]如图1,在虚拟机逃逸攻击中,攻击者利用恶意应用程序获得该虚拟机的最高权限,即从非根模式的Ring 3 权限升级到非根模式的Ring 0 权限,继而可代替该虚拟机执行Hypervisor 给予的全部操作。由于虚拟机模拟器与Hypervisor 之间通过I/O控制模拟指令进行交互,此时的攻击者便可模拟伪I/O 操作来获得根模式下的Ring 3 权限,之后攻击者便可利用Hypervisor 本身存在的漏洞或者将攻击代码注入到Hypervisor,造成Hypervisor 的堆栈溢出、默认命令修改等问题,此时的Hypervisor 已经被攻陷。由于攻击者已经获得根模式下的Ring 0 权限,Hypervisor以及宿主机操作系统处于非安全状态,宿主机的数据以及运行在该宿主机上全部虚拟机的运行状态都有可能被攻击或篡改。[0018]如图2所示,本发明的基于主动防御的虚拟机逃逸防护方法,基于Linux LSM实现,包括以下步骤:
步骤S1,自主学习Hypervisor 程序和虚拟机模拟器程序的可信度量值和正常执行时的所有行为,并生成系统日志,具体过程如下:
11)加载内核增强模块;12)获取Hypervisor 程序路径和虚拟机模拟器程序路径;13)生成Hypervisor 程序和虚拟机模拟器程序的可信策略配置文件;可信策略是采用现有技术生成的,也可以手动编写,主要是描述哪些程序是可以执行的,是个可执行文件的列表,如:
/usr/bin/which/usr/bin/ls14)生成Hypervisor 程序和虚拟机模拟器程序强制访问控制策略配置文件;强制访问
6
CN 108388793 A
说 明 书
4/5页
控制策略配置文件通过程序代码编写,具体内容为,保证每个虚拟机只能访问自己的文件,从而实现虚拟机之间的隔离;
15)将可信策略配置文件以学习模式加载到内核增强模块中;16)将强制访问控制策略配置文件以学习模式加载到内核增强模块中;17)启动Hypervisor 程序并通过虚拟机模拟器程序启动并运行虚拟机;18)内核增强模块将Hypervisor 程序和虚拟机模拟器程序的可信度量值记录到可信度量日志中,将所有系统行为记录到强制访问控制日志中。[0019]步骤S2,解析系统日志,更新Hypervisor 程序和虚拟机模拟器程序所对应的可信策略配置文件和强制访问控制策略配置文件,具体过程如下:
21)读取系统日志,过滤出由内核增强模块所产生的日志,包括可信度量日志和强制访问控制日志;
22)解析Hypervisor 程序和虚拟机模拟器程序的可信度量日志,将可信度量值更新到可信策略配置文件中;
23)解析所有的强制访问控制日志,将解析到的每条操作插入到事件树中;24)遍历事件数中的事件,即进程对文件的所有访问操作,提供相应的处理策略,我们把策略抽象为<主体、客体、权限>,其中权限表示是否允许,如果允许,表示将以何种权限允许,以提供相应的处理策略,供用户选择;
25)将用户的选择结果更新到Hypervisor 程序和虚拟机模拟器程序的强制访问控制策略配置文件中。[0020]步骤S3,将可信策略配置文件和强制访问控制策略配置文件以强制模式加载到内核增强模块中,具体过程如下:
31)读取Hypervisor 程序和虚拟机模拟器程序的可信策略配置文件,解析出程序路径和程序的可信度量值,并将程序路径和可信度量值、强制模式运行标志通过ioctl接口写入到内核增强模块中;
32)读取Hypervisor 程序和虚拟机模拟器程序的强制访问控制策略配置文件,解析出程序对系统文件、系统资源、系统能力等所允许执行的操作,并将解析结果和强制模式运行标志通过sysfs写入到内核增强模块中。[0021]步骤S4,内核增强模块根据所加载的策略监控Hypervisor 程序和虚拟机模拟器程序的可信度量值和系统行为,阻止被修改的程序执行,并阻止程序的异常行为。[0022]内核增强模块主要采用Linux现有的LSM框架,在LSM hook检查位置插入内核增强模块的检查执行函数,hook处的内核增强模块检查执行函数检查安全上下文,判断该请求是否符合可信安全策略和强制访问控制安全策略,以对程序的可信度量值与系统行为进行监控,并允许或者拒绝,内核增强模块的判决过程具体如图3所示:
41)当内核准备加载Hypervisor 程序或虚拟机模拟器程序时,内核增强模块先计算程序的可信度量值,与内核增强模块中保存的可信度量值进行比较,若不相等,则说明程序被修改了,阻止其继续加载;
42)在Hypervisor 程序或虚拟机模拟器程序运行时,当调用到LSM接口时,内核增强模块通过保存的强制访问控制策略判断是否可以执行,若没有这条策略,则阻止其执行。[0023]本发明方法以强制访问控制为基础,辅助以可信计算构建虚拟机逃逸的主动防御
7
CN 108388793 A
说 明 书
5/5页
体系,通过可信计算保证了被修改的Hypervisor 程序和虚拟机模拟器程序不能执行,可以排除病毒等异己,而强制访问控制则构建了Hypervisor 程序和虚拟机模拟器程序行为的白名单,解决他们自身的不足和漏洞。此外,该方法具有在操作系统层面自适应的学习业务行为,自动生成相应的强制访问控制策略和可信策略的能力。从而解决传统可信计算、强制访问控制模型固定单一、应用难度高、业务影响较大的缺陷。与现有技术相比,本发明方法通用性强,兼容性好,灵活性高,适合虚拟机逃逸安全防护的场合。[0024]本发明提出的虚拟机逃逸防护的方法是基于主动防御的,区别于被动防御,本方法是一种内核级的主动防御,基于Linux内核的LSM构建了可信计算和自学习的强制访问控制,可信计算保证了被修改的Hypervisor 程序和虚拟机模拟器程序无法执行,自学习的强制访问控制能够学习到Hypervisor 程序和虚拟机模拟器程序的所有正常行为,阻止其非法操作,从而实现在已存在缺陷漏洞的情况下,仍然能够对攻击免疫。[0025]本发明以自学习的系统强制访问控制为基础,辅助以应用可信度量,构建了虚拟机逃逸主动防御体系,具有学习模式和强制模式两种方式,在学习模式,记录了Hypervisor 程序以及虚拟机模拟器程序正常行为,并自动生成安全策略;在强制模式,内核增强模块负责在内核层面执行安全策略,非安全策略定义的操作默认拒绝。[0026]以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
8
CN 108388793 A
说 明 书 附 图
1/2页
图1
图2
9
CN 108388793 A
说 明 书 附 图
2/2页
图3
10
因篇幅问题不能全部显示,请点此查看更多更全内容