张鹏骞
(河北省儿童医院,河北 石家庄 050031)
虚拟化是云的战略组成部分之一。虚拟化允许多个客户使用相同的物理资源,为每个用户实例化一个单独的虚拟制造(Virtual Manufacturing,VM),虚拟地为用户提供一个完整的操作机器。几个虚拟机可以映射到相同的物理资源,从而允许多租户环境中的资源池化。虚拟机监视器(Virtual Machine Monitor,VMM)或虚拟机管理程序是管理虚拟机并允许各种操作系统在同一物理系统上同时运行的模块,然而虚拟化也给云用户和基础设施带来了安全挑战,因此将在下面讨论与虚拟化相关的安全问题。
虚拟机镜像用于实例化虚拟机。用户可以创建自己的虚拟机镜像,然后就可以从存储库上传和下载信息,这种做法如果被恶意使用,则可能会演变成一种严重的威胁,恶意用户可以研究信息的代码来寻找可能的攻击点[1]。另外,被感染的虚拟机将成为在云计算系统中引入恶意软件的来源,可用于监控其他用户的活动和数据,从而导致隐私泄露。
运行在同一物理硬件上的虚拟机需要相互隔离[2]。尽管不同虚拟机之间存在逻辑隔离,但对相同物理资源的访问可能会导致数据泄露和跨虚拟机攻击。不仅存储设备需要隔离,内存和计算硬件也需要隔离。
虚拟机逃逸是指恶意用户对虚拟机管理程序的控制,可能会为攻击者提供对其他虚拟机的访问,或者使虚拟机停机,过程如图1所示。成功的虚拟机逃逸攻击可以提供对计算和存储硬件的访问[3]。基础设施即服务(Infrastructure as a Service,IaaS)模型受到影响,进而影响其他服务模型。
图1 虚拟机逃逸过程示意
虚拟化环境中允许虚拟机在需要时通过快照快速恢复到某个先前的状态。虚拟机快照的快速恢复功能为用户提供灵活性的同时,也会引发安全问题。例如,虚拟机快照的快速恢复不仅会使虚拟机恢复到当前安全凭证启用之前的状态,还会使虚拟机恢复到修补漏洞之前,甚至恢复到以前的安全策略和配置信息等。如图2所示,建立了基础的Kernel 4.18版本,通过升级到5.4.211版本,进行了安全策略配置,最终到CentOS8-Template版本,后经检查发现配置策略存在安全隐患,此时即可通过虚拟机快照的快速恢复功能使其当前版本快速恢复到5.4.211版本。
图2 快照的快速恢复
虚拟化的关键模块是虚拟机管理程序,用来负责虚拟机管理、虚拟机隔离以及生成和管理虚拟资源。正因为虚拟机管理程序多入口的特点和互联的复杂性,才促使它为不法分子提供了攻击空间,并被动成为了更大的攻击媒介。虚拟机管理程序被入侵后,它管理的所有虚拟机和保存的虚拟机元数据也可能暴露给攻击者。若虚拟机管理程序中存在的且已报告的漏洞未及时得到修复,则会促使攻击者控制虚拟机管理程序或绕过安全限制。
镜像是虚拟机的模板,它指定了虚拟机的初始状态,是对安全性和完整性要求较高的实体,经常被各种不相关的用户采纳应用[4]。云计算系统中,为避免虚拟化因技术或安全漏洞带来的影响,可以注意以下几点。
(1)实施人员应该保护每个来宾虚拟机中的每个虚拟化操作系统;(2)虚拟化操作系统应采用内置程序;(3)使用第三方安全技术来减少对云服务提供商的依赖;(4)静态虚拟机应该加密;(5)安全漏洞评估工具应涵盖虚拟化环境;(6)静态虚拟机镜像应尽快使用最新的补丁进行修补,而且在修补虚拟机之前,保护机制应该到位;(7)在云计算环境中实施和使用支持虚拟化的安全工具。
(1)在云中建立镜像加密模块以及密钥管理服务器,利用加密来保护磁盘上的虚拟机镜像。每当虚拟机终止时,镜像加密模块都会对镜像进行加密。(2)通过修补补丁来缓解虚拟机中的漏洞[5]。需要建立更新检查器和在线渗透套件,更新检查器记录云设置中虚拟机使用的所有软件、版本号、更新版本等。在注册时需检查虚拟机内安装的程序软件,并保留与已安装可用软件相匹配的记录,匹配结果会检测出任何不匹配或过时的程序软件。(3)为云中的虚拟机提供更新的软件安装和补丁。记录虚拟机上运行的所有软件,检查已安装软件的更新并识别需要更新的虚拟机(休眠和运行中)。(4)打离线补丁。通过建立收集器模块及补丁程序模块来识别、纠正具有过时软件和具有恶意软件漏洞的镜像。(5)通过使用虚拟机自省(Virtual Machine Introspection,VMI)技术从外部监控虚拟机的物理内存。
将通过虚拟机管理程序获得的物理内存字节映射到核结构定义(Kernel Structure Definition,KSD),后者生成实时虚拟机的操作系统(Operating System,OS)视图,接着在需要监控的内存页面上安装内存访问和基于时间的触发器。生成的操作系统视图由一个防御模块使用,在请求访问被监控的存储器页面时,防御模块停止虚拟机的执行,将所需的页面加载到KSD,并评估KSD在新状态下的安全性。
虚拟机管理程序从本质上是管理和控制虚拟化的程序软件,由此非常容易使其成为被袭击的主要目标对象[6]。而受损的虚拟机管理程序可能会破坏整个系统,故其虚拟机管理程序的安全性需要特别关注,为此可注意以下几点应对措施。
(1)从硬件角度保护系统管理程序。建立一个硬件辅助框架,使用x86架构的系统管理模式(System Management Mode,SSM)来查看机器的中央处理器(Central Processing Unit,CPU)和内存状态[7]。SMM位于基本输入输出系统(Basic Input/Output System,BIOS)中,无法从其他CPU模式访问。SMM模块读取被管理程序保护的CPU寄存器的内容并对其进行验证。外围器件互联(Peripheral Component Interconnect,PCI)网卡用于读取物理内存,主要交换载波(Primary Interexchange Carrier,PIC)网卡的驱动程序在SMM模块中处理,以避免遭受到攻击。内存中的内容和CPU寄存器验证的结果被发送到称为监控机器的机器中。监控机器上的分析模块基于线性、稳定性和永久属性,以此来分析存储器的内容。此外,完整的虚拟机快照同虚拟机管理程序的初始快照进行比较,如果出现任何恶意行为,则会通知人工操作员[8]。通过安全连接将内容传输到监控机,传输的密钥由监控机管理。
(2)由于虚拟机管理程序运行在特权模式下,假设管理程序受到攻击或感染,则受到感染的虚拟机管理程序可能会将所有权限授予攻击者,从而将所有的虚拟机管理程序内置资源置于危险区域[9]。所以可以利用最小特权原则来减少超级用户的攻击面,并确保其他系统组件和资源的安全。管理程序分为两个主要组件模式,一是与操作系统解耦并在用户模式下执行的去特权组件,二是需要很少或不需要与操作系统交互的模块被移至去特权模式。去特权模式下需要操作系统提供功能部分被用户模式的等效部分所取代[10]。由于大多数系统管理程序代码没有特权,所以该方案会大大降低系统被攻击的风险,即便受到危害的虚拟机管理程序也不会让攻击者完全控制系统。
(3)依靠硬件功能来确保虚拟机之间的隔离,减少虚拟机管理程序攻击面。有研究表明,要实现一个原型,多个虚拟主机可以与管理程序一起运行[11]。资源的管理可以通过扩展的硬件功能完成,也可以通过微型系统(命名为NoHype)管理软件完成。资源的预先分配消除了系统管理程序动态管理资源的需要,虚拟化I/O设备的使用消除了模拟它们的需要。在NoHype中使用现代硬件功能来隔离多个虚拟机的资源,如现代处理器中的硬件分页机制,对客户机操作系统进行少量修改,以便检查可用的系统配置和资源,这种扫描只允许在使用临时管理程序启动时进行,可避免其他用户通过执行恶意代码进行任何攻击,扫描完成后,临时管理程序将被禁用。此外,由于客户虚拟机有专用的内核和硬件,因此避免了间接操作。
通过安全日志和审计虚拟机操作(挂起、恢复、迁移)进行攻击。在每次操作开始时,虚拟机快照的哈希值将通过寄存器、内存内容和映像磁盘进行计算,而每个状态下的哈希值随后用于激活快照。在虚拟机的安全运行环境中,也使用了类似的日志记录和审计机制来防止虚拟机回滚。
尽管云计算提供了一些优势,但它也引发了安全问题,阻碍了其快速应用。所有的用户,无论是个人还是组织,都应该清楚地意识到云中存在的安全威胁。了解安全威胁和应对措施将有助于组织进行成本效益分析,使云计算得到快速应用。