论文部分内容阅读
软件漏洞是软件在设计实现时由于软件功能自身的复杂性和抽象性,导致在具体实现时由于考虑不周全所引起的缺陷。软件漏洞所造成的危害严重,开发人员需要尽最大可能在软件发布之前修复软件中存在的安全隐患,软件测试一直以来都是软件安全领域的研究热点,而用于软件测试的测试用例对于发现软件中存在的缺陷起着至关重要的作用,研究测试用例的自动生成技术不仅能降低测试人员繁重的工作,而且能有效减少软件公司在软件测试方面的测试成本,可以说是一个极具研究价值的课题。测试用例生成技术的典型代表Fuzzing测试技术,具有生成用例速度快,应用广泛的特点,但由于Fuzzing测试技术本身缺乏对程序的理解,生成测试用例的过程具有很大的随机性,导致生成的测试用例难以保证测试效率。针对以上问题本文所做工作包括以下四方面:(1)研究Valgrind中间语言和插装过程对中间语言的不同定义和表现形式进行了介绍,对程序的插装原理和插装时机进行了分析,通过插装辅助代码收集程序中的分支条件。(2)研究污点数据流对污点数据的识别,传播形式进行了分析,在污点数据分析的基础上介绍了正向分析法,提出比正向分析效率更高的逆向分析,根据逆向分析的思想提出了函数依赖关系,由依赖关系生成函数依赖矩阵,通过依赖矩阵确定引起异常的函数调用初始点。(3)研究路径遍历通过污点数据分析确定敏感区域,提出基于敏感区域覆盖的路径遍历,并对实现思想进行了介绍,并针对路径遍历技术中存在的一些路径问题进行了处理。有效降低了路径爆炸的可能性。(4)设计实现了原型系统对原型系统中的测试用例生成模块进行了详细讲解,并设计了若干测试程序对原型系统进行测试,通过分析实验数据论证系统的有效性。