虚拟机逃逸问题分析与防范 – 作者:中孚信息

随着云计算技术的不断发展,云计算在企业、政府等单位都得到了广泛的应用。云计算技术的基础是虚拟化技术,虚拟化技术在促进云计算普遍应用的同时,也给云计算带来了一定程度的安全风险,如果不能很好的解决,将影响云计算的进一步推广和应用。本文将首先对虚拟化技术进行简单介绍,然后分析虚拟化技术引入的安全风险,并重点分析其中的虚拟机逃逸风险,最后针对虚拟机逃逸攻击给出对应的防范措施。

1.   虚拟化技术介绍

现代计算机系统采用的都是分层架构,从底层至高层依次可分为:硬件层、操作系统层、函数库层、以及应用程序层,虚拟化可发生在四层中的任意一层,如图1所示:

图片[1]-虚拟机逃逸问题分析与防范 – 作者:中孚信息-安全小百科

图1:计算机系统结构层次图

而我们通常所说的虚拟化是指在硬件层上的虚拟化,也就是通过硬件抽象层对整个计算机系统进行虚拟,将一台物理计算机系统虚拟化为一台或多台虚拟计算机系统,虚拟化后的环境如图2所示:

图片[2]-虚拟机逃逸问题分析与防范 – 作者:中孚信息-安全小百科

图2:计算机虚拟化环境

在虚拟化环境中,物理机称为宿主机(Host),虚拟机称为客户机(Guest),负责虚拟化的这层称为Hypervisor或虚拟机监控器(VMM)。每个虚拟机系统(VM)都拥有自己的虚拟硬件,如CPU、内存和I/O设备等,有一个独立的执行环境。每个VM中的操作系统可以完全不同,并且它们的执行环境是完全独立的。由于客户机操作系统所能看到的是硬件抽象层,因此,客户机操作系统的行为和所在的物理平台无关。

从虚拟化的实现技术角度来看,可以分为全虚拟化技术和半虚拟化技术:

采用全虚拟化技术时,Guest OS感觉不到自己是运行在一个虚拟平台上,现有的操作系统无须做任何修改就可以运行在该虚拟平台上,只是VMM需要能够正确处理Guest OS发来的所有可能的指令。全虚拟化技术经历了两个发展阶段:早期,由于硬件没有对虚拟化提供支持,全虚拟化只能通过软件来实现,在性能上存在一定的问题,应用范围也受到一定的限制。随着技术的发展,芯片厂商在硬件上加入了虚拟化功能,比如Intel的VT-x[11]和AMD的AMD-V[12],大幅提升了性能,使得全虚拟化技术得到普遍应用,其中典型的产品有VirtualBox、KVM、VMwareWorkstation、VMwareESXi以及Xen(也支持半虚拟化)。

采用半虚拟化技术时,Guest OS能够感知到自己正运行在虚拟化的平台上,需要对Guest OS做一定的修改使之适应虚拟环境,通过修改内核代码,半虚拟化可以自定义出高度优化的I/O协议,这种I/O协议可以达到近似物理机的速度。半虚拟技术以Xen为代表,微软的Hyper-V所采用技术和Xen类似,也可以归属于半虚拟化。

值得注意的是有些Hypervisor既支持全虚拟化又支持半虚拟化,比如Xen和VMware。

总之,随着虚拟化技术的发展,各虚拟化产品都得到了极大的发展,其中,KVM在开源领域占据了主导地位,Xen以将近二十年的历史也占据了一席之地,甲骨文的VirtualBox则占领了小型测试场景;在商用市场,VMware的市场份额领先,微软的Hyper-V紧跟其后。

2.   虚拟化技术的安全风险

鉴于虚拟机层的简单性和严格的访问控制,原则上虚拟机层比任何操作系统都更安全[19]。由于破坏VMM可以使攻击者能够访问由它控制的所有虚拟机甚至宿主机,从而使VMM容易成为受攻击的目标。另外由于共享内存机制的存在,虚拟机之间可能会发生未经授权的通信,从而违反隔离原则。另外像物理机一样,VM容易受到盗窃和拒绝服务的攻击。每个虚拟机的虚拟磁盘的内容通常存储为文件,可以通过其他计算机上的VMM来运行,从而使攻击者能够复制虚拟磁盘并不受限制地访问虚拟机中的内容。由于VM之间共享同一物理机的资源,因此VM所依赖的基础设置特别容易受到拒绝服务的攻击,某个VM对资源的过度占用可能会使物理机上其他所有的VM都饿死。幸运的是,此问题可通过限制每个VM的资源消耗来解决。新的产品解决了许多类似的问题,但是由于VMM还在不停地升级、更新,因此新的问题还会不断出现。

虚拟化技术在设计或实现中不可避免地会引入一些漏洞,虚拟机里运行的程序可以通过漏洞利用,突破禁锢,掌控VMM和宿主机,实现虚拟机逃逸。虚拟机逃逸攻击打破了权限与数据隔离的边界,让攻击者不但能掌控Host,还能控制Host上所有的VM,并以此为跳板,攻击其他Host以及Host上的VM,因此,不得不说,虚拟机逃逸已成为云计算时代令人闻风丧胆的重大安全威胁。

3.   虚拟机逃逸技术分析

从下述的图3可以看出,VM与Hypervisor之间的任何一次交互都有可能成为潜在的攻击向量[7]。在x86架构下,VM与Hypervisor之间是通过VM Exit[11]机制进行交互,有56种场景会触发VM Exit,因此VM Exit实现过程中的每一个漏洞都有可能被利用来作为逃逸攻击的手段。虽然各VMM厂商都在不断完善自己的产品,查漏补缺,但令人遗憾的是,在过去的十年里,所有主流的虚拟化软件,都曾爆出过虚拟化逃逸相关的漏洞。

图片[3]-虚拟机逃逸问题分析与防范 – 作者:中孚信息-安全小百科

图3:虚拟机逃逸攻击面

2009年,Immunity公司的安全研究员KostyaKortchinsky[13]在BlackHat上演示了VMware Workstation逃逸,该演示利用了SVGA设备中的漏洞。SVGA是图形显示相关的设备,为虚拟机的2D和3D图像绘制提供了大量命令,但由于实现这些命令的代码未做好参数检查,导致出现内存越界访问等漏洞。

2011年,来自Ksplice的内核工程师NelsonElhage[14]在BlackHat上演示了KVM逃逸,该演示利用了虚拟PIIX4设备中的漏洞。PIIX4是一个主板上的芯片,支持PCI热插拔,由于虚拟设备在代码实现中并未考虑硬件移除时产生的后果,导致出现了一个释放后使用(UseAfter Free)的问题。

2014年,FranciscoFalcon[15]在REcon上演示了VirtualBox逃逸,该演示利用了VirtualBox在3D加速功能中出现的内存访问漏洞。

2016年,阿里云安全团队的ShangcongLuan[16]在HITBSec上演示了Xen逃逸,研究人员在Xen的虚拟内存管理模块中发现了一个隐藏了7年之久的漏洞,通过它可以实现内存的任意读写,最终实现了对宿主机的控制。

2018年,长亭科技[5]安全研究实验室的HanqingZhao等在GeekPwn上演示了VMware ESXi逃逸,该演示利用了虚拟网卡设备中的多个漏洞,同时组合了绕过沙箱防护策略的技巧,成功完成逃逸攻击。VMwareESXi是企业级的虚拟化方案,防护级别非常高,这是全球范围内对ESXi的首次成功逃逸。

公安部在16个城市试点基础上,在全国分两批推广机动车检验标2018年,微软安全工程师Jordan Rabet[17]在BlackHat上首次演示了Hyper-V逃逸,该演示利用了数据交互过程中非原子操作漏洞,进行了竞态攻击,通过竞态完成越界,再通过越界之后的数据执行可控的攻击。志电子化,为机动车所有人、驾驶人以及相关行业和管理部门提供电子证照服务。

通过以上列举的具有代表性的虚拟机逃逸攻击案例,我们可以看到,主流的虚拟化软件KVM、Xen、VMware、VirtualBox以及Hyper-V无一幸免。事实上,除了这些案例,其他被发现和修复的虚拟机逃逸漏洞还有很多,数不胜数。

4.   虚拟机逃逸攻击的防范

面对如此多的虚拟机逃逸事件,以及虚拟机逃逸攻击可能带来的巨大危害,防范虚拟机逃逸也就成为一个必须解决的问题,通过总结业界在防范方面经验,可以考虑的思路如下。

4.1. 及时更新漏洞补丁,消灭已知漏洞

由于虚拟机逃逸攻击的本质是利用VM与VMM或宿主机之间软件漏洞进行逃逸,因此如果能及时找出这些漏洞,并打上补丁就能防止大部分逃逸事件的发生。主流的虚拟软件厂商都在持续分析自己产品中的漏洞,除了自己做漏洞分析外,还通过开源社区的帮助来协助完成,有些公司甚至通过悬赏的方式鼓励社区进行漏洞挖掘,这些措施都有利于减少漏洞,从而减少逃逸事件的发生。例如上述列举的所有案例都只出现在相对较低的版本上,对于新版本的软件或者打了补丁的软件,上述攻击都无法实现。

4.2.  通过缓解措施,提升逃逸难度

由于软件是人开发的,要想完全消灭漏洞几乎是不可能,因此作为防护者需要考虑一些容错机制,在假设漏洞存在的情况下,想尽一切办法阻挠攻击者利用漏洞进行程序控制。这种通用的防御方法称为缓解措施。缓解措施包括地址空间布局随机化(ASLR),非执行内存(NX)/数据执行保护(DEP)等,其中ASLR[10]是一种针对缓冲区溢出的安全保护技术,通过对堆、栈、以及共享库映射等线性区布局的随机化,增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的,而NX/DEP[18]是一套软硬件技术,能够在内存上执行额外检查,如果发现当前执行的代码没有明确标记为可执行则禁止其执行,那么恶意代码就无法利用溢出进行破坏。

在攻防对抗中,防守方不断提出和应用新的缓解措施来增加攻击者利用漏洞的难度,攻击者则不断地摸索出新的技巧来绕过这些缓解措施,在攻守双方博弈的过程当中,漏洞利用的难度在不断变大,软件的安全性也得到了不断提升。但出于性能方便的考虑,大部分主流的虚拟化技术方案在默认情况下都未开启缓解措施,导致地址随机性不够、存在可写可执行权限内存等问题依然可以在某些虚拟技术的实现中找到。这就需要安全工程师能熟悉相关虚拟化产品提供的各种缓解措施,加以合理的应用才能提高安全性。比如,来自微软的安全工程师JordanRabet[17]在2018年的BlackHat大会上就提出了多种利用缓解措施保护Hyper-V的思路。

4.3.  利用沙箱机制,实施多级防护

在软件安全领域,沙箱是一种获得了广泛应用的防护思路。沙箱机制的基本思路是将被保护对象的权限降到最低,只给保护对象所需的最小权限集,就好比一个牢笼,将攻击者的权限束缚在一个受限的空间,使其无法对系统造成危害。这种思路能够全面降低保护对象被攻陷后造成的风险,让攻击者即便成功利用了漏洞,能力也是受限的,不足以施展恶意行为。VMware的ESXi产品就使用沙箱机制,将运行虚拟设备的进程通过沙箱进行了保护,从而极大地增加了攻击者进行逃逸攻击的难度。微软的Hyper-V也启用了沙箱技术来保护其Worker进程。

总的来说,通过引入沙箱机制,能够让防守层次化,攻击者只有突破了每一层,才能完成整个攻击,反过来说,攻击者如果在任何一个层面缺乏突破手段,都无法最终完成攻击。

4.4.  通过用户行为分析,拦截未知威胁

通过及时更新版本和及时打补丁能够防止针对现有漏洞发起的攻击,但对于一些未知的攻击,还需要通过对用户行为进行分析的方式来加以防护,通过对虚拟机与VMM或宿主机之间的系统调用或通信等行为进行监测、分析,能够及时识别出一些未知的虚拟机逃逸行为。比如,汪圣平[3]等通过拦截虚拟机对外操作请求,与预设的虚拟机逃逸行为列表进行匹配,来检测、拦截虚拟机逃逸行为;栾建海等[4]通过钩子程序Hook截获虚拟机流向宿主机的异常数据信息,或者通过访问虚拟机控制结构中记录有异常数据信息的页表来获取虚拟机流向宿主机的异常数据信息,再将这些异常数据信息与预设的行为特征信息库比对来检测、拦截虚拟机逃逸攻击行为;以及陈兴蜀[2]等提出的一种基于双层Hash表的虚拟机I/O短序列生成算法,并结合虚拟机I/O短序列和Markov模型,建立了虚拟机I/O行为特征库,通过比对待测样本与正常行为特征库,能够有效检测出虚拟机内部可能存在的I/O异常行为以及已知和未知的虚拟机逃逸攻击。

除了上述常用的防范措施外,其他的防止虚拟机逃逸的措施还包括:BitVisor[6]允许来自Guest OS的大部分的I / O访问穿过Hypervisor,大幅减少了Hypervisor的代码量,从而加强了I/O设备的安全性;Jakub Szefer [7]提出了一种能消减Hypervisor的攻击面的策略:让Guest VM能够直接在本地的基础硬件上运行,并保持同时运行多个VM的能力;Hypersafe[8]提出了一种应用控制流完整性(Control-Flow-Integrity)来减轻虚拟机逃逸攻击的方法;Cloudvisor[9]引入了一种在虚拟化层中强制将资源管理与安全保护分开的方法。

综上所述,随着业界对虚拟机逃逸风险越来越重视,基于软件和硬件相结合的缓解措施,层层隔离的沙箱机制,以及基于机器学习的用户行为分析等措施的不断完善,虚拟机逃逸难度也将越来越难,虚拟化的环境也将越来越安全。

5. 参考文献

[1]   Virtual machine escape. 

[2]  陈兴蜀,陈佳昕, 赵丹丹,金鑫. 基于虚拟机IO序列与Markov模型的异常行为检测[J]. 清华大学学报(自然科学版)

[3]  汪圣平, 唐青昊. 一种虚拟机逃逸的防护方法及装置: 中国, CN201510958935. 5[P].2015-12-18. WANG S P, TANG Q H. Protection method and device for virtualmachine escape: China, CN201510958935. 5[P]. 2015-12-18. (in Chinese)

[4]  栾建海, 汤迪斌, 李常坤等. 一种检测虚拟机逃逸的方法及装置: 中国, CN201610513980. 4[P].2016-06-03.LUAN J H, TANG D B, LI C K, et al. Method and device for detectingvirtual machine escape: China, CN201610513980. 4[P]. 2016-06-03. (in Chinese)

[5]Hanqing Zhao, Yanyu Zhang, Kun Yang, TaesooKim. Breaking Turtles All the WayDown:An Exploitation Chain to Break out of VMware ESXi

[6]Takahiro Shinagawa, Hideki Eiraku, Kouichi Tanimoto,KazumasaOmote, Shoichi Hasegawa, Takashi Horie, Manabu Hirano, KenichiKourai,Yoshihiro Oyama, Eiji Kawai, Kenji Kono, Shigeru Chiba,Yasushi Shinjo, andKazuhiko Kato. Bitvisor: A thin hypervisor for enforcing i/o device security.In Proceedings of the 2009 ACM SIGPLAN/SIGOPS International Conference onVirtual Execution Environments, VEE ’09, pages 121–130, New York, NY, USA,2009.ACM.

[7]Jakub Szefer, Eric Keller, Ruby B Lee, and JenniferRexford. Eliminating the hypervisor attack surface for a more secure cloud. In Proceedingsof the 18th ACM conference on Computer and communications security, pages401–412. ACM, 2011.

[8]Zhi Wang and Xuxian Jiang. Hypersafe: A lightweightapproach to provide lifetime hypervisor control-flow integrity. In 2010 IEEESymposium on Security and Privacy, pages 380–395. IEEE, 2010.

[9]Fengzhe Zhang, Jin Chen, Haibo Chen, and Binyu Zang.CloudVisor: retrofitting protection of virtual machines in multi-tenant cloudwith nested virtualization. In Proceedings of the Twenty-Third ACM Symposiumon Operating Systems Principles, pages 203–216. ACM, 2011.

[10]Wiikipedia.Addressspacelayoutrandomization,2019.ttps://en.wiikipedia.org/wiki/Address_space_layout_randomization

[11]Intel.Intel®64andIA32ArchitecturesSoftwareDeveloper’sManual.https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-vol-3c-part-3-manual.pdf

[12]AMD.AMD64ArchitectureProgrammer’sManualVolume2:SystemProgramming.https://www.amd.com/system/files/TechDocs/24593.pdf

[13]KostyaKortchinsky.CLOUDBURSTAVMwareGuesttoHostEscapeStory.BlackHatUSA 2009, Las Vegas.https://www.blackhat.com/presentations/bh-usa-09/KORTCHINSKY/BHUSA09-Kortchinsky-Cloudburst-SLIDES.pdf

[14]NelsonElhage.BlackHat/DEFCON2011talk:BreakingoutofKVM. https://blog.nelhage.com/2011/08/breaking-out-of-kvm/

[15]FranciscoFalcon.CORESECURITYBreakingOutofVirtualBoxthroug3DAcceleration. https://recon.cx/2014/slides/Breaking_Out_of_VirtualBox_through_3D_Acceleration-Francisco_Falcon.pdf

[16]ShangcongLuan.AdvancedExploitation:XenHypervisorVMEscape. https://conference.hitb.org/hitbsecconf2016ams/sessions/advanced-exploitation-xen-hypervisor-vm-escape/

[17]JordanRabet. Hardening Hyper-V through offensive securityresearch.  https://i.blackhat.com/us-18/Thu-August-9/us-18-Rabet-Hardening-Hyper-V-Through-Offensive-Security-Research.pdf

[18]Wiikipedia.DataExecution Prevention.  https://en.wiikipedia.org/wiki/Executable_space_protection

[19]DougHyde,ASurveyon the Security of Virtual Machines. https://www.cse.wustl.edu/~jain/cse571-09/ftp/vmsec/

杨文宏/中孚信息(北京)研究院

来源:freebuf.com 2020-10-19 10:47:54 by: 中孚信息

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论