论文部分内容阅读
随着互联网的迅速发展,计算机之间的交互不断增强,软件的安全问题已成为计算机系统安全的一个至关重要的问题。程序安全作为软件安全问题的一个子问题是目前研究的热点之一。已经有相当多的工作针对程序安全问题展开了深入的研究,而其中基于控制流监控的方法由于其攻击漏洞和攻击方式的无关性,成为一种通用而有效的程序安全保障的方法。但是,目前此类方法尚存在着一些缺陷,如性能损耗较大,精度有待提高,自动化和实用性尚待改善等。本文围绕如何改进该类方法的各方面特性而展开研究。
本文的研究内容大致包括以下几个方面:基于简化控制流描述的程序安全研究;非标准控制流的自动化处理的研究以及基于隐式控制流隔离的程序安全的研究。整体的研究范围涵盖了目前控制流监控类方法局限性的主要方面(性能、精度、实用性)。本文主要研究内容具体描述如下:
1) 针对现有的基于控制流监控的方法的性能代价比较高的现状,提出了控制流描述简化的方法。通过插入程序代码在运行时候对程序的控制流进行编码,本文工作将对控制流的检验机制提升到了系统调用的入口处。与此同时,本文工作对通常的指针分析算法在用于程序安全问题的时候做了特别的优化。实验表明,该方法能够在很大程度上提高性能并且仍然能达到很高的安全性。用其思想实现的原型系统一SVMON的平均性能代价为2.76%,远远小于类似的其它系统。
2) 针对现有的系统中对非标准控制流处理的困难,提出了非标准控制流自动化处理的方法。通过分析不同程序运行时候非标准控制流出现的频度规律,对非标准控制流进行自动发现,并将这样的发现结果自动融合到具体的控制流监控的模型当中,避免了传统方法的高平台相关性和手工消除非标准控制流的局限性。与此同时,本文提出了自动训练数据集的生成方法,进而避免了对程序自带的测试数据集的依赖。
3) 针对已有方法的使用静态分析所得出的程序控制流信息的不精确性和静态不确定性的问题,提出了隐式控制流的概念,指出它是对程序漏洞攻击所必须依赖的一个程序特性。在此基础上给出了隐式控制流隔离的程序安全方法,并且解决了其实施上面的若干难点,包括自动化分析、参考动态控制流信息的监控机制的建立以及操作系统内核的支持等几个方面。实验表明,该方法是有效的,并且能够发现目前已有检测方法所不能发现的由静态不确定性而导致的可能的攻击。