2019 A Review of Machine Learning Applications in Fuzzing

摘要

在过去的几十年中,模糊在改进软件开发和测试方面发挥了重要作用。最近对模糊化的研究集中在机器学习(ML)的应用上,为克服模糊化过程中的挑战提供了有用的工具。本文综述了最大似然法在模糊化中的应用研究现状。具体来说,本综述讨论了ML在模糊化中的成功应用,简要探讨了遇到的挑战,并推动了未来解决模糊化瓶颈的研究。

内容

在本次调查中,我们重点关注三种主要的ML类型,每种类型都适用于不同类型的任务。监督学习用于训练模型以识别给定数据点的类标签,例如图像是否包含特定对象。这种类型的ML需要数据集,其中每个数据点都有一个明确的标签。无监督学习用于训练模型,以发现数据点之间的模式或相似性,而不是标记类。当数据没有显式标签时,使用这种类型的ML。强化学习用于训练模型(通常称为管理者),以便在环境中采取一组最佳行动。这种类型的ML会奖励代理在环境中执行的每一个操作。与监督学习类似,奖励充当代理的标签,并提供要采取的最佳行动的指示。因此,可以训练代理人采取一系列行动,从而获得最高的回报。这三种类型中的每一种都可以采用一种特殊形式的ML,称为深度学习。深度学习是指一种分层学习,可用于学习一组数据点的基本特征和结构[25]。
Types of Fuzzers:基于突变、基于生成和进化。mutation-based, generation-based, and evolutionary.
在这里插入图片描述
Pre-Fuzzing: Program Knowledge.
Stage 1: Generate Inputs.
符号执行是一种静态分析技术,可以帮助生成新的输入,从而增加模糊器的覆盖范围。虽然符号执行不是一种模糊器,但Driller[56]和SAGE[23]等工具将模糊和符号执行结合起来,以改进输入生成。我们在这里单独讨论符号执行,因为它可以为基于变异和进化的模糊器生成新输入提供信息。高成本意味着必须巧妙地使用符号执行;它通常用于寻找通过随机探索难以找到的路径。为了降低这一成本,模糊器将符号执行与其标准输入生成技术配对[23]。符号执行引擎可以通过“跟踪”有趣的输入来限制路径,例如。G只允许新的符号状态在有限数量的分支中偏离输入。然而,计算成本和路径爆炸仍然是重大障碍。大量的研究工作正试图在符号执行中解决这些研究挑战[31,43,56]。
Stage 2: Select Inputs.
无论是智能地调度输入,减少活动输入的数量,还是保持输入较小,这些技术都试图减少模糊器发现新的有趣程序状态所需的时间。然而,有效利用fuzzer有限的计算时间仍然是一个研究挑战。在下一个阶段中,模糊器发送选定的输入,监视程序的结果操作,并识别感兴趣的程序状态。
Stage 3: Monitor Program.
模糊程序需要关于如何对程序进行检测以及什么构成有趣的程序状态的程序知识。人类用户通常会提供这些信息,但如何定义一个有趣的程序状态仍然是一个研究挑战。在脆弱性评估案例中,哪些可观察到的行为与识别缺陷或脆弱性最相关?一旦fuzzer识别出一个有趣的程序状态,它就需要向用户提供该状态的描述以供分析。程序状态描述因fuzzer而异。例如,在崩溃时,一个fuzzer可能只提供导致崩溃的输入,而另一个fuzzer可能提供完整的内核转储,即在故障点捕获程序内存。评估之后(下一阶段),该信息可能会指导进一步的模糊迭代。
Stage 4: Evaluate Inputs.
许多模糊程序使用代码覆盖率来衡量输入的效用:如果输入导致执行新的代码部分(通常是新的基本块),则该输入增加了覆盖率,并获得了较高的评级。libFuzzer工具使用一个类似的度量,即数据覆盖率,如果在代码中先前探索过的比较中出现新的数据值,该度量也会对输入进行很高的评级。一些模糊程序使用bug发现作为度量;导致崩溃的输入被评为高级别。
Post-Fuzzing: Interesting Program States.
在模糊化过程之后,用户分析模糊器输出的有趣的程序状态。这个过程通常是高度手工的,并且得益于软件工程相关领域的研究。对于每个输出状态,用户分析该状态以确定该状态中有趣行为的根源。通常,用户在程序执行相关输入时手动观察,并希望确定根

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值