首页> 外文会议>IEEE Symposium on Security and Privacy >NEUZZ: Efficient Fuzzing with Neural Program Smoothing
【24h】

NEUZZ: Efficient Fuzzing with Neural Program Smoothing

机译:NEUZZ:具有神经程序平滑功能的高效模糊测试

获取原文

摘要

Fuzzing has become the de facto standard technique for finding software vulnerabilities. However, even state-of-the-art fuzzers are not very efficient at finding hard-to-trigger software bugs. Most popular fuzzers use evolutionary guidance to generate inputs that can trigger different bugs. Such evolutionary algorithms, while fast and simple to implement, often get stuck in fruitless sequences of random mutations. Gradient-guided optimization presents a promising alternative to evolutionary guidance. Gradient-guided techniques have been shown to significantly outperform evolutionary algorithms at solving high-dimensional structured optimization problems in domains like machine learning by efficiently utilizing gradients or higher-order derivatives of the underlying function. However, gradient-guided approaches are not directly applicable to fuzzing as real-world program behaviors contain many discontinuities, plateaus, and ridges where the gradient-based methods often get stuck. We observe that this problem can be addressed by creating a smooth surrogate function approximating the target program's discrete branching behavior. In this paper, we propose a novel program smoothing technique using surrogate neural network models that can incrementally learn smooth approximations of a complex, real-world program's branching behaviors. We further demonstrate that such neural network models can be used together with gradient-guided input generation schemes to significantly increase the efficiency of the fuzzing process. Our extensive evaluations demonstrate that NEUZZ significantly outperforms 10 state-of-the-art graybox fuzzers on 10 popular real-world programs both at finding new bugs and achieving higher edge coverage. NEUZZ found 31 previously unknown bugs (including two CVEs) that other fuzzers failed to find in 10 real-world programs and achieved 3X more edge coverage than all of the tested graybox fuzzers over 24 hour runs. Furthermore, NEUZZ also outperformed existing fuzzers on both LAVA-M and DARPA CGC bug datasets.
机译:模糊测试已成为发现软件漏洞的事实上的标准技术。但是,即使是最先进的模糊器,也很难有效地发现难以触发的软件错误。最流行的模糊器使用进化指导来生成可触发不同错误的输入。这样的进化算法虽然快速且易于实现,但经常陷入无结果的随机突变序列中。梯度引导优化是进化指导的一种有前途的替代方案。在有效利用梯度函数或基础函数的高阶导数来解决诸如机器学习之类的领域中的高维结构化优化问题方面,梯度引导技术已被证明在性能上远胜于进化算法。但是,梯度引导方法不能直接应用于模糊测试,因为现实世界中的程序行为包含许多不连续性,平稳段和隆起,而基于梯度的方法经常会卡在其中。我们观察到,可以通过创建一个平滑的替代函数来解决此问题,该函数近似于目标程序的离散分支行为。在本文中,我们提出了一种使用代理神经网络模型的新颖程序平滑技术,该技术可以递增地学习复杂的,实际程序的分支行为的平滑逼近。我们进一步证明了这种神经网络模型可以与梯度引导输入生成方案一起使用,以显着提高模糊过程的效率。我们的广泛评估表明,NEUZZ在发现新的错误和实现更高的边缘覆盖率方面,在10个流行的现实世界程序上均明显优于10个最新的灰盒模糊测试器。 NEUZZ在24个小时的运行中发现了31个以前未知的bug(包括两个CVE),其他Fuzzer未能在10个真实程序中找到它们,并且其边缘覆盖率是所有经过测试的灰盒Fuzzer的3倍。此外,NEUZZ在LAVA-M和DARPA CGC错误数据集上也胜过现有的模糊测试。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号