论文部分内容阅读
由于软件规模的不断扩大和运行环境的逐渐复杂,软件安全漏洞问题正日益加剧,并不断威胁到政治、经济、国防和社会安全等重要领域。软件安全漏洞检测是对软件安全漏洞进行预防和保护的有效手段,成为信息安全研究的一个重要课题。本文对软件安全漏洞的静态检测技术,尤其是模型检测,进行了研究和实现:
(1)研究、分析了软件安全漏洞的分类和建模方法。针对目前软件安全漏洞的分类方法,总结目前主要的漏洞类型和特征;针对静态检测的特征,将软件安全漏洞划分成内存安全相关和时序安全相关两种类型,以便于对漏洞检测技术的比较;并对目前主要的软件安全漏洞建模技术进行了分类,总结其中具有较高描述性的建模方式,在漏洞状态机建模这一方法的基础上进行进一步的工作。
(2)总结、比较了软件安全漏洞检测的主要方法。通过对动态检测和静态检测的比较,分析了静态检测在检测能力和性能上的优缺点,提炼出问题。同时,对词法分析、规则检查、类型推导等静态分析方法,以及定理证明、符号执行、模型检测等程序验证方法进行了研究和比较。针对目前模型检测在效率和准确性上的不足,从检测原理和过程中研究优化和改进方案。
(3)提出了一种基于漏洞状态机建模的模型检测改进方法。对于模型检测方法在效率和准确性方面进行了研究和改进:对检测算法进行改进,使得检测过程中不需要对重复调用的函数进行重复的遍历,从而提高检测速度;在检测过程中增加指针数据流分析,使得跨函数的指针传递不会因为别名而导致检测的错误,从而提高检测精度。
(4)基于改进的模型检测方法,设计并实现了一个软件安全漏洞静态检测原形系统,并通过实验验证了系统性能。在Linux平台上设计并实现了基于该改进方法的自动化检测工具,并设计了相应的漏洞模型的数据库以提供检测的漏洞模型。在设计所覆盖的漏洞范围内选取常见的漏洞实例对其进行检测,验证其检测能力和效率。