论文部分内容阅读
随着信息技术发展,信息安全日益重要,软件缺陷为信息安全风险的主要根源之一。动态软件缺陷测试技术是发现和消除软件缺陷的重要手段。然而,现有技术在对软件缺陷进行检测时,由于缺乏缺陷相关知识的指导,存在检测效率低、漏报率高等缺点。本文围绕软件缺陷检测,深入分析了现今流行的动态软件缺陷测试技术的优劣和存在的关键问题,重点研究了如何增强混合执行测试和导向型模糊测试技术的缺陷检测效率和效果。本文的主要工作如下:1.混合执行测试是一种基于符号执行的动态测试技术,初始输入的选择是影响该技术缺陷检测效果的重要因素,然而现有混合执行测试工作缺乏有效的初始输入选择策略。本文提出混合执行测试初始输入评估和选择方法。方法结合部分控制流敏感的细粒度污点分析和符号执行,通过识别和计算不同备选初始输入覆盖容易触发缺陷的危险路径的能力,来为混合执行测试评估和选择合适的初始输入,可有效的提高混合执行测试的缺陷检测效果。2.混合执行测试通过生成和调度测试用例对待测程序进行测试。现有混合执行测试工作普遍采用的测试用例生成调度策略缺乏针对缺陷检测的考量,效率较低。为了进一步的提高混合执行测试的缺陷检测速度,我们提出了一种面向危险操作的路径选择策略。该策略分析待测程序中不同执行路径对触发缺陷的贡献,按照缺陷发生的难易程度来进行测试用例的生成和调度,使测试流程对危险的程序状态空间进行优先系统探测,加速缺陷的触发。3.导向型模糊测试技术利用污点分析,识别种子输入中可影响容易发生缺陷的安全敏感操作的数据片段;进而对这些片段进行扰动以生成测试用例对待测程序进行测试,是有效的动态软件缺陷检测手段。导向型模糊测试的缺陷检测效果严重依赖于种子输入的质量,而现有导向型模糊测试工作缺乏有效的种子输入选取手段。本文提出导向型模糊测试种子输入选择生成策略,结合静态分析、动态监控和符号执行技术,为导向型模糊测试过程选择和生成可覆盖更多安全敏感操作的种子输入,可有效地提高导向型模糊测试的缺陷检测能力。4.我们设计和实现了混合执行测试工具CrashFinder和导向型模糊测试工且SeededFuzz。并利用这两个工具对Linux平台名个实际的程序讲行了实验分析,在诸如]convert等流行软件中发现了多个缺陷。