3.2 主机虚拟化的主要安全威胁
主机虚拟化提供给用户使用的不是物理意义上的服务器,而是虚拟服务层中的一个操作系统实例。通过主机虚拟化,管理员不仅可以在物理服务器上部署多个虚拟服务器,并为其安装操作系统,还可以根据不同业务需求定制虚拟机的内存、CPU、存储容量等。这样不但提高了服务器的利用率,还降低了硬件成本,缩短了服务器的配置时间,并能保持业务的连续性等。与物理服务器一样,虚拟服务器上同样存在安全风险。因此,在部署、使用、分配、管理虚拟服务器时必须加强安全风险防范意识。
1.?虚拟机之间的安全威胁
传统网络是从客户端发起访问到服务器的纵向流量结构,纵向流量必然要经过外置的硬件安全防护机制,如防火墙等。即使在虚拟化后,传统的安全防护设备也可以实现对纵向流量的安全防护和业务隔离。与传统的安全防护不同,在虚拟化环境下可能存在多租户服务模型。多个虚拟机可在同一台物理主机上交互数据从而产生横向流量,这些数据不经过外置的硬件安全防护机制,管理员无法对这些横向流量进行有效监控或者实施高级的安全策略,例如,入侵防御规则或防火墙规则,如图3-31所示。在服务器的虚拟化过程中,一些虚拟化厂商通过在服务器Hypervisor层集成虚拟交换机的特性。也可以实现一些基本的访问允许或拒绝规则,但是很难集成更高级的安全检测防护引擎来检测虚拟机之间的流量漏洞攻击行为。当多个虚拟机共享硬件资源,且虚拟机横向流量又不被外部感知的情况下,一台虚拟机受到攻击后,宿主机乃至整个网络都会遭受严重威胁。
2.?虚拟机与宿主机之间的安全威胁
宿主机是虚拟机的物理基础,虚拟机存在于宿主机中,且与宿主机共享硬件。宿主机的运行是虚拟机运行的前提与基础,因此宿主机的安全至关重要。一旦宿主机被控制,利用宿主机的高特权极,攻击者可以对同一宿主机上的虚拟机进行攻击(如图3-32所示)。攻击者甚至可以通过提升重要的访问权限,以使其可以访问宿主机的本地网络和相邻系统。
3.?虚拟机控制中心的安全威胁
通过虚拟机控制中心,管理员可以管理部署在不同位置上的虚拟机,并应用自动化策略执行和快速部署等功能使日常工作变得简单、快捷、高效,从而使数据中心的虚拟化环境更加易于管理,并能大大降低相关成本。因为虚拟机控制中心对其管理的所有虚拟机拥有高级别访问控制权限,所以确保虚拟机控制中心的安全非常重要。否则,一旦虚拟机控制中心被入侵,那么所有虚拟机乃至数据中心都会面临极大威胁。
4.?虚拟机蔓延(泛滥)及管理疏漏的隐患
导致虚拟机蔓延(泛滥)的因素有很多,如僵尸虚拟机。这些虚拟机在完成工作后被丢弃,不会被关闭,也不会被删除,但它们继续消耗资源。由于长期处于无人看管状态,虚拟机一旦形成蔓延趋势,就会造成巨大浪费。同时,口令的时限、漏洞的出现等问题都会成为虚拟机管理的安全隐患。
在虚拟机出现后,安全管理上会变得更为繁琐。虚拟机口令、宿主机口令、虚拟机控制中心口令、虚拟机漏洞、宿主机漏洞等每个细节都不容忽视。同样,在部署虚拟机时使用连续IP地址,主机、虚拟机管理口令相同等这些看似方便的管理方式,会在未来带来较大麻烦。总之,虚拟机如管理不善,很可能会演变为整个数据中心的灾难。
虚拟机是主机虚拟化的基础运算单元,一旦虚拟机被劫持或攻陷,造成的损失是无法估量的。通常对虚拟机攻击方式是以下一种或多种方式的结合:
社会工程:攻击者可通过各种社交渠道获得有关目标的结构、使用情况、安全防范措施等有用信息从而提高攻击成功率。
口令破解:攻击者可通过获取口令文件,然后运用口令破解工具获得口令,也可通过猜测或窃听等方式获取口令。
地址欺骗:攻击者可通过伪装成被信任的IP地址等方式来骗取目标的信任。
连接盗用:在合法的通信连接建立后,攻击者可通过阻塞或摧毁通信的一方来接管已经过认证建立起来的连接,从而假冒被接管方与对方通信。
网络窃听:网络的开放性使攻击者可通过直接或间接窃听获取所需信息。
数据篡改:攻击者可通过截获并修改数据或重放数据等方式破坏数据的完整性。
恶意扫描:攻击者可编制或使用现有扫描工具发现目标的漏洞,进而发起攻击。
破坏基础设施:攻击者可通过破坏DNS或路由信息等基础设施,使目标陷于孤立。
数据驱动攻击:攻击者可通过施放病毒、特洛伊木马、数据炸弹等方式破坏或遥控目标。
服务拒绝:攻击者可直接发动攻击,也可通过控制其他主机发起攻击,使目标瘫痪,如发送大量的数据洪流阻塞目标。
本节将重点分析目前主流的主机虚拟化面临的安全威胁,包括虚拟机信息窃取及篡改、虚拟机逃逸、Rootkit攻击、拒绝服务攻击和侧信道攻击等。
3.2.1 虚拟机信息窃取和篡改
虚拟机信息主要通过镜像文件及快照来保存的。虚拟机镜像无论在静止还是运行状态都有被窃取或篡改的脆弱漏洞,另外,包含重要敏感信息的虚拟机镜像和快照以文件形式存在,能够轻易通过网络传输到其他位置。
建立客户机镜像文件及快照不会影响客户机的脆弱性。然而,对于镜像和快照来说,最大的安全性问题就是它们像物理硬盘一样包含敏感数据(例如,密码、个人数据等)。因为镜像文件和快照与硬盘相比更易移动,所以更应重视在镜像或快照是的数据的安全性。快照比镜像具有更大风险,因为快照包含在快照生成时的RAM内存数据,甚至包含从没存在硬盘上的敏感信息。
我们可以将系统或应用程序部署到镜像文件中,然后通过这个镜像文件进行分发部署,这样可以节省大量的时间。增加镜像文件保护能力,能够提高业务系统的安全性、连续性和健壮性。由于镜像文件易于分发和存储,需要防止其未经授权的访问、修改和重置。
随着在组织机构内的服务器和桌面虚拟化工作的不断推进,管理镜像文件成为一个巨大的挑战。一个镜像文件越长时间没运行,就会在它再一次加载时出现越多的脆弱点。因此,应检查所有的镜像以确保长时间未运行的镜像文件也定期更新。当用户和管理者可以创建自己的镜像文件时,跟踪这些镜像文件也是一个麻烦的问题。这些镜像可能没有做到适当的防护,尤其在没有可参照的安全基线的时候(例如,提供一个不同的预安全地镜像),这会增加被攻陷的风险。
伴随着虚拟化工作推进,另一个潜在的问题是镜像文件的增殖,也叫无序蔓延。创建一个镜像只需要几分钟,如果没有任何安全性的考虑,就会创建很多没必要的镜像文件。多余的镜像文件会成为攻击者另一个潜在的攻击点。另外,每一个镜像都需要独立的安全性维护工作,加大了安全维护的工作量。因此,组织机构应该减少建造、存储和使用不必要的镜像,实施完善的镜像管理流程,通过管理流程来管理镜像尤其是服务器镜像的创建、安全性、分发、存储、使用、退役和销毁工作。
同样,也需要考虑快照的管理。某些情况下,组织机构会规定不允许存储快照,因为被恶意软件感染的系统在后期恢复快照时有可能重新加载恶意软件。
3.2.2 虚拟机逃逸
利用虚拟机,用户能够分享宿主机的资源并实现相互隔离。理想情况下,一个程序运行在虚拟机里,应该无法影响其他虚拟机。但是,由于技术的限制和虚拟化软件的一些bug,在某些情况下,虚拟机里运行的程序会绕过隔离限制,进而直接运行在宿主机上,这叫做虚拟机逃逸。由于宿主机的特权地位,出现虚拟机逃逸会使整个安全模型完全崩溃。当虚拟机逃逸攻击成功之后,对于Hypervisor和宿主机都具有极大的威胁。对于Hypervisor而言,攻击者有可能获得Hypervisor的所有权限。此时,攻击者可以截获该宿主机上其他虚拟机的I/O数据流,并加以分析获得用户的相关数据,之后进行更进一步的针对用户个人敏感信息的攻击,更有甚者,倘若该宿主机上的某个虚拟机作为基本运行,攻击者便可以通过Hypervisor的特权,对该虚拟机进行强制关机或删除,造成基本服务的中断;对于宿主机而言,攻击者有可能获得宿主机操作系统的全部权限。此时,攻击者可以对宿主机的共享资源进行修改或替换,使得该宿主机上的所有虚拟机访问到虚假或篡改后的资源,从而对其他虚拟机进行攻击。由于攻击者获得了最高权限,则可以修改默认用户的基本信息,并降低虚拟机监视器的稳健性,从而对整个虚拟化平台造成不可恢复的灾难,使得其上的所有虚拟机都丢失重要信息。
目前对于虚拟机逃逸攻击,尚没有很好的安全对策,主要是针对云计算服务角色给出一些安全防范建议。例如,及时发现漏洞、开发漏洞补丁、使用强制访问控制措施限制客户虚拟机的资源访问权限、及时度量Hypervisor完整性等。
但这些安全防范建议均不能真正解决虚拟机逃逸攻击带来的危害。针对虚拟机逃逸漏洞,还是应该采用纵深防御的安全防护方法,从攻击检测、预防、避免攻击蔓延和Hypervisor完整性防护等多个方面,并结合可信计算技术,建立一个多层次的安全防护框架。
3.2.3 Rootkit攻击
“Rootkit”中Root一词来自UNIX领域。由于UNIX主机系统管理员账号为root,该账号拥有最小的安全限制,完全控制主机并拥有了管理员权限被称为“root”了主机。然而,能够“root”一台主机并不意味着能持续地控制它,因为管理员完全可能发现主机遭受入侵并采取应对措施。因此Rootkit的初始含义就是“能维持root权限的一套工具”。
简单地说,Rootkit是一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息,持久并毫无察觉地驻留在目标计算机中,对系统进行操纵,并通过隐秘渠道收集数据。Rootkit的三要素就是:隐藏、操纵、收集数据。Rootkit通常和木马、后门等其他恶意程序结合使用。
Rootkit并不一定是用于获得系统root访问权限。实际上,Rootkit是攻击者用来隐藏自己的踪迹和保留root访问权限的工具。通常,攻击者通过远程攻击获得root访问权限,或者首先通过密码猜测或者密码强制破译的技术获得系统的访问权限。进入系统后,如果还未获得root权限,再通过某些安全漏洞获得系统的root权限。接着,攻击者会在侵入的主机中安装Rootkit后门,然后将通过后门检查系统中是否有其他用户登录,如果只有自己,攻击者便开始着手清理日志中的有关信息,隐藏入侵踪迹。通过Rootkit的嗅探器获得其他系统的用户和密码之后,攻击者就会利用这些信息侵入其他系统。
在发现系统中存在Rootkit之后,能够采取的补救措施也较为有限。由于Rootkit可以将自身隐藏起来,因此可能无法知道它们已经在系统中存在了多长的时间,也不知道Rootkit已经对系统中的哪些信息造成了损害。对于找出的Rootkit,最好的应对方法便是擦除并重新安装系统。虽然这种手段很严厉,但是这是得到证明的唯一可以彻底删除Rootkit的方法。
3.2.4 分布式拒绝服务攻击
分布式拒绝服务攻击(DDoS)是目前黑客经常采用而难以防范的攻击手段。
DoS(Denial of Service,拒绝服务攻击)有很多攻击方式,最基本的DoS攻击就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响应。
DDoS攻击手段是在传统的DoS攻击基础之上产生的一类攻击方式。单一的DoS攻击一般是采用一对一的方式,当攻击目标的各项性能指标(CPU速度低、内存小或者网络带宽小等)不高时,它的效果是明显的。随着计算机与网络技术的发展,计算机的处理能力迅速提高,内存大大增加,同时也出现了千兆级别的网络,这使得DoS攻击的困难程度大大增加,分布式拒绝服务攻击(DDoS)便应运而生。高速广泛连接的网络在给大家带来方便的同时,也为DDoS攻击创造了极为有利的条件。在低速网络时代时,黑客占领攻击用的傀儡机时,总是会优先考虑离目标网络距离近的机器,因为经过路由器的跳数少、效果好;而现在电信骨干节点之间的连接都是以G为级别,这使得攻击可以从更远的地方或者其他城市发起,攻击者的傀儡机位置可以分布在更大的范围,选择起来更加灵活。因此,现在的DDoS能够利用更多的傀儡机,以比从前更大的规模来攻击受害者主机。
DDos攻击的后果有很多。例如,被攻击主机上存在大量等待的TCP连接;网络中充斥着大量无用的数据包,且源IP地址为假;制造高流量无用数据,造成网络拥塞,使受害主机无法正常和外界通信;利用受害主机提供的服务或传输协议上的缺陷,反复高速地发出特定的服务请求,使受害主机无法及时处理所有的正常请求;严重时会造成系统死机等。
3.2.5 侧信道攻击
基于虚拟化环境提供的逻辑隔离,采用访问控制、入侵检测等方法可以增强云计算环境的安全性,但是底层硬件资源的共享却容易面临侧信道攻击的威胁。
侧信道攻击是一个经典的研究课题,由Kocher等人于1996年首先提出。侧信道攻击是针对密码算法实现的一种攻击方式,当密码算法具体执行时,执行过程中可能泄露与内部运算紧密相关的多种物理状态信息,比如声光信息、功耗、电磁辐射以及运行时间等。这些通过非直接传输途径泄露出来的物理状态信息被研究人员称为侧信道信息(Side-Channel Information,SCI)。攻击者通过测量采集密码算法执行期间产生的侧信道信息,再结合密码算法的具体实现,就可以进行密钥的分析与破解。而这种利用侧信道信息进行密码分析的攻击方法则被称为侧信道攻击。
针对侧信道攻击,安全芯片可以提供大量的解决方案。安全芯片可以采用混淆时序、能耗随机等手段使黑客无从辨别,也就难以解密。