HyperSpector:一种基于UEFI的VMM动态可信监控基方案

2017-01-21 16:23周英谢旭徽李志华
软件导刊 2016年12期
关键词:云计算

周英+谢旭徽+李志华

摘 要:针对云平台运行面临的安全威胁,传统面向启动过程保护的可信硬件技术不能提供足够的保障。为保障虚拟机监控器(Virtual Machine Monitor, VMM)的安全,提出一种基于统一可扩展固件接口(Unified Extensible Firmware Interface, UEFI)的VMM动态可信监控基框架HyperSpector。该框架以UEFI固件为可信基,对VMM动态进行实时度量,相对于传统防护措施,提供更加安全可信的动态防护。依照该框架,构建一个面向Xen虚拟化软件的UEFI动态可信监控原型系统。实验表明,该框架不仅能够实时监测到针对虚拟化软件的攻击,而且不影响用户使用,同时达到了保障虚拟机监控器安全的目的。

关键词:云计算;VMM;可信计算;UEFI;云安全

DOIDOI:10.11907/rjdk.162167

中图分类号:TP309

文献标识码:A文章编号:1672-7800(2016)012-0150-03

0 引言

云计算具有低成本、灵活的特点,越来越多的企业将服务部署到云平台上。与此同时,针对云环境的安全事件层出不穷,2013年,Evernote遭到入侵,威胁到约5千万用户的数据安全。2015年3月,Xen发布严重安全漏洞,攻击者可以通过该漏洞获得Xen的最高权限。很多云计算运营商(如亚马逊)停机修复该漏洞,给用户带来了严重损失。National Vulnerability Database报告显示,著名的虚拟机监控器Xen和VMWare ESX分别至少有73和30个漏洞,还有更多的虚拟机(Virtual Machine,VM)逃逸攻击、VM穿透攻击和VM rootkits等安全威胁,并且还在不断升级更新中。这些安全问题引起了服务提供商与云客户对云计算应用前景的担忧。Gartner的分析报告表明,云安全是阻碍云计算发展的关键因素,因此研究云计算安全的意义重大。

1 云虚拟机安全

云安全问题引起学术界和工业界极大兴趣,目前解决云计算安全问题的方法有运行虚拟机上的NFORCE[1]、语义完整性检测[2]和Pioneer[3]等,但是它们自身的安全依赖于宿主机和虚拟机监控软件安全。有研究人员提出在虚拟化软件层对虚拟机进行安全监控,如Rootkit[4,5]、Patagonix[7]、REDAS[8]、HIMA[6]等,但此类方法不能保障虚拟化软件本身的安全。此外,一些研究人员将可信计算等安全硬件设备应用到云安全领域[10,11],利用安全硬件的防篡改特性对云系统启动过程进行完整性度量,但是在云计算环境中主机不会频繁关机、启动,更应关心系统运行环境中的软件安全。VMM作为云计算系统中最重要的基础,其安全问题倍受关注[9],研究增强其安全性的方法。

为解决云计算环境中虚拟化软件本身的安全,本文提出一种基于Unified Extensible Firmware Interface(UEFI)和系统管理模式(System Management Model,SMM)的VMM可信监控基方案HyperSpector,兼容现有成熟的商业虚拟化系统,不需要额外硬件支持,只需增加少量代码即可以实现在系统运行时对VMM运行状态进行实时、安全度量,从而防御在系统运行过程中的多类攻击。据此,构建了一个基于UEFI的VMM动态度量原型系统,通过攻击实验、性能实验和数据分析验证了方案的安全性与实用性。

本文主要贡献如下:①提出了一种创新的基于硬件和固件的VMM度量方案,能够对上层VMM进行透明的度量检测,并保护自身不受攻击影响,而且能够与现有商业中使用的UEFI相结合,不用增加额外的硬件和软件成本;②本方案为动态框架,能够使用硬件与固件特性,对VMM状态进行实时监控,能够检测VMM的改变,并能防止“闪躲攻击”,提供了云环境下运行时的基础设施层保护;③本方案实现了一个原型系统,该系统对保护对象是透明的,提高了保护手段的安全性与有效性;④本方案根据UEFI固件被篡改难度大的特点,将其作为可信基,从根本上提高了云环境的安全性。

2 威胁模型

2.1 威胁与假设

虚拟化环境的威胁来源于多个方面,本文主要侧重于虚拟化软件层的安全威胁。从2015年3月公布的Xen安全漏洞来看,攻击者能够通过该漏洞从Domain0获得Xen的完整权限。将添加了后门的Xen虚拟机内核通过DMA的方式导入到内存,通过该后门就能获取Xen的控制权限,形成一个隐形的控制域。这种在运行时攻击虚拟机的方法,使得传统的安全监控防护软件无法检测该攻击。

2.2 安全要求

针对上述安全威胁,本文提出运行HyperCheck时对VMM进行可信度量和安全保护,该方案满足以下几个特点:①隐蔽触发:整个触发的传递过程是安全隐蔽的,VMM无法干预;②保护自身安全:在VMM及UEFI运行中,度量过程中所有模块在任何时刻是安全的;③获得度量对象:度量模块能够获得度量对象(内存中的关键信息和CPU上下文);④安全反馈:发送反馈信息模块、传递反馈信息模块、接收反馈信息模块以及信息反馈过程都是安全可信的。

3 HyperSpector设计方法与实现

3.1 原型系统结构方案架构

基于以上安全威胁和安全监控要求,本文提出HyperSpecto:基于UEFI和SMM的VMM可信监控基方案,该方案综合x86结构CPU中的SMM模式、UEFI和VMM在内存中的分布等技术,在不增加额外硬件和软件的情况下,巧妙地实现对VMM的动态、实时、可信监控。该方案主要由初始化模块、度量模块(LKMCA+Xen度量模块)、验证模块、调度模块、报告模块组成,其架构如图1所示。

度量模块是HyperSpector的核心。该模块分为两部分,最主要的部分在UEFI的SMI handler中实现,主要功能是对VMM的内核模块进行度量,以及获取CPU执行上下文,并对其中关键寄存器进行度量,另一部分是在VMM中实现,其作用是对特权域Domain 0的核心模块进行度量。最后生成度量日志,并将度量值写入TPM芯片中的PCR(Platform Configuration Register)中。

验证模块是唯一与VMM分离的模块,主要用于将报告模块提交的度量日志信息和PCR信息进行验证。本文将第一次生成的度量信息作为基线值,后续收集到的信息都与基线值进行匹配,若匹配成功则表明系统安全可信,否则说明已经被攻击了。

调度模块是用来定时或不定时触发HyperSpector运行,用于定时触发度量模块执行,并且为用户主动调用提供接口,当收到用户发送的命令时直接触发度量模块执行。而且当用户长时间不主动触发度量模块时,自身也会通过一个随机时间进行触发,这样做主要是为了防止针对VMM的逃逸攻击。

3.2 安全触发

根据SMI触发事件、UEFI的特性以及隐蔽触发的需求,在HyperSpector的实现中使用了定时触发和手动触发两种方式来触发SMI。

定时触发使用了UEFI中对SMI handler基于时钟调度的支持,利用EFI_SMM_PERIODIC_TIMER_DISPATCH2_PROTOCOL协议注册定时度量SMI handler。定时触发基于硬件定时时钟且在UEFI中直接进行调度,所以对上层VMM是隐蔽的,可以确保其不会被发现或干扰。手动触发定时触发使用了UEFI中对SMI handler的基于0xB2端口的触发支持,利用EFI_SMM_SW_DISPATCH2_PROTOCOL协议注册手动触发SMI handler。

3.3 VMM核心模块监控

本模块使用Xen作为VMM平台,而Xen属于虚拟架构中3种模式(独立监视器模式、主机模式和混合模式)中的混合模式,Xen直接运行在裸机上,具有最高运行权限,其上运行虚拟机(又称为域),Xen和特权域Domain 0一起组成了VMM。采用这种模式可以充分利用原操作系统中的设备驱动等功能,Xen就可以只提供如CPU和内存虚拟化等功能,但利用原操作系统,如Linux其设备驱动等功能相当于复用了Linux内核相关模块。

本文采用两种方法来保护主内核模块的安全可信:首先通过实时检测特权域Domain 0中内核模块加载,加载模块之前先对要加载的模块进行度量,确保要加载的模块是可信的;然后,在运行过程中定时或随机对内核中运行的模块进行度量,确保其运行过程也是安全可信的。通过这两种方法可以确保恶意的LKM即使隐藏进程、端口和文件,也无法逃脱HyperSpector的检测。

3.4 可信监控基保护

HyperSpector以构建VMM的动态可信监控基为目标,对处于运行态的VMM进行全方位安全监控,确保其安全可信,且HyperSepctor作为运行在比VMM更底层的可信监控层,其自身的安全可信尤为重要。HyperSpector主要由基于UEFI的度量SMI handler以及处于Xen中的内核模块检测代理组成。

根据Intel开发者手册,加入SMI handler后,同时要设置UEFI在初始化后设置D_LCK位,并清空D_OPEN位,以保护UEFI和SMRAM不受特权软件访问或篡改,从而可以确保UEFI和SMI handler安全可信。VMM内核模块检测代理集成在Xen的内核模块中,而在运行时Xen内核是受SMI handler度量监控的,所以信任可以由SMI handler传递给VMM内核模块检测代理,由检测代理对VMM内核模块进行度量监控。

4 测试评估

4.1 VMM攻击测试

如前文所述,目前有许多针对Xen的攻击方法,通过修改并重新编译Xen内核的方法模拟针对Xen内核的攻击测试,同时也通过删除内核模块的方法模拟内核模块变动的测试,本文主要动态添加模块vfs和tpm_tis模块,测试结果表1所示。

测试表明,可以检测到针对Xen内核代码及数据的篡改以及内核模块的变动。SMI handler能够对Xen在内存中的代码区和数据区进行动态度量监控,同时内核模块监控代理也能成功对内核中模块的变动进行精确动态度量监控。因此,HyperSpector能够对VMM的代码和关键模块进行动态监控。

4.2 性能测试

性能测试主要是针对VMM度量模块(SMI handler)和内核模块检测代理的执行时间进行测度,通过多次执行来判断度量操作是否会显著影响VMM的服务和用户体验。性能测试本应该包括CPU占用率测试,但根据SMI的特点,当SMI handler执行时会暂停所有CPU的活动,而选择其中一个CPU来单线程执行SMI handler,其CPU占用率测试没有意义。

实际测试时,本文分为两种情况进行度量时间消耗测试(写PCR和不写PCR),测试结果如表2所示。其中,UEFI度量时间为SMI handler执行时间;Host度量时间为SMI handler执行时间+内核模块检测代理执行时间。

测试结果表明,大部分时间都是SMI handler消耗的,其主要原因可能是执行最高权限的SMI中断时会暂停所有CPU的执行活动,并选出其中一个CPU单线程执行SMI handler,所以其耗时较多;写PCR时会占用大约50ms的时间,这可能是由于TPM芯片接在南桥的慢速端口上,所以读写速度比较慢;而内核模块检测代理的执行时间几乎可以忽略不计。而且整个host度量时间不受VM运行数据影响,不运行VM和运行24台VM的度量执行时间是一样的。总体来说,100ms级别的时间消耗对整个VMM影响很小,用户基本不会感受到。

4.3 测试总结

本次测试主要侧重于Host动态监控模块中的功能确认测试和性能测试,从测试结果可以看出:本方法可以实现整个HyperSpector,HyperSpector能够找到Xen的代码段,实现CMOS、UEFI、Xen的交互通信,识别模块和代码的变动,整个度量过程功能完整实现,且在写PCR的情况下也能够在100ms级的时间内完成Host度量功能,性能影响较小,且能支持上层Xen同时运行24台VM。所以,HyperSpector实现了一个与现有商业系统兼容的具有实际可行性的动态可信监控基。

5 结语

本文提出了一种基于UEFI和SMM的VMM动态可信监控基:HyperSpector,该动态可信监控基以SMM的隐蔽性和UEFI固件锁定特性为基础,利用VMM内核的线性映射、稳定性、持久性等特征,以及SMI自动保存CPU状态的特性,构建了针对VMM内核、CPU状态和特权域关键内核模块的动态可信监控基,为VMM提供传统可信技术和新的基于硬件的动态安全保护。最后,本文构建了一个HyperSpector原型,并通过测试证明其能够有效对VMM进行监控,能够发现任何VMM内核、状态和特权域的关键模块的变动。此外,HyperSpector也存在一些不足的地方,如通过软中断进行随机触发的方式也可能会被VMM延迟或欺骗,后期需要寻找一种更安全的触发方式;基于度量的判定方式有一定的局限性,不能判断VMM可信或不可信,并非最优化的设计方法。这些问题和不足正是后期研究的重点。

参考文献:

[1] HEINE D,KOUSKOULAS Y.N-force daemon prototype technical description[R].Technical Report VS-03-021,Laurel:The Johns Hopkins University Applied Physics Laboratory,2003.

[2] Pioneer:verifying code integrity and enforcing untampered code execution on legacy system[C].Proceedings of the 20th ACM Symposiumon Operating Systems Principles.New York: ACM,2005:1-16.

[3] PETRONI N L,FRASER JR T,WALTERS A, et al.An architecture for specification-based detection of semantic integrity violations in kernel dynamic data[C].Proceedings of the 15th USENIX Security Symposium.Berkeley: USENIX,2006:289-304.

[4] 周天阳,朱俊虎,王清贤,等.基于VMM的RootKit及其检测技术研究[J].计算机科学,2011,38(12):45-49.

[5] 唐文彬,陈熹,陈嘉勇,等. UEFI Bootkit模型与分析[J]. 计算机科学 2012,39(10):16-20.

[6] AZAB A M,NING PENG,SEZER E C,et al.HIMA:a hypervisor-based integrity measurement agent[C].Proceedings of the 25th Annual Computer Security Applications Conference(ACSAC09) .Los Alamitos: IEEE, 2009.

[7] PETRONI N L,FRASER JR T,WALTERS A,et al.An architecture for specification-based detection of semantic integrity violations in kernel dynamic data[C].Proceedings of the 15th USENIX Security Symposium.Berkeley: USENIX,2006.

[8] KIL C,SEZER E C,AZAB A M,et al.Remote attestation to dynamic system properties:towards providing complete system integrity evidence[C].Proceedings of the 39th Annual IEEE/IFIP International Conference on Dependable Systems and Networks (DSN 2009).Los Alamitos: IEEE, 2009.

[9] 沈昌祥,张焕国,冯登国. 信息安全综述[J]. 中国科学,2007(2):25-28.

[10] 沈昌祥,张焕国,王怀民. 可信计算的研究与发展[J]. 中国科学,2010(2):32-36.

[11] 周新,陶露菁. 可信计算及其在信息系统中的应用[J]. 指挥信息系统与技术 2011(6):56-61.

(责任编辑:陈福时)

猜你喜欢
云计算
谈云计算与信息资源共享管理
基于MapReduce的故障诊断方法
实验云:理论教学与实验教学深度融合的助推器