论文部分内容阅读
软件安全漏洞的存在及其带来巨大的危害使得软件漏洞检测技术的研究日益重要。其基本思想是通过对待测试软件程序采取不同的技术手段,分析程序的源代码、二进制代码或在对应宿主系统中运行的信息对待测程序是否存在漏洞进行检测。基于动态污点分析技术的软件漏洞检测方法近年来得到了很好的发展,然而由于动态污点分析技术检测路径单一,覆盖率较低,同时由于二进制程序无法获得更多的程序的内部结构信息,使得其检测效率较低。借助遗传算法降低测试数据的数量级、提高测试效率的测试用例生成技术已得到广泛关注。由于大多数遗传算法都以单路径或单一的路径覆盖率为目标且效率不高,很难有效应用到实际工作中,因此研究基于多路径遗传算法的路径选择算法,在提高检测覆盖率的同时改善测试的效率具有重要意义。本文通过对缓冲区溢出原理的深入分析以及对国内外漏洞检测技术进行广泛研究的基础上,提出了一种基于动态污点分析技术的检测二进制程序缓冲区堆栈溢出漏洞的方法,通过改进的启发式搜索算法作为测试用例生成的多路径选择算法,弥补动态污点分析的不足,达到提高待测程序路径覆盖率与分支覆盖率的目的,提高检测的效率。本文主要研究成果如下:1.设计并实现了一个二进制程序动态污点分析模型。通过规定明确的污点对象、污点传播方案,以及对二进制程序缓冲区溢出原理的分析,提出了基于堆栈溢出的监测模型,用于监测危险函数调用引起的相关软件缺陷行为,并提高检测方法的效率。2.设计并实现了一个智能路径选择的测试用例生成模型。通过启发式搜索算法多路径遗传算法作为路径选择算法,通过对算法的适应度函数重新设计,改进算法的选择算子,使得算法在以动态污点分析的覆盖率为目标进行测试用例的自动生成。3.基于以上两个模型设计了原型系统,通过模块间的相互作用对二进制应用程序进行漏洞检测。测试结果表明,它能改进污点分析技术的不足,并通过智能的路径选择算法在多路径数据生成中具有更好的效果。