论文部分内容阅读
近年来,伴随着席卷全球的云计算热潮,系统虚拟化技术作为云计算的支撑技术得到了复苏和长足的发展。在虚拟化、云计算环境下,传统安全问题仍然存在,并随着云计算的广泛应用呈现越来越严重的态势。其中,软件是信息基础设施的灵魂,一方面,软件设计由于安全性欠缺的历史原因和功能需求日益复杂的现实原因,可能导致运行行为不符合设计者或用户的预期;另一方面,信息安全事件层出不穷,软件面临的外部安全威胁也日益严重,给社会和用户带来巨大损失。软件安全一直是信息安全中的一项中心议题,是很多其它安全问题的根本,不容小觑。而传统的安全工具,如沙盒、防病毒软件等,都存在致命缺陷:与目标软件在同一地址空间,与被保护软件(下称“目标软件”)面临同质的威胁和攻击,安全保护机制可能被恶意绕过甚至关闭;同时,传统安全工具在客户虚拟机数量庞大的虚拟云计算环境中部署和管理存在困难。而系统虚拟化因其隔离性、高特权性以及硬件与操作系统间新的抽象层次等特点备受安全领域的青睐。软件安全保护通常分为相辅相成的两个方面:一是防止软件的执行对系统软件栈中的其它软件造成破坏;二是保护软件的数据和执行不受不可信的计算环境的攻击。因此,本文从三个角度提出了基于系统虚拟化的软件安全保护系统,分别从目标软件用户态行为控制、目标软件数据保护、目标软件内核态行为监控三方面对目标软件进行控制和保护;安全策略与系统实现分离,将用户自定义安全策略作为输入,根据策略中定义的响应动作对监控到的异常情况进行响应;为避免全系统监控带来的性能开销,通过影子内存技术将客户虚拟机系统中的有效监控点限制在目标软件进程上下文范围内,不影响非目标软件的正常执行流。为掌握目标虚拟机的整体运行状态,在深入研究虚拟化自省(Virtual Machine Introspection)机制和技术的基础上,对虚拟化内存自省进行领域建模,并设计一种领域特定语言VmiDsl,以支持基于虚拟化自省机制的安全应用的快速开发和管理。基于以上四个关键技术进行了有针对性的研究和系统开发实现,并取得了一定的成果,具体包括:1.提出了一种对虚拟机自省VMI技术进行领域建模的方法,形式化地描述全面获取目标虚拟机可用于安全应用的运行状态信息的方法,分析了VMI的内存自省技术的底层数据获取方法、事件驱动类别,并设计了一种虚拟机自省的领域特定语言VmiDsl,使用户无需关注底层实现细节,以高于API设计的贴近自然语言的抽象层次快速构建各种VMI安全应用;利用Python自带的payparsing库实现了VmiDsl的语法解析器,并在KVM中实现了原型系统,通过两个用例进行了效率测试分析;2.提出了一种基于系统虚拟化的应用级沙盒系统VxBox,在目标虚拟机外部根据用户定制的安全策略控制目标软件系统调用行为。VxBox被部署在与目标虚拟机相隔离的一个管理虚拟域及底层VMM中,安全策略也由管理虚拟域进行管理,即使目标虚拟机中的特权软件被劫持,也无法绕过、破坏或关闭VxBox,无法篡改其安全策略。通过在x86及AMD64两种硬件平台的半虚拟化的xen中实现VxBox的原型系统,并对多种应用软件(例如Web服务器或病毒扫描工具等)进行控制证明了VxBox系统的有效性,VxBox的效率比直接在目标系统中利用ptrace监控目标软件的效率高;3.提出了一种根据安全策略保护客户虚拟机中目标软件内存数据和相关虚拟磁盘数据的安全系统VxWall。基于影子内存技术,VxWall为目标软件的不同运行模式分别提供不同的内存视图,当进程运行于用户态时,所访问的内存是原始的真是内存数据,而当内核代表进程在内核空间执行时,其所访问的内存是物理伪内存页,这样即使目标虚拟机被劫持,也可以有效防止目标软件的内存数据泄露;为保护与目标软件相关的虚拟磁盘数据,VxWall使用一个可信的管理虚拟域来管理这些文件,用经处理的伪文件代替目标虚拟机中的相关文件。当目标软件发起关于文件操作的系统调用时,VxWall在vmm中的核心模块Vx-core对文件操作系统调用进行模拟,作为中间人在管理虚拟域和目标虚拟域间交换数据。在AMD64平台上实现了原型系统并进行了攻击有效性和性能分析。4.针对传统的软件内核行为监控在操作系统内核有效执行点插入钩子函数引起系统性能严重下降,并且严格限制内核扩展机制的缺陷,提出软件可感知的内核行为控制系统VXeck,根据用户指定的安全策略对目标软件的内核控制流进行监控,并通过影子内存技术将对内核态行为的监控限制在目标进程上下文之内,与传统的全系统监控的方法相比,极大降低了对系统性能的损耗。在xen-AMD64中实现了原型系统并进行了有效性和效率分析。