首页 理论教育虚拟化安全问题的解析

虚拟化安全问题的解析

【摘要】:但是,虚拟化技术主要面临两个问题:虚拟机本身的安全和用户虚拟机之间的隔离问题。虚拟机逃逸被认为对虚拟机的安全性最具威胁。基于虚拟化技术的Rootkit是这类攻击的典型代表。一旦接触到虚拟硬盘,攻击者可攻破所有的安全措施,如密码。这一层的特点是虚拟机的安全,因此,云服务提供商应建立必要的安全

云服务的核心技术之一就是虚拟化,不同用户的数据可能存储在共享的物理存储设备上。基于共享的存储方式,可以节约存储空间,进行统一管理,节省管理费用。利用存储整合,便于备份和管理。提供足够有效地安全数据,当使用共享存储设备存放数据时,由于通过存储设备自身的措施,可以很好地确保数据的隔离性。但是,虚拟化技术主要面临两个问题:虚拟机本身的安全和用户虚拟机之间的隔离问题。针对这两个问题,研究者们提出了一些解决方案

1.虚拟机常见安全威胁

几乎所有的云服务提供商都是通过虚拟化技术,在基础设施、平台和软件不同层面向用户提供相应的云服务。目前,云计算的虚拟化安全问题主要集中在以下几个方面[21]

(1)虚拟机跳跃 虚拟机跳跃是指借助与目标虚拟机共享同一个物理硬件的其他虚拟服务器,对目标虚拟机实施攻击。

如果两个虚拟机在同一台宿主机上。一个在虚拟机A上的攻击者通过获取虚拟机B的IP地址或通过获得宿主机本身的访问权限接入虚拟机B。攻击者可将虚拟机B由运行改为离线,造成通信中断。

(2)虚拟机逃逸 虚拟机逃逸是指虚拟机内的程序可能会逃出到虚拟机以外,危及主机的安全。

虚拟机逃逸是一种应用,其中攻击者在允许操作系统与管理程序直接互动的虚拟机上运行代码。这种应用可以使攻击者进入主机操作系统和在主机上运行的其他虚拟机。

虚拟机逃逸被认为对虚拟机的安全性最具威胁。因为一旦攻击者获得VMM的访问权限,它就可以关闭VMM,最终导致相关虚拟机关闭。

(3)拒绝服务 在虚拟化环境下,系统资源由虚拟机和宿主机一起共享。因此,拒绝服务攻击可能会被加载到虚拟机上从而获取宿主机上所有的资源。当有用户请求资源时,由于宿主机没有可用资源,从而造成系统将会拒绝来自客户的所有请求。可以通过正确的配置,防止虚拟机无节制地滥用资源,从而避免拒绝服务攻击。

(4)基于Rootkit的虚拟机 在云计算环境下,大多用户都是通过公共服务程序对数据发起访问,被共享访问的载体成为权限的汇聚点,如果虚拟化技术被恶意代码滥用,则虚拟化特权被攻击者获取,将危害使用云计算服务的所有用户。基于虚拟化技术的Rootkit是这类攻击的典型代表。

Rootkit是一个用来隐藏自身踪迹和保留系统访问权限的工具集。20世纪90年代初,Rootkit就已经与UNIX系统一起出现,直到1996年发布LinuxRootkit时,概念Rootkit才第一次进入公众的视线。当初Rootkit是指经过改进的常用UNIX使用工具,如ps、ls、login、passwd和netstat等。

由于Rootkit技术可以帮助恶意代码隐藏程序属性和攻击行为,躲避反病毒软件的监控。因此,攻击者可以使用Rootkit技术修改原始文件,经过改进的版本隐藏特定的系统信息,从而达到隐藏Rootkit的目的。

如果VMM被Rootkit控制,Rootkit可以通过VMM利用系统底层的优势实现深度隐藏,并可以获取整个物理机的控制权。

(5)迁移攻击 虚拟机迁移分为静态迁移和动态迁移两种方式。静态迁移是指在迁出端将虚拟机域暂停,并转化为虚拟机映像存放到文件系统,然后通过一定的方式(如借助可移动存储)将该虚拟机映像复制到迁入端的物理计算机上,最后通过虚拟机恢复机制,在迁入端将虚拟机映像恢复成虚拟机域。动态迁移是指在迁出端发起动态迁移后,迁入端VMM通过与迁出端VMM进行网络通信,先行复制迁出端虚拟机域的内存数据,然后迁出端停止被迁移虚拟机域工作,迁移运行中的各种环境数据,最后由迁入端恢复虚拟机域的运行。

在多数情况下,迁移攻击主要是指虚拟机动态迁移攻击。在虚拟机动态迁移过程中,攻击者能够改变源配置文件和虚拟机的特性。一旦接触到虚拟硬盘,攻击者可攻破所有的安全措施,如密码。由于该虚拟机是一个实际虚拟机的副本,难以追踪攻击者的此类威胁。

(6)虚拟机之间的相互影响 虚拟机技术的主要特点是隔离,如果我们从一台虚拟机去控制另一台虚拟机,安全漏洞就会出现。CPU技术可以通过强制执行管理程序来保护内存,内存的管理程序应该是独立的,在正确的规则里,应该禁止从正在使用的内存看到另外一个虚拟机。也就是说,即使一台虚拟机上有内存没有被使用,另一台虚拟机也不能去使用这些闲置的内存。对于网络流量来说,每个虚拟机的连接都应该有专用的通道,虚拟机之间不能嗅探对方的数据包。但是,如果虚拟机平台使用了虚拟交换等技术来连接所有虚拟机,那么虚拟机就可以进行嗅探,或者使用ARP来重新定向数据包。

(7)宿主机与虚拟机之间的相互影响 宿主机对于虚拟机来说,是一个控制者,宿主机负责对虚拟机的检测、改变和通信,对宿主机的安全要更严格管理。依据虚拟机技术的不同,宿主机可能会在如下几个方面影响虚拟机:①启动、停止、暂停和重启虚拟机;②监控和配置虚拟机资源,包括CPU、内存、硬盘和虚拟机的网络;③调整CPU数量、内存大小、硬盘数量和虚拟网络的接口数量;④监控虚拟机内运行的应用程序;⑤查看、复制和修改数据在虚拟机的硬盘存储。由于所有的网络数据都会通过宿主机发往虚拟机,那么宿主机就能够监控所有虚拟机的网络数据。

(8)旁道攻击 随着多租户、多个组织共享一个物理服务器,使云提供商能够以极低的价格出售他们的服务。具有相同的物理服务器上拥有多个用户的多个虚拟机实例意味着,除非一个组织特别要求物理隔离。否则,其虚拟机实例可能会同竞争对手或恶意用户的虚拟机实例运行在同一台物理服务器上。

旁道攻击者就是通过共享CPU和内存缓存来提取或推断敏感信息。由于旁道攻击的目标是共享一台物理机的虚拟机实例,因此,最终的解决办法是避免多租户。对此,云提供商可以为客户提供选择独占物理机的选项,而客户要为资源利用率的降低而多付钱。

2.虚拟化软件安全

虚拟化软件直接部署于裸机之上,提供能够创建、运行和销毁虚拟服务器的能力。服务器层的虚拟化能通过任何虚拟化方式完成。

虚拟化软件层完全由云服务提供商来管理。由于它是保证虚拟机在多租户环境下相互隔离的重要层次,所以必须严格限制任何未经授权的用户访问它。

这一层的特点是虚拟机的安全,因此,云服务提供商应建立必要的安全控制措施,限制对于虚拟化的核心VMM和其他形式虚拟化层次的物理和逻辑访问控制,确保虚拟化层的安全。

针对此虚拟化软件层,主要有两种攻击方式:①恶意代码通过应用程序接口(API)攻击,因虚拟机通过调用API向VMM发出请求,VMM要确保虚拟机只会发出经过认证和授权的请求;②通过网络对VMM进行攻击,通常VMM所使用的网络接口设备也是虚拟机所使用的,这意味着虚拟机可以连接到VMM的IP地址,并侵入VMM。(www.chuimin.cn)

3.虚拟服务器安全

虚拟服务器位于虚拟化软件之上。虚拟化服务器的最大特点之一是网络架构。网络架构的改变相应地产生了许多安全问题。在不使用虚拟化技术时,用户可以对不同服务器采用不同的规则进行管理。对一个服务器的攻击不会扩散到其他服务器。采用虚拟化技术后,一台服务器将支持若干应用程序。可能会出现负载过重的现象,甚至会出现物理服务器崩溃的状况。在管理程序设计过程中的安全隐患会传染到同一物理主机上的所有虚拟机。另外,虚拟机迁移以及虚拟机间的通信也会增加服务器遭受渗透攻击的机会。

虚拟服务器面临着许多主机安全威胁,包括接入和管理主机的密钥被盗、在脆弱的服务标准端口侦听、劫持未采取合适安全措施的账户等。面对这些不安全因素,可以采取以下措施:

1)选择具有可信平台模块(TPM)的物理服务器。TPM可以在虚拟服务器启动时检测用户密码,并依据检测结果决定是否启动此虚拟服务器。如果有可能,应使用新的带有多核处理器,并支持虚拟技术的CPU,这样就能保证CPU之间的物理隔离,减少部分安全问题。

2)每台虚拟服务器应通过虚拟局域网(VLAN)和不同IP地址网段的方式进行逻辑隔离。需要通信的虚拟服务器间通过VPN进行网络连接。

3)安装虚拟服务器时,应为每台虚拟服务器分配一个独立的硬盘分区,以便进行逻辑隔离。虚拟服务器系统还应安装基于主机的防火墙、杀毒软件、日志记录和恢复软件,以便将它们相互隔离,并与其他安全防范措施一起构成多层次防范体系。

4)在防火墙中,尽量对每台虚拟服务器做相应的安全设置,进一步对它们进行保护和隔离,将服务器的安全策略加入系统的安全策略中,并按物理服务器安全策略的方式来对等。

5)对于虚拟服务器系统,应当像对一台物理服务器一样地对它进行系统安全加固。同时严格控制物理主机上运行虚拟服务的数量,禁止在物理主机上运行其他网络服务。因为一旦物理主机受到侵害,所有在其中运行的虚拟服务器都将面临安全威胁,或者直接停止运行。

6)避免服务器过载崩溃,要不断监视服务器的硬件利用率,并进行容量分析,使用容错服务器或容错软件是一个好的选择。

7)对虚拟服务器的运行状态进行严密监控,实时监控各虚拟机当中的系统日志和防火墙日志,以此来发现存在的安全隐患,对不需要运行的虚拟机应当立即关闭。

4.虚拟机安全防护

目前基于虚拟机技术,出现了以下安全类研究成果[22]

(1)隔离执行 隔离执行是指将程序隔离到一个封闭的环境中运行。目前大多数此类研究都使用了虚拟化技术。比如Huang等人[23]基于OpenVZ实现了一个隔离执行架构,能够维护整个虚拟环境的完整性,并追踪多个应用之间的交互。

(2)虚拟机监控 虚拟机的隔离性会引入一个新的问题,即虚拟环境中的用户行为不可见,无法对其进行监控。于是出现了虚拟机自省技术,用以消除不同虚拟机之间的语义鸿沟。参考文献[24]阐述了这种技术。

(3)内存保护 面向虚拟化的内存保护技术已经出现,如Intel实现了一种基于轻量级虚拟机的内存保护方法,通过分离式页表将内核内存和应用程序内存分离,从而解决操作系统共享内核空间带来的安全性问题。然而这种轻量级虚拟机不具有通用性。

5.Xen平台的安全

虽然虚拟机具有良好的隔离性,但在很多应用上,必须进行虚拟机间的通信,而虚拟机之间频繁的交互带来了新的安全挑战。例如,虚拟机之间未经授权的非法访问、通过虚拟机之间通信产生的病毒传播。

针对上述情况,Xen通过自己的访问控制模块ACM(ACM也称为sHype,是由IBM提出的一个在Xen上实现的安全架构XSM(Xen Security Module),其作用类似一个安全容器。在使用ACM进行安全控制时,它首先加载用户设置的安全策略,在加载完毕,当Xen上的一个Hypercall被调用时,ACM的决策算法根据用户所配置的策略,对此次访问请求做出允许或拒绝的决定,并反馈给XSM),能有效解决访问不当造成的安全问题。

ACM实现了中国墙CW[25]和简单类型强制STE[26]两种策略。中国墙策略的基本原则是没有任何信息流导致利益的冲突。其基本原理是:先定义一组中国墙类型和一个冲突集,然后根据类型定义标签。该策略根据标签进行判断,若两个虚拟机的标签处在同一个冲突集中,则不能同时在相同的系统上运行,即中国墙策略不允许有利益冲突的虚拟机同时运行在一台虚拟机监控器上。因此该机制主要用于虚拟机之间的信息流控制。ACM中的STE模型是对传统类型强制TE模型的改进。STE策略主要用于虚拟机系统节点内部,用于控制虚拟机系统资源在虚拟机之间的共享。STE策略也定义了一组类型,然后根据类型定义标签,当主体(一般是指系统中运行的进程)拥有客体(一般是指系统中存在的资源)标签时,主体才能访问客体。比如一个虚拟机可以访问多个系统资源,则该虚拟机将拥有所有可以访问资源的类型标签。

除此以外,Xen的Domain 0用户可以根据自己的需求制订安全策略。当虚拟机请求与其他虚拟机进行通信或访问资源时,ACM模块能根据用户定义的策略判断,以此达到对虚拟机的资源进行控制以及对虚拟机之间的信息流进行控制的目的。

Xen 3.0引入虚拟TPM的概念,可信计算实现了对虚拟化系统的扩展。扩展后的虚拟系统上的多个VM共享同一个物理硬件TPM。虚拟TPM可以使平台上的每个虚拟机利用其功能,让每个需要TPM功能的虚拟机都感觉是在访问自己私有的TPM一样。在实践中,可以创建多个虚拟TPM,这样每一个如实地效仿硬件TPM的功能,可有效维护各个虚拟机的安全,从而使采用Xen实现的云计算平台处于较稳定状态。

但是,目前Xen的安全性还有较多的安全问题。比如Domain 0是一个安全瓶颈,其功能较其他域强,所以容易遭受蠕虫、病毒和DoS等攻击,如果Domain 0瘫痪,那么将破坏整个虚拟机系统。Xen的隐蔽信道问题不解决,在Xen上就不可能运行高安全等级的操作系统。虚拟机共享同一套硬件设备,一些网络安全协议可能更加容易遭到恶意破坏和恶意实施。尽管Xen提供了方便的保存和恢复机制,使得回滚和重放机制非常容易实现,但这些将影响操作本身的安全特性。除此之外,在Xen中,由于安全机制嵌入在客户操作系统中,所以不能保证VMM的安全。