虚拟机隔离安全的威胁研究

时间:2022-05-21 11:21:05

虚拟机隔离安全的威胁研究

虚拟机隔离安全的具体实现

虚拟机之间具有良好的隔离性,但在很多应用场合,需要虚拟机间或虚拟机与宿主机之间共享资源或者通信,很重要的一点是要保证虚拟机上的重要信息与宿主操作系统或其他虚拟机的隔离。虚拟机的硬盘等存储设备是虚拟机虚拟出来的存储设备,这些虚拟存储设备的安全性是虚拟机安全性的重要组成部分。虚拟存储设备中的数据,最常见的保存方法就是在宿主操作系统上建立一个文件来保存。例如,在VirtualBox中,虚拟机的硬盘是由一个后缀名为vdi的虚拟硬盘文件保存,而VMWare的虚拟机硬盘则是使用后缀名为vmdk的虚拟硬盘文件保存。通常,这样的文件被称为映像文件(ImageFile),每个虚拟机的客户操作系统的文件系统都完整保存在它们各自的映像文件中。在大部分的虚拟机技术中,映像文件位于宿主机操作系统的文件系统中。因此,恶意代码在宿主机操作系统中读写映像文件就成为对破坏虚拟机或窃取虚拟机信息的一条可能的途径,而且是非常高效和直接的途径。存储器的操作最终都会转换成宿主机操作系统对映像文件的操作[3],导致映像文件很难与宿主机操作系统的文件系统完全隔离。以明文方式存储在宿主机操作系统中的映像文件使得宿主机操作系统上运行的软件或恶意代码可以从中获取到所有虚拟机操作系统的文件信息和数据,甚至恶意代码可以用病毒或其他文件替换掉映像文件。目前,少数虚拟机技术可以为虚拟机操作系统提供独立的硬盘逻辑分区,与宿主机操作系统进行有效隔离,但这种方式在存储资源的分配上是低效的,在硬盘逻辑分区的管理上也很繁琐。因此,映像文件攻击是一个重要的虚拟机隔离安全问题。一般来说,当用户因关闭系统或重新配置网络等原因不再需要已分配的IP地址时,将不再保留此IP地址。当该IP地址变为可用后,通常把它再分配给其他用户使用。从用户安全角度而论,IP地址再分配使用可能会带来问题,用户无法确信他们对资源的网络访问能否随着IP地址的释放一并终止,从DNS中的IP地址改变到DNS缓存清理,从ARP表中物理地址改变到将ARP地址从缓存中的清除,都会有一定的时间延迟。这意味着,即使地址可能已经变化,原先的地址在缓存中依旧有效,用户还是可以访问到那些理应不存在的资源。信息泄漏是计算机系统中一直存在的一个安全隐患,这是由于很多计算机系统的设计者或者一些安全手段和策略,都没有将信息泄漏考虑在内。隐蔽通道[4]是信息泄漏的重要渠道。虚拟机虽然具有天生的隔离性,但由于多台虚拟机分布在同一个虚拟机监控器之上,虚拟机之间又具有一定的耦合性,这种特性可以被利用来构造隐蔽通道。在Xen中,Hypervisor保存有一张全局的机器地址到伪物理地址的关系表,称之为M2P表。每一个Domain都能对它进行读操作,并且能通过调用Hypervisor的mmu_update接口来更新属于自己地址范围内的表项。这一特性被证明是可以利用在两虚拟机间构造隐蔽通道的[5]。通信双方的虚拟机共享一个结构数据类型,其中第一个域充当标志(双方互相知道对方的标志),而最后一个域包含实际传递的隐蔽消息。在实际的传递过程中,一方将共享的结构体更新到属于自己地址范围的表项内,而另一方则遍历M2P表的表项,直到找到对方的标志,继而就能通过结构体中的偏移量字段来找到相应的隐蔽消息。Xen虚拟机的CPU负载变化也可以用来构造隐蔽通道[6]。假设两台虚拟机的虚拟CPU(VCPU)被映射到同一个物理CPU(或CPU核),并且假设两台虚拟机运行一个相同的任务。作为隐蔽消息接收方的虚拟机一直执行该任务,而作为发送方的虚拟机则通过执行或不执行该任务来引起接收方中此任务执行时间的变化。于是双方可以这样约定,当发送方不执行此任务时,传递比特0;而当发送方执行此任务时,接收方观察到任务执行时间变长,此时传递比特1。

提高虚拟机隔离的安全性考虑

(1)资源分配的问题虚拟机运行时,要求在物理机上需要有足够的处理能力、内存、硬盘容量和带宽等。为了高效利用资源,有时会分配超出处理能力的资源给虚拟机,很可能会导致拒绝服务。当无法保证所有虚拟机不会在同一时间达到峰值,虚拟机资源共享机制又比较简单,CPU、内存、磁盘、带宽都有可能出现资源不够用的问题,预留出一些额外的处理能力、内存等资源用于调度是非常必要的。(2)限制对虚拟机的访问宿主机对虚拟机的攻击有着得天独厚的条件,包括:不需要账户和密码,即可使用特定的功能来杀死进程,监控资源的使用或者关闭机器;重启机器,引导到外部媒体从而破解密码;窃取文件,比如利用外接存储器等,或直接盗走宿主机的磁盘以访问虚拟文件系统;删除一个或多个虚拟磁盘,把它们挂载到已知管理员密码的机器上,可以进入虚拟机,从而看到该磁盘全部内容;删除整个虚拟机等。宿主机的环境不同,造成的风险也不同,所以要对宿主机的安全提供周密的安全措施:宿主机的物理环境安全,包括对进入机房的身份卡验证,对机器进行加锁(避免被人窃走硬盘);拆除软驱、光驱;BIOS设置禁止从其他设备引导,只允许从主硬盘引导。另外,对BIOS设置密码,避免被人修改启动选项;控制所有的外部接口。(1)虚拟化软件层的安全隔离软件层位于硬件和虚拟服务器之间,提供终端用户创建和删除虚拟化实例的能力,由虚拟化服务提供商管理,终端用户无法看到并访问虚拟化软件。其管理程序保证硬件和操作系统虚拟化实现在多个用户虚拟机之间共享硬件资源,而不会彼此干扰。鉴于管理程序虚拟化是保证在多用户环境下客户虚拟机彼此分隔与隔离的基本要素,保护其不受未授权用户访问是非常重要的。一旦黑客对其进行完整性攻击,突破这些隔离单元,将造成灾难性后果。虚拟化服务提供商应当建立必要的安全控制,包括限制对管理程序及其他虚拟化层面的物理和逻辑访问;而用户应当理解相关技术及虚拟化服务提供商的安全控制流程。虚拟化软件层的程序绝大部分是服务提供商专有而封闭的源代码,用户的安全保障团队要设法获得并检查提供虚拟化服务提供商的软件源代码,保障自身安全。(2)虚拟化系统采用虚拟防火墙在基于云计算的虚拟化技术中,安全等级往往采用域进行构建,域与域之间有逻辑隔离。为了实现虚拟机之间安全互访[7],虚拟防火墙要具有基于IP地址(特定的地址或子网)、数据包类型(TCP、UDP或者ICMP)以及端口(或者端口范围)进行流量过滤的功能。同时,为了防止遭受外界攻击,要阻止所有到虚拟服务器的端口,建议只使用端口号22(SSH——安全外壳协议,要有密钥认证)来管理虚拟服务器的资源。(3)通信加密和虚拟机身份验证使用谓词加密、完全同态加密等各种手段,用HTTPS、TLS、SSH,或者加密VPN来管理。除了通信加密以外,还应有身份鉴别和认证手段,以防止伪造源IP攻击、连接劫持、中间人攻击等。虚拟机和宿主机一样也需要升级认证方式,比如使用key登录、口令的加密存储等。

虚拟机技术还面临着很多其他已知和未知的威胁,这些威胁需要逐一去研究解决,尤其是在国内这样大范围使用虚拟机但虚拟机安全技术却暂时落后的背景下,自身掌握虚拟机的安全技术就显得更加重要和必要。同时,可信边界的变动造成了人们对虚拟化技术应用的顾虑,加强对虚拟化技术安全特性的研究是一个非常有意义的课题。

本文作者:范伟韩奕黄伟庆工作单位:中国科学院信息工程研究所