引言
以云计算为基础的虚拟化技术,如系统级虚拟机(包括VMware、Oxen、Denali、KVM和User Mode Linux等),受到了越来越多的关注并得到越来越广泛的应用。与传统计算机系统相比,虚拟化技术具有许多优点,如提高了硬件利用率,更便于软件开发测试环境的部署以及通过隔离性提高了安全保障等。但它也带来了一些新的安全问题。用户通过操纵文件创建、复制、存储、读写、共享、移植和回滚运行状态,增强了使用的灵活性,但是却影响了传统系统的线性时间变化特征,从而也影响到它的安全策略和机制的有效性。目前,虚拟机在实际应用中已占相当大的比例,逐渐成为攻击者的目标。已出现的入侵或破坏虚拟化环境的案例几乎涉及所有知名的商业和开源虚拟化技术,如VMware、Virtual PC和Oxen等。增强虚拟机技术的安全性和构建可信的虚拟化环境已经成为业界的迫切需求。
1 虚拟机访问控制机制
1.1虚拟机引入访问控制的必要性
虽然虚拟机具有良好的隔离性,但在很多应用上,必须进行虚拟机间的通信,而虚拟机间频繁的交互带来了新的安全挑战。例如,虚拟机间未经授权的非法访问、通过虚拟机间通信产生的病毒传播。属于不同组织或部门的虚拟机(通常有不同的安全级别)常常运行在同一台虚拟机监控器上,因此,实现多级安全十分必要。强制访问控制可决定虚拟机之问是否允许互相访问,并进而决定所允许访问的类型。
在非虚拟化环境下,已有一些安全模型和方法可用来确保对操作系统的安全访问。如:由贝尔(Bell)和拉普杜拉(SAPodilla)于1973年联合设计的一个适用于多级安全的安全模型BLP。此模型支持自主访问控制和强制访问控制两种安全策略;适应性的BLP(Adaptable BLP,ABLP),ABLP在主体当前敏感标签的指定上表现出更好的适应性,并且在进行安全决策时更加灵活。然而,目前在虚拟机环境下,相应的模型和方法还比较少。Shape是一套在Oxen中实现的基于强制访问控制的安全框架,实现了中国墙(Chinese Wall,CW)和类型执行(Type Enforcement,TE)两种策略。中国墙策略不允许有利益冲突的虚拟机同时运行在一台虚拟机监控器上;简单类型执行策略可以用来控制虚拟机问的通信。Shape框架为虚拟机和资源赋予不同的安全标签,并定义了安全标签冲突集合。例如,假设安全标签集合为A、B、C、D,安全标签冲突集合为A和B,根据中国墙策略,安全标签为A的虚拟机不能和安全标签为B的虚拟机同时运行在相同的虚拟机监控器上;而根据简单类型执行策略,拥有相同安全标签的虚拟机(如安全标签同为A的虚拟机)之间可以通信或共享资源。
基于角色的访问控制(Role-Based Access Control,RBAC)也被用于安全虚拟机监控器架构中。这套安全机制使用属性证书表示用户的角色,大大降低了为分布式终端计算机进行策略管理的成本。基于角色的访问控制虽然区别于自主访问控制和强制访问控制,但是它能达到与后两者相同的访问控制效果。
1.2 Viet-BLP模型
为了实现虚拟机通信场景下的强制访问控制和多级安全,笔者在BLP模型的基础上建立了Viet—BLP模型。由于虚拟机系统区别于非虚拟机系统的一些特征,笔者对模型元素、安全公理进行了修改,对状态转换规则重新进行了设计(基于BLP模型)。在重新设计的Viet—BLP状态转换规则中,普通的主体(除可信(特权)虚拟机之外的普通虚拟机)只有有限的权限,许多规则只能由可信主体(可信虚拟机)执行。因此,Viet-BLP模型支持强制访问控制和部分的自主访问控制,很好地满足了虚拟机环境下的多级安全要求。
根据Viet—BLP模型。笔者在Oxen中实现了一套适用于多级安全的强制访问控制(Mandatory AccessContr01.MAC)框架,可以比当前其它研究更好地确保虚拟机问通信的安全。利用XSM(Oxen SecurityModules,Oxen安全模块)给Oxen中与通信相关的甬数提供了钩子(hook)接口,用户可以将自行设计的安全策略设计成钩子函数,从而达到控制虚拟机间通信的目的。Viet-BLP模型使用了此甬数。在特权虚拟机(Dom0)中,利用central库开发了一套管理工具,从而可以很方便地在特权虚拟机中对安全策略进行调整和修改。
实现的强制访问控制框架和前面提到的Shape有几点不同。首先,Shape只能决定虚拟机间是否可以通信,但强制访问控制框架还能更细粒度地决定虚拟机间通信的类型;其次,Shape不允许拥有不同安全标签的虚拟机进行通信,而强制访问控制框架实现了虚拟机问的多级安全。
在当前的云计算平台中,由于不同用户往往通过租赁的方式使用虚拟机,攻击者会通过虚拟机的通信机制来传播其它用户虚拟机上的数据或隐私信息。因此利用Viet—BLP模型,可以很好地避免此类隐患。像Amazon EC2 Service和Eucalyptus等云平台都是构建于Oxen虚拟机之上的,因而可以直接借鉴构建在Oxen之上的强制访问控制框架来确保用户的安全。
2 虚拟机安全度量机制
若要通过虚拟机问的通信机制获取一台虚拟机上的数据或重要信息,前提是要入侵并在一定程度上控制那台虚拟机。随着云平台的广泛应用,虚拟机不可避免地成为攻击者入侵的对象。保障虚拟机运行时的安全与可信已成为目前研究的热点和重点。针对这一问题,笔者提出了虚拟机静态度量和动态检测框架。其中,静态度量是指对程序运行前的状态进行度量,动态检测则是在程序运行时判断其状态。
虚拟机运行时安全与可信计算联系非常紧密。由于传统的系统安全保障方法和机制通常是基于软件层面的,缺少一个绝对安全的可信基点,因此将它们应用到虚拟机系统中难以实现真正具有可信性的安全等级。要从根本上提高系统安全性,必须从芯片、硬件结构和操作系统等各方面综合采取措施,这正是可信计算的基本思想。其目的是在系统中广泛使用基于硬件安全模块支持的可信计算平台,从而提高整体的安全性。
2.1虚拟机静态度量
在云计算中,一切都是服务。其中,软件即服务(Software as a Service.SaaS)使用户可以在云平台中使用本机上没有的应用程序,对用户来说具有很大的吸引力。由于应用程序和计算资源已不在用户控制范围内,因此面临最大的挑战是保证用户级安全。
为解决这一问题,借鉴IBM提出的完整性度量框架(Integrity Measurement Architecture,IMA),提出了一套适用于软件服务的In—VM安全度世框架。在此框架中,虚拟机分成两类:一台可信虚拟机和多台客户虚拟机。其中,客户虚拟机为用户提供软件服务。此框架能在客户虚拟机(Guest VM)运行一段时间后(虚拟机启动可信部分是由Toot来保证的)判断其用户级应用程序的状态。与现有的虚拟机内监控方法相比,框架利用可信平台模块(Trust PlatformModule,TPM)作为可信根结点,不需要硬件虚拟化的支持。
虚拟机内度量框架In—VM的工作流程为:客户虚拟机中度量模块(Measurement Module,MM)负责度量运行程序并产生度量值,此度量发生在应用程序加载之后,运行之前。每当新的度量值产生,它们立即通过虚拟机问通信机制传到可信虚拟机,存放在度量列表(Measurement Table,MT)中,同时还将度量值顺序扩展到一个可信平台模块中的平台配置寄存器(Platform Configuration Register,PCR)中。内存监视器用于保证度量模块的安全和度量过程的可信性。
此外,还可在可信环境中(如不连网的状态下)获取运行程序的可信度量值,将它们存放在参照列表,同时也将它们顺序扩展到另一个指定的平台配置寄存器中。通过比较度量列表和参照列表中的对应项来验证程序的状态。笔者在Oxen中实现了此度量原型,能及时检测出对应用程序的篡改。通过性能测试,此度量原型性能开销较低。
2.2虚拟机动态检测
虚拟机系统运行时的安全性直接影响到整个系统的安全,建立有效的框架来评估和保障虚拟机系统运行时的状态,是虚拟机安全可信研究的重要目标。
动态检测是实现运行可信的关键技术,目前的研究还无法满足人们对于系统行为可信的要求。由于在传统操作系统和应用软件方面尚没有成熟的动态检测理论,而且其应用也并不成熟,因此虚拟机提供的隔离技术在一定程度上还只是用于支撑和推动可信计算的实现。
Root kit是攻击系统运行时的主要手段,一般需要系统权限(root)才能安装到目标系统。有很多方法可以使攻击者取得系统权限,从而使Root kit能顺利安装在目标机上。Root kit通常可分成3类:(1)二进制Root kit-对系统中的二进制文件进行修改后的恶意版本。(2)库Root kit.对系统中的库文件进行修改后的恶意版本。(3)内核Root kit.危害很大的版本,通常有两种植入方法:一种是将Root kit设计成可加载内核模块Root kit(LKM root kit);另一种是利用Linux下的设备文伺:/dev/memo和/dev/memo。其中,二进制和库Root kit可以归为用户空间Root kit。
内核Root kit通常会修改内核中的一些重要信息,并且可以植入后门以便进行后续的攻击。更重要的是,内核Root kit能通过修改系统命令如pHs或lamed来达到隐藏自己的目的。因此,内核Root kit的危害更大,更不易发现。
核Root kit通常会修改内核的中断描述符表或系统调用相关内容,其中对系统调用的修改主要有:
(1)修改系统调用表:修改系统调用表中系统凋用函数的入口地址,从而指向恶意代码;
(2)修改系统调用函数:不修改系统调用表,而是在系统调用函数中覆盖恶意代码,如jump指令,指向恶意代码;
(3)重定向系统凋用表:修改syStem call函数中系统调用表的地址,将其指向攻击者自定义的系统调用表。此外,还出现了另一种方法,它通过在处理器中的调试寄存器设置特殊断点,进而修改内核的相关内容。
通常将恶意软件分成4类:(1)恶意进程;(2)潜伏于进程或内核中,修改内存的只读段的恶意代码片段;(3)潜伏于进程或内核中,修改内存的动态内容的恶意代码片段;(4)其他利用硬件漏洞,位于更加底层的恶意软件。(1)类恶意进程一般的杀毒软件能够检测出来。笔者的工作目标是检测(2)类和(3)类恶意代码,也就是上面介绍的内核Root kit;(4)类恶意代码由于是针对硬件,暂时不属于研究的范畴。针对以上(2)类和(3)类恶意代码,笔者提出了一个动态检测框架。此框架把对客户虚拟机的检测模块放在另一台具有特权的虚拟机上,从而将被监控的客户虚拟机与监控机制相分离,通过监控机制动态监控客户虚拟机的运行状态。这种实现方式有如下优点:
(1)减少了检测被发现的可能以及检测模块被攻击的可能,降低了恶意软件绕过杀毒软件进行攻击的风险,从而与杀毒软件形成互补,提高了检测的有效性;
(2)检测对客户完全透明,客户虚拟机基本不用做任何的修改,而且,不依赖于客户虚拟机中杀毒软件的版本,可以独立进行升级;
(3)用于检测针对客户虚拟机内核的攻击,而杀毒软件很难检测出这类攻击。
笔者在Oxen中实现了此动态检测原型,借助于Menaces库,通过在特权虚拟机检测客户虚拟机(Dome)的内存来发现对客户虚拟机内核的恶意攻击:其检测范围涵盖了之前提到的多种Root kit攻击;动态检测框架对当前云计算平台具有很高的应用价值。在云平台中,若能及时检测和发现为用户提供服务的客户虚拟机中受到的攻击,将能尽早阻止攻击的实施,使用户的损失降到最低。此外,该动态检测原型,可以直接应用到以Oxen为底层的Amazon EC2 Service和Eucalyptus云平台中。
3 结束语
随着云计算技术的不断成熟,以云计算为基础的虚拟化系统安全变得越来越重要。虚拟机系统的安全可信问题仍是一个有待深入研究的课题。几乎所有的安全问题其实都可以视为可信计算的一部分。也就是说可信计算是安全的基础,研究可信计算技术可以为虚拟化技术提供安全保障服务。本文针对虚拟化系统的访问控制、安全度量、虚拟化安全等进行了分析,并介绍了笔者的解决方案。
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:构建虚拟化系统安全的研究与分析