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