一种增强ARM平台虚拟机自省安全的方法及装置与流程

文档序号:11251265阅读:621来源:国知局
本发明涉及安全脆弱性宿主机中虚拟机自省安全
技术领域
:,尤其涉及一种增强arm平台虚拟机自省安全的方法及装置。
背景技术
::众所周知,通用的虚拟机自省(vmi)代码部署在宿主机(host)的用户空间,通过虚拟机管理器(hypervisor)来访问虚拟机(vm)内部的二进制数据,通过桥接vm内部的语义隔离问题将这些二进制数据转化为操作系统层次的有效的vm内部状态信息,从而利用这些状态信息来进行下一步的安全监测。因而,现有的vmi的正常运行依赖于这样的前提:host和hypervisor均为安全且可信的。这意味着一旦这一前提被打破,vmi的正常运行将不能再被保证。事实上,随着越来越多的host和虚拟化软件栈的脆弱点被暴露出来,该前提已不再成立。如何在存在安全隐患的宿主机环境中部署安全增强的虚拟机自省技术成为了vmi安全研究领域极其重要的一个议题。脆弱宿主机环境中的vmi面临多方面的安全威胁,一是信息泄露:vmi技术打破了云环境中多租户之间的隔离,vmi获取的vm内部信息被恶意利用将会造成vm信息的严重泄露。二是vmi运行时不安全:vmi运行在用户态,一旦宿主机环境的脆弱性被利用,vmi的代码和数据都将暴露在攻击者面前。三是vmi底层输入数据不正确:vmi依赖hypervisor获取vm相关核心数据,这给了hypervisor和host去篡改这些核心数据的机会。现今,对vmi安全的研究刚起步。针对信息泄露这一问题,常用的措施是将加解密思想与vmi相结合,该方法将vmi信息泄露的风险转移到加解密密钥的保护上,并且引入了额外的加解密操作。对于vmi运行时不安全以及底层输入数据不正确的研究,业界则还未涉及。技术实现要素:本发明立足于不可信宿主机环境中vmi所面临的安全威胁这一现状,旨在提供一种增强arm平台虚拟机自省安全的方法及装置,该方法及装置能够抵抗信息泄露、保证vmi自身代码和数据在整个生命周期内的准确性即保证vmi运行时安全以及vmi底层输入数据的正确性。针对上述不足,本发明所采用的技术方案为:一种增强arm平台虚拟机自省安全的方法,其步骤包括:1)将核心代码(corelibrary)部署在硬件隔离环境trustzone(可信环境)中;2)当特定的触发事件发生时,触发触发机制以陷入到el3层的安全增强接口(interface),并将该触发事件中相关的vm数据和hypervisor数据传递到该安全增强接口;3)安全增强接口记录和维护上述vm数据和hypervisor数据,并根据核心代码的数据访问请求将与该数据访问请求相关的vm数据和hypervisor数据传递给核心代码;4)核心代码根据所接收的vm数据和hypervisor数据以及自身预设的基本配置参数,桥接vm语义隔离和hypervisor语义隔离,推导和定位出目标vm数据地址和目标hypervisor数据地址,以进行进一步的安全监测。进一步地,步骤2)中所述触发机制基于smc指令构造。进一步地,步骤2)由位于不可信环境虚拟化软件栈中的安全增强接口前端(interfacefront-end)实现;所述安全增强接口前端是指在虚拟化软件栈中的宿主机内核增添的相关触发代码。进一步地,步骤2)中所述安全增强接口通过在运行时服务框架(runtimeservicesframework)中添加特定服务vmi_std_interface来实现。进一步地,步骤4)中所述基本配置参数是指现有的通用vmi装置实现中为每个vm设置的参数。进一步地,步骤4)中所述桥接vm语义隔离是指根据预知的vm操作系统信息,将gva(客户机虚拟地址)翻译成gpa(客户机物理地址);其中所述预知的vm操作系统信息包括系统符号表、操作系统版本以及关键结构体的偏移值;所述桥接hypervisor语义隔离是指根据预知的hypervisor信息和定位的vm关键数据以及hypervisor关键数据,将gpa翻译成hpa(宿主机物理地址)。一种增强arm平台虚拟机自省安全的装置,包括安全增强接口前端、安全增强接口和核心代码;所述安全增强接口前端位于不可信环境虚拟化软件栈中,用于当特定的触发事件发生时,触发基于smc指令构造的触发机制以陷入到el3层的安全增强接口,并将该触发事件中相关的vm数据和hypervisor数据传递到该安全增强接口;所述安全增强接口位于el3层(高特权级),用于记录和维护上述vm数据和hypervisor数据,并根据所述核心代码的数据访问请求将与该数据访问请求相关的vm数据和hypervisor数据传递给所述核心代码;所述核心代码位于硬件隔离环境trustzone中,用于根据所接收的vm数据和hypervisor数据以及自身预设的基本配置参数,桥接vm语义隔离和hypervisor语义隔离,推导和定位出目标vm数据地址和目标hypervisor数据地址,以进行进一步的安全监测。进一步地,所述安全增强接口利用declare_rt_svc()宏进行注册以声明服务名称、oens范围、服务类型以及指定初始化和处理函数指针;其中oens中的s的取值范围为0≤s≤127。进一步地,所述核心代码的整体算法包括一次查找和两次地址翻译;其中一次查找是指根据安全增强接口维护的vm数据和hypervisor数据以及核心代码预设的基本配置参数来定位特定系统符号gva;第一次地址翻译是指根据预知的vm操作系统信息桥接vm语义隔离,将gva翻译成gpa;第二次地址翻译是指根据预知的hypervisor信息和定位的vm关键数据以及hypervisor关键数据桥接hypervisor语义隔离,将gpa翻译成hpa。本发明的有益效果在于:本发明提供一种增强arm平台虚拟机自省安全的方法及装置,该方法及装置通过不依赖于hypervisor或qemu(quickemulator,快速模拟器)的安全增强接口和适当的硬件隔离环境trustzone来抵抗信息泄露、保证vmi自身代码和数据在整个生命周期内的准确性即保证vmi运行时安全以及vmi底层输入数据的正确性。其优点具体体现在:1.提供不依赖于hypervisor或qemu的安全增强接口以保证vmi获取的vm数据和hypervisor数据的准确性;2.将vmi核心代码部署在硬件隔离环境trustzone中,使得vmi的核心运行逻辑处于可信环境中,以保证整个vmi代码和数据在整个生命周期的完整性,即保证vmi运行时安全;3.解决了armv8平台下的两层语义隔离,即hypervisor隔离和vm隔离。附图说明图1为本发明提供的一种增强arm平台虚拟机自省安全的方法流程图。图2为本发明提供的一种增强arm平台虚拟机自省安全的装置示意图。图3为本发明提供的安全增强接口前端的运行流程图。图4为本发明使用的armv8运行时服务框架实例化示意图。图5为本发明提供的安全增强接口初始化过程示意图。图6为本发明提供的核心代码整体算法设计图。图7为aarch64linux地址格式4k页翻译流程示意图。图8为本发明提供的核心代码流程示意图。图9为本发明整体框架交互示意图。具体实施方式为使本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图作详细说明如下。本发明提供了一种增强arm平台虚拟机自省安全的方法及装置,该方法及装置根据隔离机制和高特权级陷入的方式来实现代码与数据的完整性保护和底层数据的可信读取,进而来避免信息泄露、运行时执行流和数据流的恶意篡改以及底层输入数据的恶意伪造。请参考图1,该图为本发明提供的一种增强arm平台虚拟机自省安全的方法流程图。该方法步骤包括:1)将核心代码部署在硬件隔离环境trustzone(可信环境)中;2)当特定的触发事件发生时,触发基于smc指令构造的触发机制以陷入到el3层的安全增强接口,并将该触发事件中相关的vm数据和hypervisor数据传递到该安全增强接口。3)安全增强接口记录和维护上述vm数据和hypervisor数据,并根据核心代码的数据访问请求将与该数据访问请求相关的vm数据和hypervisor数据传递给核心代码;4)核心代码根据所接收的vm数据和hypervisor数据以及自身预设的基本配置参数,桥接vm语义隔离和hypervisor语义隔离,推导和定位出目标vm数据地址和目标hypervisor数据地址,以进行进一步的安全监测。请参考图2,该图为本发明提供的一种增强arm平台虚拟机自省安全的装置示意图。该图以arm下的armv8服务器作为实验平台。所述armv8提供四个特权级eln(n=0、1、2、3),且n值越大其特权级越高。其中,el0为用户层特权级,其包括qemu;el1为内核层特权级,其包括安全增强接口前端与核心代码,且el0和el1特权级在trustzone可信环境和不可信环境中均存在;el2为虚拟化层特权级,负责部分虚拟化功能,只存在不可信环境中;el3为高特权级,负责可信启动和可信环境与不可信环境的切换。不可信环境的el0和el1部署为host,虚拟化软件栈由虚拟化层、el1的host各子系统和kvm模块、位于el0的qemu和其他管理软件共同构成。所述增强arm平台虚拟机自省安全的装置包括安全增强接口前端、安全增强接口和核心代码;所述安全增强接口前端位于不可信环境虚拟化软件栈中,用于当特定的触发事件发生时,触发基于smc指令构造的触发机制以陷入到el3层的安全增强接口,并将该触发事件中相关的vm数据和hypervisor数据传递到该安全增强接口;所述安全增强接口位于高特权级,用于记录和维护上述vm数据和hypervisor数据,并根据所述核心代码的数据访问请求将与该数据访问请求相关的vm数据和hypervisor数据传递给所述核心代码;所述核心代码位于硬件隔离环境trustzone中,用于根据所接收的的vm数据和hypervisor数据以及自身预设的基本配置参数,桥接vm语义隔离和hypervisor语义隔离,推导和定位出目标vm数据地址和目标hypervisor数据地址,以进行进一步的安全监测。所述基本配置参数是指现有的通用vmi装置实现中为每个vm设置的参数。例如vm采用的linux版本号、系统符号表地址以及相关数据结构的偏移量等。在本发明中,所述基本配置参数实例化为aarch64linux操作系统的相关数据。下面具体阐述本发明装置每一部分的具体实现方式,下述实施案例基于armv8架构,以aarchlinux3.18.0作为宿主机内核。所述安全增强接口前端包括两个功能,一是构建专用的触发机制;二是定义相应的触发事件。所述触发机制的基础是armv8架构的smc指令。该指令可以实现从不可信环境到高特权级el3层的陷入,并通过八个通用寄存器reg0-reg7传递参数。在安全增强接口前端中利用smc指令实现陷入功能的同时,需要根据实际应用需求设置参数格式,本实施例的参数格式如表1所示。表1:参数格式寄存器意义reg0smcidreg1触发事件类型reg2-7执行上下文所述触发事件的定义则依赖对aarch64linux源码的解读,并对运行在不可信环境虚拟化软件栈中的hypervisor或者vm特定事件进行简单设置,以触发陷入条件。请参考图3,该图为本发明提供的安全增强接口前端的运行流程图,其具体流程为:1.设置hypervisor、vm特定事件(如kvm_init,vm_create,vm_destroy),当特定事件发生时进入本发明的的触发机制;2.触发机制按照定义的格式进行参数格式化一致性处理;3.执行smc指令陷入到高特权级el3层;4.el3层执行进一步具体的操作;5.执行返回。所述安全增强接口利用armv8平台特性,在硬件隔离的armtrustedfirmware(el3)层部署实现。安全增强接口的生命周期主要包括安全增强接口注册、初始化以及核心代码实现。所述安全增强接口实现为armv8runtimeserviceframework(运行时服务框架)中的一种服务,从而集成到可信固件armtrustedfirmware中。在具体的实现中利用declare_rt_svc()宏进行注册以声明服务名称、oens范围、服务类型以及指定初始化和处理函数指针;其中oens中的s的取值范围为0≤s≤127。请参考图4,该图为本发明使用的armv8运行时服务框架实例化示意图。其中rt_svc_descs_indices[128]是armv8架构为了优化参数检查而设置的oen数组,且当oen值为-1时,oen值无效。安全增强接口通过declare_rt_svc()将其相应的结构体注册到rt_svc_descs[]数组中。所述安全增强接口注册的一个实例如表2所示。表2:安全增强接口注册的实例所述安全增强接口的oens范围设置如表3所示。表3:oens范围设置oens范围值oen_tap_start48oen_tap_end49oen_tap_interface48所述安全增强接口作为运行时服务框架的一部分,同样位于可信固件armtrustedfirmware中,因而在arm可信启动的bl31阶段进行初始化。本发明提供的安全增强接口初始化过程示意图如图5所示,由bl31_main调用runtime_svc_init函数对rt_svc_descs[]数组中的各元素进行初始化和相关的验证工作,当执行到安全增强接口时,除了基本的验证之外,还可以根据之前注册的函数指针来进行进一步的初始化。所述核心代码实现部分根据安全增强接口接收到的数据处理请求类型,相应设置处理函数。vmi_smc_handler是所有交互请求的总入口,负责请求方识别(判断来自不可信环境的安全增强接口前端或者可信环境中的核心代码)、请求上下文保存和恢复以及分配下一级处理函数。所述安全增强接口目前提供了多种数据维护操作,如表4所示:表4:安全增强接口的数据维护操作类型具体操作driver_init调用driver_init进行初始化vm_create添加特定的vm信息到hashtable和数组中vm_run_change改变相关vm信息vm_migration对特定vm信息进行删除或更进一步的操作vm_destroy删除特定vm信息vmi_fast_runtime_entry负责分发以及处理来自安全增强接口前端的driver_init和vm_destroy操作;vmi_std_init_entry负责处理来自安全增强接口前端的vm_create、vm_run_change以及vm_migration操作;vmi_get_information负责处理来自核心代码的数据访问请求。为实现数据的快速查找和可靠存储,本发明在安全增强接口中采用了哈希表和数组,在实际应用中也可采用其它数据结构来实现。所述核心代码部署在硬件隔离环境trustzone中,主要用来解决语义隔离问题。在本发明中,因为是从宿主机物理地址读取的vm数据,因而比起传统的vmi技术,除了vm语义隔离外,还有一层新的语义隔离问题需要解决,即hypervisor语义隔离。所述核心代码整体算法设计如图6所示,包括一次查找和两次地址翻译。其中,一次查找是指根据安全增强接口维护的vm数据和hypervisor数据以及核心代码预设的基本配置参数来定位特定系统符号gva;第一次地址翻译是指根据预知的vm操作系统信息桥接vm语义隔离,将gva翻译成gpa;第二次地址翻译是指根据预知的hypervisor信息和定位的vm关键数据以及hypervisor关键数据桥接hypervisor语义隔离,将gpa翻译成hpa。通过这三个步骤,所述核心代码最终得以实现对目标vm数据地址和目标hypervisor数据地址的定位。下面分为两个关键技术点对核心代码的实现进行说明。1.两层语义隔离问题。vm语义隔离是指如何将读取到的vm二进制数据转换成含有操作系统语义的信息之间的隔离。解决vm语义隔离的思路是利用一些预知的vm操作系统信息,从而进一步推导和定位出目标vm数据地址。所述预知的vm操作系统信息包括系统符号表、操作系统版本以及关键结构体的偏移值。此外,还需要定位某个vm关键结构体的地址,因此需要实现gva到gpa之间的转化。在具体的实现中,安全增强接口提供了一些基本的接口来实现地址和符号之间的转换,如表5所示。表5:安全增强接口提供的接口本发明实现一个更底层的vm数据访问方式,即通过vm数据映射到hpa来访问。hypervisor语义隔离是指如何定位vm关键数据和hypervisor关键数据,将gpa翻译成hpa这一问题。解决这一问题的思路是利用安全增强接口前端从触发事件中获取预知的vm关键数据和hypervisor关键数据,如kvm结构体、stage2表基地址、ttbr2值等,来进一步推导和定位出目标vm数据地址和目标hypervisor数据地址。2.两次地址翻译。在实现vm数据的访问时需要解决两次地址翻译问题。解决地址翻译的思路是依赖aarch64虚拟地址格式进行。请参考图7,该图为aarch64linux地址格式4k页翻译流程示意图。1)pgd基地址加上虚拟地址[38:30]中的pgd偏移量获取对应的pgd地址;2)读取pgd地址中的数据获取pmd基地址,将虚拟地址中[29:21]与pmd基地址相累加,获得对应的pmd地址;3)读取pmd地址中的数据获取pte基地址,将之与虚拟地址中的[20:12]累加,获得对应的pte地址;4)读取pte地址中的页地址与虚拟地址中的[11:0]累加,最终获取目标数据地址(target地址)。64k页的地址翻译过程与之类似,只是偏移量位数有所不同。所述翻译过程需要两次,一是将gva翻译成gpa,一是将gpa翻译成hpa。在地址翻译过程中pgd的地址可以通过上述语义隔离问题的解决方案来定位。当实现第一次地址翻译时pgd可通过系统符号表获取,第二次地址翻译过程中的pgd是指安全增强接口前端记录的stage2表基地址。另外,hypervisor维护的stage2表以及其他关键数据存在内核空间,其映射关系比较单一,直接减去特定的偏移值即可。请参考图8,所述核心代码执行的流程包括以下步骤:1)先通过configurefile(配置文件)和安全增强接口获取预知的vm操作系统信息以及相关的vm数据和hypervisor数据;2)定位特定系统符号gva;3)通过第一次地址翻译实现gva->gpa的地址转换,获取gpa(gpa就是ipa,也就是hva);4)再通过第二次地址翻译实现gpa->hpa的地址转换,获取hpa,最终获取目标vm数据地址和目标hypervisor数据地址;5)如果核心代码的数据访问请求未结束,则转步骤2);否则,结束运行。在实际的代码执行过程中,两次地址翻译是依次进行的,推导和定位存在整个执行流中。请参考图9,该图为本发明整体框架交互示意图。该图中各部件之间的交互存在两种,一是安全增强接口前端与安全增强接口之间的交互,这种交互发生在hypervisor或者虚拟机运行周期中,当预先定义的触发事件发生时,就会触发该触发机制,陷入到el3层的安全增强接口中,对该触发事件进行相应的处理。二是安全增强接口与核心代码之间的交互,发生在本发明核心代码试图获取vm和hypervisor某方面的数据时。安全增强接口根据核心代码的数据访问请求将与该数据访问请求相关的vm数据和hypervisor数据返回给核心代码以进行下一步的处理。以上实施仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1