Skip to main content
QUICK REVIEW

[論文レビュー] NEUZZ: Efficient Fuzzing with Neural Program Learning

Dongdong She, Kexin Pei|arXiv (Cornell University)|Jul 15, 2018
Software Testing and Debugging Techniques参考文献 31被引用数 25
ひとこと要約

NEUZZは、実世界のプログラムの不連続な分岐動作をなめらかにすることで勾配誘導型入力生成を可能にする、ニューラルネットワークベースの代替モデルを用いた新規なファジングフレームワークを提案する。プログラム動作の微分可能近似を学習することで、NEUZZは3倍の高いエッジカバレッジを達成し、10の実世界プログラムにおいて31件の以前未知のバグを発見した。これは10の最先端のグレイボックスファージャーを著しく上回る結果である。

ABSTRACT

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 discrete branching behavior of target program. 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 improve the fuzzing efficiency. Our extensive evaluations demonstrate that NEUZZ significantly outperforms 10 state-of-the-art graybox fuzzers on 10 real-world programs both at finding new bugs and achieving higher edge coverage. NEUZZ found 31 unknown bugs that other fuzzers failed to find in 10 real world programs and achieved 3X more edge coverage than all of the tested graybox fuzzers for 24 hours running.

研究の動機と目的

  • 困難に発火するソフトウェア脆弱性を発見するための進化的ファジングの非効率性を是正すること。
  • 不連続で微分不可能な動作を示すプログラムにおける勾配誘導型最適化の限界を克服すること。
  • 実プログラムの離散的分岐動作を近似する滑らかで代替可能な関数を開発すること。
  • 勾配誘導型入力生成とニューラルネットワークベースの代替モデルを統合し、ファジング効率を向上させること。
  • エッジカバレッジおよび新しいバグの発見という観点から、実世界のプログラムにおいて最先端のグレイボックスファージャーとNEUZZを比較評価すること。

提案手法

  • 実行トレースから、対象プログラムの分岐動作の滑らかで微分可能な近似を学習するためのニューラルネットワークを訓練する。
  • 訓練済みのニューラル代替モデルを用いて、入力の変更に対するプログラム動作の勾配を推定する。
  • 勾配誘導型最適化を適用し、コードカバレッジを最大化するか、新しい分岐を発火させる入力を生成する。
  • ファジング中に得られる新たな実行フィードバックを用いて、ニューラル代替モデルを段階的に改善する。
  • ニューラル代替モデルとグレイボックスファージャーを統合し、実プログラム実行と互換性を保ちながら入力生成を誘導する。
  • ニューラルモデルを介した誤差逆伝播を用いることで、元のプログラムに不連続性が存在しても効率的に勾配を計算できる。

実験結果

リサーチクエスチョン

  • RQ1ニューラルネットワークは、実世界のプログラムの不連続で微分不可能な分岐動作を効果的に近似できるか?
  • RQ2学習済み代替モデルを用いた勾配誘導型入力生成は、進化的な誘導に比べてファジングで優れているか?
  • RQ3ニューラル代替モデルは、実世界のソフトウェアにおけるエッジカバレッジおよび新しいバグ発見をどの程度向上できるか?
  • RQ4NEUZZは、効率性および有効性という観点から、最先端のグレイボックスファージャーと比較してどのように差をつけるか?
  • RQ5ファジング中に代替モデルを段階的に更新することで、精度を維持し、探索を効果的に誘導できるか?

主な発見

  • 24時間の実行後、NEUZZはすべてのテスト済みグレイボックスファージャーと比較して、実世界のプログラムで3倍の高いエッジカバレッジを達成した。
  • NEUZZは、10の実世界プログラムにおいて、10の最先端ファージャーが検出できなかった31件の以前未知のバグを発見した。
  • ニューラル代替モデルは複雑な分岐動作を効果的に近似でき、プログラムの不連続性にもかかわらず、有効な勾配ベースの入力生成を可能にした。
  • NEUZZは、エッジカバレッジおよび新しいバグ発見の両面で、評価対象の10の最先端グレイボックスファージャーを著しく上回った。
  • 勾配誘導とニューラル代替学習の統合により、進化的な手法よりも新しいコードパスに早く収束することができた。
  • ファジング中にニューラルモデルを段階的に改善することで、長期的な探索効率およびカバレッジが向上した。

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

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

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

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