关键词:
软件安全
软件测试
漏洞挖掘
模糊测试
摘要:
软件是互联网生态重要组成部分,然而由于设计不当、开发失误等原因,软件中存在形式多样的漏洞,对软件安全乃至互联网安全带来严重安全隐患,不仅威胁个人隐私与财产安全,也对国家战略安全造成重大威胁。通过自动化手段挖掘软件漏洞,发现系统安全隐患并及时防护,是保证系统安全、稳定运行的必要手段。因此,软件漏洞自动化挖掘技术研究具有极高学术价值与现实意义。模糊测试是一种应用广泛的软件漏洞自动化挖掘技术。自其提出以来,工业界与学术界对其展开大量研究,涌现出许多高效的测试方法,以及相应的测试工具。目前,模糊测试已在真实软件中挖掘出大量漏洞,是漏洞自动化挖掘领域的重要研究内容之一。论文围绕模糊测试关键技术展开研究。首先,论文梳理模糊测试的研究现状,对其基本问题展开深入分析,并构建出先进模糊测试的测试架构与运行流程。此后,论文从提高代码覆盖能力、提高导向测试能力、提高漏洞检测能力、提高并行化测试能力四个方面开展,提出相应技术改进方案。论文主要创新如下:1、针对随机变异算法无法有效突破复杂路径约束,以至于代码覆盖率受限的问题,本文提出了基于测试用例与比较指令参数映射关系差分推断的覆盖率提升方法。首先,如何提升代码覆盖率的问题被转化为特定测试用例搜索问题;然后根据测试用例与指令参数值之间的映射关系,利用差分推断方式识别关键字段,构建规模较小的搜索范围;接着,基于比较指令参数值的反馈,设计两种启发式搜索策略,辅助测试引擎更快搜索目标测试用例。此外,提出了程序形态转变与插桩逻辑改进两种性能优化策略,提高技术应用范围与整体测试效率。实验表明,该方法可有效提高测试引擎的漏洞挖掘能力与代码覆盖率。2、针对现有模糊测试导向收敛速度慢的问题,本文提出了融合多属性的导向测试方法。通过对现有模糊测试引擎的实验分析,指出其在测试用例生成过程中,由于导向感知能力不足,测试用例生成具有较大随机性,以至于导向测试收敛速度较慢。该方法首先提出了两种属性计算方法,以表征测试用例推进导向测试的能力;然后提出了基于精英策略的变异方法,通过标记属性相关字段,并在变异过程中保护其不被破坏,提高后代测试用例保留父代精英属性的可能性,即提高后代测试用例推进导向测试的能力;此外,利用测试能量分配策略为高质量后代测试用例分配更高的测试能量。实验表明,该方法可有效指导测试用例生成过程,提高导向模糊测试收敛速度。3、针对模糊测试漏洞检测漏报的问题,本文提出了基于触发条件搜索的漏洞检测方法,该方法对已测代码区域展开针对特定漏洞类型的搜索,可检测出部分漏报漏洞。该方法首先利用静态分析提取与漏洞触发条件相关的特征,并以此为依据对已测代码进行深入测试,最终生成既能执行到漏洞代码位置,又能满足漏洞触发条件的测试用例,减少漏洞检测漏报情况。而根据两种具体漏洞触发条件,本文提出了面向数值约束与面向堆操作序列约束的测试方法。实验表明,该方法可有效提高测试引擎的漏洞检测能力。4、针对现有并行模糊测试中同步开销大、重复测试比例高的问题,本文提出了基于测试状态感知的智能并行模糊测试方法。该方法首先提出基于主控/从属结构的按需同步策略,减少系统中冗余同步频次,降低性能开销;其次,通过基于聚类的勘察点调度方法提高各节点测试任务差异性,通过基于轨迹敏感性的变异算法控制各节点实际测试范围,两种方法互相配合提高节点间测试分离度,减少重复性测试。实验表明,基于该方法的并行测试框架具有正面作用,其测试性能与测试节点数量呈正相关关系;在相同数量测试节点下,其测试性能稳定优于现有并行模糊测试工具。