Skip to main content
QUICK REVIEW

[論文レビュー] Matryoshka: Fuzzing Deeply Nested Branches

Peng Chen, Jianzhong Liu|arXiv (Cornell University)|May 29, 2019
Software Testing and Debugging Techniques参考文献 38被引用数 12
ひとこと要約

本稿では、制御フローやタンパクフローの依存関係を分析することで、深くネストされた条件分岐を効率的に探索するグレーボックス・ファズァー「Matryoshka」を提案する。3つの戦略—到達可能性優先、充足可能性優先、および共同最適化—を用いて複雑なパス制約を解決し、13個のオープンソースプログラムにおいて、著しく高いコードカバレッジを達成するとともに、41件の新しいバグ(うち12件がCVE番号を取得)を発見した。

ABSTRACT

Greybox fuzzing has made impressive progress in recent years, evolving from heuristics-based random mutation to approaches for solving individual path constraints. However, they have difficulty solving path constraints that involve deeply nested conditional statements, which are common in image and video decoders, network packet analyzers, and checksum tools. We propose an approach for addressing this problem. First, we identify all the control flow-dependent conditional statements of the target conditional statement. Next, we select the data flow-dependent conditional statements. Finally, we use three strategies to find an input that satisfies all conditional statements simultaneously. We implemented this approach in a tool called Matryoshka and compared its effectiveness on 13 open source programs against other state-of-the-art fuzzers. Matryoshka found significantly more unique crashes than AFL, QSYM, and Angora. We manually classified those crashes into 41 unique new bugs, and obtained 12 CVEs. Our evaluation also uncovered the key technique contributing to Matryoshka's impressive performance: it collects only the nesting constraints that may cause the target conditional statements unreachable, which greatly simplifies the constraints that it has to solve.

研究の動機と目的

  • 実世界のソフトウェareにおける深くネストされた条件分岐に到達するという、カバレッジベースのグレーボックスファズァーの課題に対処すること。
  • 従来のファズァーが解けない複数のネストされた条件分岐を含むパス制約を特定・解決すること。
  • 特定の分岐が到達不能になる可能性がある条件分岐にのみ注目することで、探索空間を縮小すること。
  • 画像/動画デコーダー、ネットワークパーサー、チェックサムツールなど、脆弱性を発見するファズァーの有効性を向上させること。
  • 到達可能性、充足可能性、および共同最適化戦略を統合した統一フレームワークを設計すること。

提案手法

  • ターゲット分岐に到達可能であるために満たされなければならない制御フロー依存条件分岐を特定する。
  • タンパク分析を適用して、関連する条件分岐に流入する入力バイトのみを選択し、探索空間を縮小する。
  • 到達可能性に基づく変異の優先順位付け:未満たされた場合にターゲットパスを遮断する条件分岐に注力する。
  • 充足可能性優先により、最も制約の厳しい述語を最初に満たす入力を導くように変異を誘導する。
  • 共有される入力依存関係を分析することで、複数の相互に依存する条件分岐を同時に満たすための共同最適化を実装する。
  • 動的タンパク追跡(DTA++)を統合し、データ変換における過剰なタンパク化を最小限に抑えつつ、不十分なタンパク化を回避する。

実験結果

リサーチクエスチョン

  • RQ1制御依存関係によって到達不能となっている深くネストされた条件分岐を、ファズァーが効果的に探索できるか?
  • RQ2タンパクフローと制御フローの依存関係をどのように統合的にモデル化すれば、パス制約の解法の複雑さを低減できるか?
  • RQ3ネストされた条件分岐における相互に依存するパス制約を解くために、どの変異戦略が最も効果的か?
  • RQ4到達可能性と充足可能性の優先順位付け戦略は、実世界のプログラムにおけるコードカバレッジをどの程度向上できるか?
  • RQ5到達可能性、充足可能性、および共同最適化を統合した統一戦略は、既存のファズァーを上回る脆弱性発見能力を有するか?

主な発見

  • Matryoshkaは、13個のオープンソースプログラムにおいて、AFL、QSYM、Angoraよりも著しく高い累積的な行および分岐カバレッジを達成した。
  • 本ツールは41件のユニークな新しいバグを発見し、そのうち12件がCVE識別子を取得した。
  • Angoraで未解決の制約の90%以上がネストされた条件分岐に起因しており、この問題の広範な存在を示している。
  • 到達可能性、充足可能性、共同最適化という3つのコア戦略は相補的であり、単一の戦略よりも総合的により多くの制約を解決した。
  • DTA++を用いた動的タンパク追跡により、正確な入力バイトの選択が可能になり、不要な変異が削減され、効率性が向上した。
  • 本アプローチは、画像デコーダーやネットワークパケットアナライザーなど、ネストされた条件分岐が一般的な複雑な実世界プログラムに対しても効果的に対応できた。

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

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

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

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