论文部分内容阅读
随着信息技术的快速发展,软件在人们生活中的应用越加广泛、深入,其安全性也越发受到重视。Fuzzing作为一种高效、实用的软件测试技术,其在发现程序错误、漏洞等问题方面表现突出,是软件安全领域内一项备受关注的技术。近年来,对fuzzing技术的研究集中在减少其盲目性、提高其准确性方面。与之相比,动态符号执行通过符号化程序输入、收集并求解路径约束来生成高质量的测试用例,该技术能够精确覆盖程序路径,但运行速度较慢。两种技术优势互补的特性使得将其结合使用成为近年来的一个研究热点,目前在该方向上已取得初步研究成果。本文的工作聚焦在如何更加有效地结合fuzzing和动态符号执行这两种技术,以使它们更大程度上发挥出各自的优势。具体来说,针对目前该方向上存在的程序路径漏解问题,本文分析了其背后的原因,并提出了一个改进的程序路径记录方法来解决该问题。本文运用提出的方法构建了一个二进制程序分析工具Digger。该工具支持Linux系统上64位和32位的程序,能够处理从文件读取数据的程序,且能够支持被测程序附加其他参数。本文在人工构建的程序和现实中的应用(如coreutils工具集、gif2png等)上进行了实验,实验结果表明,与目前该方向上的一个优秀工具相比,Digger能够达到更高的代码覆盖率,且能够发现更多的程序错误,由此证明了本文所提出方法的有效性和实用性。