论文部分内容阅读
随着计算机行业的不断发展,软件漏洞问题也日益严重。模糊测试作为漏洞挖掘常用的方法,被用来检测各种软件以及应用程序中是否存在漏洞。然而模糊测试对于输入格式的敏感性低,导致生成的大量种子无法通过格式检查。因此,对模糊测试种子输入的内部语法知识的探索并据此生成更高质量的种子是一项有意义的研究。近年来,随着机器学习技术的不断发展,该项技术在众多领域的任务中都取得了相应的成功,所以将机器学习技术应用到模糊测试的改进上具有很好的研究前景。本文作者在进行相关研究的过程中发现,目前已经有研究人员开始将机器学习技术应用在模糊测试的改进上并取得了不错的效果,但是这些研究大多只作用于简单格式的种子,对于上下文相关的复杂格式种子例如PDF格式文件,现有的工作要么无法作用于复杂格式文件,要么只是在原有复杂格式种子文件上做小量的修改,而无法生成一个完整的全新种子文件集合。所以他们的工作所生成的种子对模糊测试效果的提升是有限的。于是本文研究使用机器学习模型生成复杂格式的种子,并提升模糊测试的效果。本文的主要创新点有:1.本文提出了一个基于机器学习的模糊测试种子输入优化方案来学习并生成新的PDF格式种子文件,并对相关工作中使用的机器学习模型进行选择和评估,最终确定Transformer模型作为本文的种子生成模型,这是Transformer模型首次应用于复杂格式种子生成任务。该框架分为PDF对象解析器,PDF对象生成器,PDF封装器三个部分,分别完成了对PDF语法规则的解析,依据语法规则生成新的PDF对象,以及将生成的对象封装成完整PDF种子文件。2.本文还提出了两种采样算法:Sample采样算法和SampleFunction采样算法来对学习的分布进行采样,用于增加本文框架生成种子的多样性,在确保obj对象序列依据概率分布进行预测的同时,采样部分小概率的结果以便生成特殊的序列,解决了目前相关工作中生成种子存在较多重复这一问题。最后在实验中,我们根据三项评估指标选出了最优模型Transformer模型,并结合本文框架生成了新的PDF种子。生成种子的初始覆盖率比原始种子高了0.47%,经过24小时模糊测试之后覆盖的路径数比原始种子多了 24.03%,并且引发了 23个crash,而原始种子没有引发任何崩溃。这些实验结果证明了本文框架生成的种子质量更高,验证了框架的先进性。