2020 A systematic review of fuzzing based on machine learning techniques

摘要——安全漏洞在网络安全体系中起着至关重要的作用。Fuzzing技术作为一种漏洞发现技术,被广泛应用于提前减少破坏。然而,传统的模糊技术面临许多挑战,如如何变异输入种子文件,如何增加代码覆盖率,以及如何有效地绕过验证。机器学习技术作为一种新方法被引入模糊测试,以缓解这些挑战。本文综述了近年来利用机器学习技术进行模糊测试的研究进展,分析了机器学习如何改进模糊过程和结果,并对未来的模糊测试工作进行了展望。首先,本文讨论了机器学习技术可以用于模糊场景的原因,并确定了机器学习已经被使用的六个不同阶段。然后从机器学
摘要由CSDN通过智能技术生成

摘要——安全漏洞在网络安全体系中起着至关重要的作用。Fuzzing技术作为一种漏洞发现技术,被广泛应用于提前减少破坏。然而,传统的模糊技术面临许多挑战,如如何变异输入种子文件,如何增加代码覆盖率,以及如何有效地绕过验证。机器学习技术作为一种新方法被引入模糊测试,以缓解这些挑战。本文综述了近年来利用机器学习技术进行模糊测试的研究进展,分析了机器学习如何改进模糊过程和结果,并对未来的模糊测试工作进行了展望。首先,本文讨论了机器学习技术可以用于模糊场景的原因,并确定了机器学习已经被使用的六个不同阶段。然后从机器学习算法的选择、预处理方法、数据集、评价指标和超参数设置等方面对基于机器学习的模糊模型进行了系统的研究。然后,本文根据常用的评价指标对机器学习模型的性能进行评价。评价结果表明,机器学习技术具有可接受的模糊分类预测能力。最后,分析了传统模糊工具与基于机器学习的模糊工具在漏洞发现能力方面的比较。结果表明,引入机器学习技术可以提高模糊算法的性能。但仍存在一些局限性,如训练样本不均衡、漏洞相关特征提取困难等。

介绍

RQ1:为什么机器学习技术可以用于模糊?
RQ2:模糊技术中的哪些步骤使用了机器学习技术?
RQ3:有哪些机器学习算法被用于模糊?
RQ4:基于机器学习的模糊数据预处理采用了哪些技术?
RQ5:使用哪些数据集进行测试和评估?
RQ6:用哪些性能指标来评估结果?
RQ7:如何设置机器学习模型的超参数?
RQ8:机器学习模型的性能如何?
RQ9:基于机器学习技术的模糊模型发现漏洞的能力是什么?
在这里插入图片描述

传统技术

传统的fuzzer有三个关键挑战:(1)如何突变种子输入,(2)如何提高代码覆盖率,(3)如何绕过验证(Li et al. 2018)。为了缓解这些挑战,提高漏洞检测效率,在模糊测试中引入了各种辅助分析技术。这些技术的引入促进了模糊技术的发展,使传统的模糊过程更加智能化。然而,这些技术也有一定的局限性和缺点。静态分析从二进制代码或源代码中提取相关信息,在不运行程序的情况下指导模糊过程(Wichmann et al. 1995)。然而,静态分析在运行过程中缺乏上下文信息,对先验知识的依赖性高,准确率低,误定位率高。动态分析需要在真实系统或模拟器中执行目标程序(Ernst 2003)。它监视程序的状态,并在执行时获得相关的运行时知识。它包括动态符号执行(Cadar et al. 2006;Godefroid等人2008;Chipounov et al. 2011)和动态污染分析(Drewry and Ormandy 2007;Haller et al. 2013;Neugschwandtner et al. 2015)。动态符号执行通过在程序执行期间使用符号值作为输入来生成一组路径约束(King 1976)。然后通过满足模型理论求解器确定路径是否可达,生成相应的测试输入。而符号执行存在许多限制,如路径爆炸(Xie et al. 2009)、环境交互作用(Cadar et al. 2008;Avgerinos et al. 2014)、记忆建模(Cha et al. 2012;Shoshitaishvili et al. 2015)和并行计算(Bucur et al. 2011;Avgerinos et al. 2016)。动态污染分析使用标记数据作为程序的输入,记录程序如何使用输入数据以及哪些程序元素被输入数据污染。然而,污染分析存在污染不足和污染过度的问题(Kang et al. 2011)。考虑到最先进的fuzzer的挑战和各种技术已经存在的缺点,fuzzer测试需要新技术和方法的组合作为这些挑战的对策。

机器学习

在网络空间安全领域,研究人员也将机器学习用于恶意代码检测等场景(Huang and Stokes 2016;Liu et al. 2019a),入侵检测(Debar et al. 1992;Javaid et al. 2016)、垃圾邮件和网络钓鱼分类(Abu-Nimeh et al. 2007;Fette et al. 2007)和测井分析(Lane and Brodley 1997;Titonis et al. 2017)。
在这里插入图片描述
机器学习技术在模糊测试中的应用也引起了安全研究人员的关注,其本质是将漏洞检测视为一个程序或样本分类的问题(Rajpal et al. 2017;Cheng et al. 2019;Wang et al. 2019)。研究人员利用现有的机器学习技术,帮助fuzzer从现有的大量漏洞相关数据中提取经验和知识,然后根据训练生成的模型对新样本进行分类和预测。根据机器学习技术和模糊技术的特点,以及人工智能技术的发展,表1总结了机器学习技术和模糊技术可以结合的一些因素。虽然机器学习技术在很多行业都有应用,但在使用上仍然存在许多条件和限制。如表1所示,机器学习用于模糊的前提条件已经存在,利用机器学习为模糊中存在的问题提供了新的5种解决方案。使用机器学习可以解决哪些问题,以及在模糊测试中解决方案的效果如何,将在以下部分讨论。
在这里插入图片描述

1.种子文件生成

通过各种突变操作,将种子文件突变为模糊输入样本。输入种子文件的质量是影响测试效果的重要因素。目前的种子选择策略存在不足,如需要更多的时间来获取种子集,选择种子的执行效果与随机选择种子的执行效果几乎相同(Rebert et al. 2014)。种子文件的共同特征,导致更高的代码覆盖率,更崩溃,和更独特的执行路径在传统模糊测试可以学会使用机器学习技术,最后产生更多的种子文件这个特性通过生成或突变方法。
Skyfire (Wang et al. 2017)实现的数据驱动种子生成方法使用PCFG (Probabilistic context-sensitive grammar,包含语义规则和语法特征)自动提取语义信息。这些语义信息和语法规则用于种子生成。使用该方法可以保证生成的种子文件通过语法解析和语义检查。最终,天火可以执行到目标程序的更深层路径,从而更有效地发现深层漏洞。
Fast fuzzing (Nichols et al. 2017)探索了使用深度神经模型来增强随机突变检测的有效性。该方法从AFL (Zalewski M 2016)生成的样本中学习特征,通过生成式对抗网络(GAN)的对抗训练生成种子文件,增加执行路径。
SmartSeed (Lv et al. 2018)将输入文件以二进制形式读取并转换为统一类型的矩阵,然后使用WGAN和MLP从收集的数据集中自动学习触发唯一崩溃或唯一路径的特征。训练过的模型可以生成更容易导致崩溃和唯一路径的种子文件。
Cheng et al. (Cheng et al. 2019)使用RNN和seq2seq找到PDF文件与目标程序执行路径之间的相关性。然后,使用这种相关性来生成新的种子文件,这些文件更有可能探索目标程序中的新路径。
NeuFuzz (Wang et al. 2019)通过LSTM学习样本中已知的漏洞程序和隐藏的漏洞模式,发现可能包含漏洞的执行路径。然后,NeuFuzz优先执行能够覆盖包含漏洞路径的种子文件,并根据预测结果为这些种子文件分配更

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值