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 はバイナリ関数に対するニューラルネットワークベースの脆弱性予測と進化的ファザーを組み合わせ、入力をおそらく脆弱な領域へ bias して、バグ検出の効率を向上させる。10件の CVE(新規3件を含む)を報告し、Linuxアプリと LAVA-M での24時間実行において 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.

研究の動機と目的

  • 伝統的なカバレッジ主導のアプローチより、脆弱性重視のファジングを動機づける。
  • バイナリプログラム内の脆弱な部位を予測するニューラルネットワークモデルを開発する。
  • 予測を用いて入力生成をバイアスする脆弱性指向のファザーを設計する。
  • 実際のバイナリとファズィングベンチマークで、最先端ツールと比較してV-Fuzzを評価する。

提案手法

  • バイナリ関数を属性付き制御フローグラフ(ACFG)で表現し、基本ブロックごとに255次元の特徴ベクトルに変換する。
  • 関数の脆弱性確率を予測するグラフ埋め込みネットワークを構築し、脆弱/安全とラベル付けされたデータで学習する。
  • 基本ブロックの SVS を SVS(bi) = kappa * p_v + omega(kappa=20, omega=0.1)で計算する。
  • VP の結果を用いて、実行経路上の SVS の総和で入力をスコアリングする進化的ファuzzerを導く(適応度)。
  • 高品質な入力とクラッシュのシードプールを維持し、変異戦略で反復する。
  • 進捗に基づき、軽度と大規模変異を切り替える Crash Window Jump アルゴリズムを実装する。

実験結果

リサーチクエスチョン

  • RQ1バイナリ上のニューラル脆弱性予測子は、カバレッジベースの方法と比べてファズの焦点化を改善できるか?
  • RQ2脆弱性指向のファザーは、実在のバイナリとベンチマークでAFL、AFLfast、VUzzerと比べてどのように性能を発揮するか?
  • RQ3脆弱性予測のための有効なパラメータ設定(例: kappa, omega)とデータ表現は何か?
  • RQ4脆弱性予測の組み込みは、バグ発見までの時間を短縮し、ユニークなクラッシュ/ CVEを増やすか?

主な発見

  • V-Fuzz は報告された実験で、24時間以内に AFL、AFLfast、VUzzer よりも多くのユニーククラッシュを発見する。
  • このフレームワークは10件のCVEを発見し、そのうち3件は新規発見で確認・修正された。
  • 本手法は評価にあたり10個のLinuxアプリケーションと3つのLAVA-Mプログラムを活用。
  • ACFGグラフに基づく脆弱性予測は、完全なコードカバレッジを必要とせず、ターゲットを絞ったファジングを可能にする。
  • SVSウェイト付けは、潜在的に脆弱な領域へ入力を誘導し、偽陰性を抑えつつ効率を向上させる。
  • Crash Window Jump戦略は、探索と進捗のバランスを取るために突然の変異と穏やかな変異を適応的に切り替える。

より良い研究を、今すぐ始めましょう

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。