Skip to main content
QUICK REVIEW

[论文解读] V-Fuzz: Vulnerability-Oriented Evolutionary Fuzzing

Yuwei Li, Shouling Ji|arXiv (Cornell University)|Jan 4, 2019
Software Testing and Debugging Techniques参考文献 53被引用 35
一句话总结

V-Fuzz 将二进制函数的神经网络漏洞预测与进化型模糊测试结合起来,使输入偏向可能易出错的区域,从而提高漏洞发现效率。它在 Linux 应用和 LAVA-M 的 24 小时运行中报告了 10 个 CVE(3 个新),并且在性能上优于 AFL、AFLfast 和 VUzzer。

ABSTRACT

Fuzzing is a technique of finding bugs by executing a software recurrently with a large number of abnormal inputs. Most of the existing fuzzers consider all parts of a software equally, and pay too much attention on how to improve the code coverage. It is inefficient as the vulnerable code only takes a tiny fraction of the entire code. In this paper, we design and implement a vulnerability-oriented evolutionary fuzzing prototype named V-Fuzz, which aims to find bugs efficiently and quickly in a limited time. V-Fuzz consists of two main components: a neural network-based vulnerability prediction model and a vulnerability-oriented evolutionary fuzzer. Given a binary program to V-Fuzz, the vulnerability prediction model will give a prior estimation on which parts of the software are more likely to be vulnerable. Then, the fuzzer leverages an evolutionary algorithm to generate inputs which tend to arrive at the vulnerable locations, guided by the vulnerability prediction result. Experimental results demonstrate that V-Fuzz can find bugs more efficiently than state-of-the-art fuzzers. Moreover, V-Fuzz has discovered 10 CVEs, and 3 of them are newly discovered. We reported the new CVEs, and they have been confirmed and fixed.

研究动机与目标

  • 以漏洞为中心的模糊测试相对于传统的覆盖驱动方法的动机。
  • 开发一个神经网络模型来预测二进制程序中的易受攻击组件。
  • 设计一个利用预测来偏置输入生成的漏洞导向模糊测试器。
  • 在真实二进制和 fuzzing 基准测试中对 V-Fuzz 进行评估,并与最先进工具比较。

提出的方法

  • 用具有关联系统控制流图(ACFG)表示二进制函数,并将每个基本块转换为255维特征向量。
  • 构建图嵌入网络以预测函数的漏洞概率,并用标记为易受攻击/安全的数据进行训练。
  • 使用 SVS(bi) = kappa * p_v + omega 计算基本块的静态漏洞分数,kappa=20,omega=0.1。
  • 使用 VP 结果引导一个进化型模糊测试器,通过对执行路径上 SVS 的总和进行评分来评估适应度。
  • 维护高质量输入和崩溃的种子池,并通过变异策略迭代。
  • 实现 Crash Window Jump 算法,根据进展在轻度和重度变异之间切换。

实验结果

研究问题

  • RQ1神经漏洞预测在二进制上的能力是否能提升模糊测试相对覆盖驱动方法的聚焦?
  • RQ2在真实二进制和基准测试中,漏洞导向的模糊测试器相对于 AFL、AFLfast、VUzzer 的表现如何?
  • RQ3二进制漏洞预测的有效参数设置(如 kappa、omega)和数据表示方式有哪些?
  • RQ4将漏洞预测整合进来是否能缩短发现漏洞的时间并提高唯一崩溃/CVEs 的数量?

主要发现

  • V-Fuzz 在报告的实验中,在 24 小时内发现的唯一崩溃数量多于 AFL、AFLfast 和 VUzzer。
  • 该框架发现了 10 个 CVE,其中包含 3 个新发现且已确认并修复。
  • 该方法在评估中使用 10 个 Linux 应用程序和 3 个 LAVA-M 程序。
  • 基于 ACFG 图的漏洞预测实现了有针对性的模糊测试,而不需要完整的代码覆盖。
  • SVS 加权将输入引导至潜在易受攻击区域,提高效率的同时减小漏检。
  • Crash Window Jump 策略自适应切换变异强度,以在探索与进展之间取得平衡。

更好的研究,从现在开始

从论文设计到论文写作,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。