Improving Grey-Box Fuzzing by Modeling Program Behavior

Abstract

诸如American Fuzzy Lop(AFL)之类的灰盒模糊器是用于查找程序中的错误和潜在漏洞的流行工具。虽然这些模糊器已经能够在许多广泛使用的程序中找到漏洞,但它们效率不高; AFL在典型的模糊测试中执行的数百万输入中,只有极少数发现看不见的行为或触发崩溃。剩下的输入是多余的,表现出已经观察到的行为。在这里,我们提出了一种方法,通过应用机器学习直接模拟程序的行为来提高像AFL这样的模糊器的效率。我们学习了一种前向预测模型,该模型将程序输入映射到执行轨迹,对标准模糊测试期间收集的数千个输入进行训练。该学习模型通过关注模糊输入来指导探索,模糊输入对我们的模型最不确定(通过预测的执行轨迹分布的熵进行测量)。通过专注于执行输入我们学习的模型不确定,并忽略我们的模型所确定的行为的任何输入,我们表明我们可以显着限制浪费的执行。通过测试我们对作为DARPA网络大挑战的一部分发布的一组二进制文件的方法,我们表明我们的方法能够找到一组输入,导致更多的代码覆盖和发现崩溃,而基线模糊测试的执行次数明显减少。

阅读更多

Adaptive Grey-Box Fuzz-Testing with Thompson Sampling

Abstract

模糊测试或“fuzzing”是指广泛部署的一类技术,用于通过生成一组输入来测试程序,以明确查找错误和识别安全漏洞。灰盒模糊测试是最流行的模糊测试策略,它将轻型程序设备与数据驱动过程相结合,以生成新的程序输入。在这项工作中,我们提出了一种机器学习方法,它建立在AFL(一种卓越的灰盒模糊器)之上,通过在特定程序的基础上自适应地学习其变异算子的概率分布。这些算子在AFL和突变模糊器中随机均匀选择,决定了新输入是如何产生的,这是模糊器功效的核心部分。我们的主要贡献是双重的:首先,我们表明,根据训练计划估计的变异算子的采样分布可以显着提高AFL的性能。其次,我们介绍了一种基于强盗的Thompson Sampling优化方法,该方法可以在模糊单个程序的过程中自适应地调整mutator分布。跨越复杂程序的一组实验表明,调整突变运算符分布会产生一组输入,这些输入产生的代码覆盖率显着提高,并且比基线版本的AFL以及其他基于AFL的学习方法更快,更可靠地发现崩溃。

阅读更多

A Deep Learning based Approach to Automated Android App Testing

Abstract

自动输入生成器广泛用于移动应用程序的大规模动态分析和测试。这样的输入生成器必须不断地选择与其交互的UI元素以及如何与其交互,以便在有限的时间预算下实现高覆盖率。目前,大多数输入生成器采用伪随机或强力搜索策略,这可能需要很长时间才能找到可以将应用程序驱动到新的重要状态的正确输入组合。在本文中,我们提出了Humanoid,一种基于深度学习的自动Android应用程序测试方法。我们的见解是,如果我们可以从人类生成的交互跟踪中学习,则可以基于当前UI状态和最新状态转换中的视觉信息生成类似人类的测试输入。我们设计并实现了一个深度神经网络模型,以了解最终用户如何与应用程序进行交互(具体来说,与哪些UI元素进行交互以及如何进行交互),并表明我们可以基于以下任何新UI成功生成类似人类的输入学习的模型。然后,我们将该模型应用于Android应用程序的自动化测试,并证明它能够比最先进的测试输入生成器获得更高的覆盖率和更快的速度。

阅读更多

Remote Protocol Vulnerability Discovery for Intelligent Transportation Systems (ITS)

Abstract

ITS是当今典型的智能应用。为了实现更安全和更高效的运输系统的目标,发现ITS的脆弱性起着重要作用。本文基于ITS的通信视图分析了ITS的威胁源。提出了一个协议漏洞发现框架,用于基于模糊测试和自动分析保护ITS应用程序,支持机器学习,遗传算法和模式识别技术。最后,还给出了ITS中开放网络视频接口论坛(ONVIF)协议上的漏洞发现的典型案例,以证明所提议的协议漏洞发现框架的有效性和实用性。该案例的实验结果表明,协议漏洞发现框架支持以有效的方式发现ITS的漏洞。将不同协议模糊测试模式和分析模式组合到一个框架中的挑战,以及限制也被报告和讨论。最后,本文总结了ITS框架的未来研究方向和应用。(没啥新思路)

阅读更多

Automatic Text Input Generation for Mobile Testing

Abstract

已经提出许多设计来改进自动化移动手机测试。尽管有这些改进,但提供适当的文本输入仍然是一个突出的障碍,这阻碍了大规模采用自动化测试方法。关键的挑战是如何在用例上下文中自动生成最相关的文本。例如,应在移动浏览器应用程序的地址栏中输入有效的网站地址,以继续测试应用程序;应在音乐推荐应用的搜索栏中输入歌手的姓名。如果没有正确的文本输入,测试将会卡住。我们提出了一种新颖的基于深度学习的方法来应对挑战,将问题简化为最小化问题。另一个挑战是如何使该方法通常适用于受过训练的应用程序和未经训练的应用程序。我们利用Word2Vec模型来应对挑战。我们已经将我们的方法构建为工具,并使用包括Firefox和Wikipedia在内的50种iOS移动应用程序对其进行评估。结果表明,我们的方法明显优于现有的自动文本输入生成方法。

阅读更多

DeepFuzz: Automatic Generation of Syntax Valid C Programs for Fuzz Testing

Abstract

编译器是构建软件最基本的编程工具之一。但是,生产编译器仍然存在问题。模糊测试通常用于新生成或突变输入,以便发现新的错误或安全漏洞。在本文中,我们提出了一种名为DEEPFUZZ的基于语法的模糊测试工具。基于生成的seq2seq模型,DEEPFUZZ自动且连续地生成格式良好的C程序。我们使用这组新的C程序来模糊现成的C编译器,例如GCC和Clang / LLVM。我们提供了一个详细的案例研究来分析生成的C程序的模糊测试的成功率和覆盖率改进。我们用三种采样方法和三种生成策略来分析DEEPFUZZ的性能。因此,DEEPFUZZ在行,函数和分支覆盖方面提高了测试效率。在我们的初步研究中,我们发现并报告了8个GCC漏洞,所有这些漏洞都由开发人员积极处理。

阅读更多

Neural Fuzzing: A Neural Approach to Generate Test Data for File Format Fuzzing

Abstract

本文旨在设计和实现文件格式模糊器。文件是大多数实际应用程序的重要输入。将输入文件生成为测试数据的实质难点在于重新调整文件的基础结构和格式。为了区分存储在文件中的纯数据和描述文件格式的元数据,本文提出了一种基于神经语言模型的深度学习方法。得到的学习模型可以作为混合测试数据生成器应用,以生成和模糊输入文件的文本和非文本部分。此外,该模型可以应用于生成测试数据以模糊元数据和存储在文件中的普通数据。我们使用两个已知的模糊测试工具AFL和Learn&Fuzz进行的实验证明了我们提出的方法的代码覆盖率相对较高。实验还表明,简单的神经语言模型提供了比复杂的编码器 - 解码器模型更准确的学习模型。

阅读更多

Faster Fuzzing: Reinitialization with Deep Neural Models

Abstract

我们通过使用生成对抗网络(GAN)模型来改进美国模糊Lop(AFL)模糊测试框架的性能,以使用新的种子文件重新初始化他的系统。我们根据生成新颖和看不见的代码路径的时间速率来评估性能。我们将此方法与在训练种子文件中观察到的随机抽取字节的种子文件生成进行比较。代码路径长度和变化不够多,无法完全取代AFL输入生成。但是,使用这些额外的代码路径扩充原始AFL表明比原AFL有所改进。具体而言,实验表明,GAN比LSTM更快,更有效,并且优于随机增强策略,通过发现的唯一代码路径的数量来衡量。 GAN帮助AFL在相同的CPU时间内发现比随机策略多14.23%的代码路径,找到6.16%的唯一代码路径,并找到平均13.84%的路径。使用GAN有望成为AFL的重新初始化策略,以帮助模糊测试人员在软件中运行深入的路径。

阅读更多

Not all bytes are equal: Neural byte sieve for fuzzing

Abstract

Fuzzing是一种流行的动态程序分析技术,用于发现复杂软件中的漏洞。模糊测试涉及使用精心设计的恶意输入来呈现目标程序,该输入旨在导致崩溃,缓冲,内存错误和异常。以有效的方式制作恶意输入是一个难以解决的开放问题,通常产生此类输入的最佳方法是通过对预先存在的有效输入(种子文件)应用统一的随机突变。我们提出了一种学习技术,该技术使用神经网络从过去的模糊探索中学习输入文件中的模式,以指导未来的模糊探索。特别地,神经模型学习一种功能,以预测输入文件中的好(和坏)位置,以基于过去的突变和相应的代码覆盖信息执行模糊突变。我们实现了几个神经模型,包括LSTM和可以编码可变长度输入文件的序列到序列模型。我们将模型整合到最先进的AFL(American Fuzzy Lop)模糊器中,并在代码覆盖范围,独特的代码路径以及各种输入格式(包括ELF,PNG,PDF和XML)的崩溃方面显示出显着的改进。

阅读更多

Recurrent Neural Networks for Fuzz Testing Web Browsers

Abstract

基于生成的模糊测试是一种软件测试方法,能够发现软件中不同类型的错误和漏洞。然而,已知设计和微调经典模糊器以实现可接受的覆盖是非常耗时的,即使对于小规模软件系统也是如此。为了解决这个问题,我们研究了一种基于机器学习的模糊测试方法,其中我们概述了一系列基于递归神经网络(RNN)的测试用例生成器,并使用最少的人工微调来训练那些现成的数据集。与先前的工作相比,所提出的生成器不依赖于启发式采样策略,而是依赖于预测分布的原理采样。我们提供详细的分析,以在具有挑战性的Web浏览器测试场景中演示所提出的生成器的特征和功效。实证结果表明,基于RNN的发生器能够提供比基于突变的方法更好的覆盖,并且能够发现经典模糊器未发现的路径。我们的研究结果补充了其他领域的研究结果,表明使用RNN进行基于代数的模糊测试是通过使用合适的模型选择/分析程序来获得更好软件质量的可行途径

阅读更多