论文部分内容阅读
软件作为计算机系统的大脑,负责控制计算机硬件的执行操作,涉及到人们生活的每个角落,也广泛应用于安全关键部门,计算机软件安全的重要性不言而喻。操作系统安全是信息系统安全的基础和起点,安全操作系统的安全等级评测给出了操作系统安全性能的衡量标准。在高等级安全操作系统脆弱性评定规范中,均要求操作系统具有抵御中/高等级攻击的能力,并要求对操作系统进行系统化的安全缺陷分析。本文的研究工作针对系统软件安全缺陷分析与缺陷攻击的防御展开,取得了以下成果:
第一,本文提出了一种高效的流敏感指针分析方法。流敏感的指针分析计算指针变量信息在控制流过程中的改变,为操作系统安全缺陷分析提供必要的信息。现有的流敏感指针分析方法存在应用规模受限的问题,仅能应用于万行代码规模的程序分析,不适用于分析规模庞大、逻辑复杂的操作系统。本文提出分治的指针分析方法,结合数据流分析技术,降低分析过程内的存开销和计算复杂度,有效的提高了分析方法的效率。LLVM中间表示将指针变量分为寄存器变量和内存变量两类,分治的指针分析方法在此基础上分别对寄存器变量和内存变量进行别名计算和指向分析,利用全局顺序链表结构存放别名集,仅需要链表头结点操作来完整别名计算,指向分析通过在压缩的控制流图上执行数据流迭代完成。该方法提高了指针分析的精度和可用规模,增强了静态代码分析方法在系统软件安全缺陷分析中的可用性。
第二,本文设计了一种基于非线性变换的栈溢出攻击防御方法。该方法是对现有栈溢出攻击防御方法的改进。当程序中同时存在缓冲区溢出和其他类型缺陷的情况下,现有的防御方法能够被攻击者旁过,本文提出有效解决该问题的方法。该方法在基于保护值的栈溢出防御方法的基础上,利用非线性变换获取保护值,增加攻击者伪造保护值的难度,提高了软件系统在新型环境下对运行时攻击的防御能力。
第三,本文基于控制流完整性实现了一种ROP攻击防御方法。ROP攻击是一种新型的代码重用攻击,主要有三类:基本ROP攻击、无return的ROP攻击和JOP攻击。ROP攻击是运行时攻击防御方法面临的新的挑战,针对性的ROP攻击防御方法仅对特定类型的ROP攻击有效。本文提出ROP攻击防御方法切断ROP攻击的发起步骤。针对ROP攻击通过间接跳转语句劫持程序控制流实现程序转入非法状态的特点,该方法结合程序控制流完整性原理,在程序中部署间接跳转目标验证操作,实现间接跳转部分的控制流完整性。通过实验对比,该方法能够有效的防御三类ROP攻击,引入的性能开销在可接受范围内,具有可用性。
第四,本文基于虚拟机架构实现了一种内核rootkit攻击的防御方法。该方法针对内核rootkit攻击者具有较高权限的情况,借助虚拟机架构实现运行时系统控制数据的完整性保护,有效防御内核数据对象钩挂类rootkit在系统空间内对函数返回地址和钩子函数的控制。基于虚拟机架构的内核rootkit攻击防御方法在虚拟域内构造两个并行的逻辑地址空间,客体系统地址空间和安全地址空间,后者对于前者是不可见的。客体系统的控制数据和相关的安全策略存放在安全地址空间内,防止攻击者对控制数据的恶意篡改。为了提高该方法实施的效率和可用性,我们利用硬件虚拟化技术辅助实现,降低地址空间切换引入的性能开销。该方法初步展示了虚拟机架构在防御系统缺陷攻击中的广阔应用前景。