[論文レビュー] Sample-Free Learning of Input Grammars for Comprehensive Software Fuzzing
この論文では、実行可能ファイルから動的タウンティング解析とパーサー探索を用いて入力文法を自動的に推定する、サンプルを必要としないPygmalionを提案する。この手法により、高カバレッジで構文的に正しいテスト入力を生成できる。文法推定は数分で完了し、数千件の高品質な入力を得ることができ、言語機能を包括的に組み合わせた入力を生成する。これは、変異ベースおよび制約ベースのファズィング手法を上回る入力品質と機能カバレッジを達成する。
Generating valid test inputs for a program is much easier if one knows the input language. We present first successes for a technique that, given a program P without any input samples or models, learns an input grammar that represents the syntactically valid inputs for P -- a grammar which can then be used for highly effective test generation for P . To this end, we introduce a test generator targeted at input parsers that systematically explores parsing alternatives based on dynamic tracking of constraints; the resulting inputs go into a grammar learner producing a grammar that can then be used for fuzzing. In our evaluation on subjects such as JSON, URL, or Mathexpr, our PYGMALION prototype took only a few minutes to infer grammars and generate thousands of valid high-quality inputs.
研究の動機と目的
- 効果的なテスト入力生成のためには、入力サンプルや形式的仕様が必要であるという、従来のファズィング技術の限界を解決すること。
- プログラムの実行可能ファイルのみから自動的にその入力文法を学習することで、包括的なソフトウェアファズィングを可能にすること。
- 構文的特徴を包括的にカバーし、組み合わせる well-structured で意味的に豊かな入力を生成することで、テスト入力の品質を向上させること。
- サンプルを必要とせず、自動的かつ再利用可能な文法推定パイプラインを提供すること。
- 実行からのみ文法推定が可能であり、制約ベースおよび変異ベースのファズィング手法を上回るカバレッジを達成できることを実証すること。
提案手法
- パーサー指向のテスト生成器は、パーサー実行中に入力文字と期待値の比較を動的タウンティング解析で追跡し、パーサー制約を満たす入力を生成するように導く。
- システムは繰り返し入力を生成することで、異なる比較結果を引き起こすようにし、すべてのパーサー選択肢を体系的に探索することで、すべての構文的パスをカバーする。
- 文法学習モジュールは、実行中の入力文字のデータフローを分析し、同じフローを示すシーケンスを同一の構文的エンティティとしてグループ化し、構成規則を推定する。
- テスト生成器の探索から得られる同値類(例:「任意の数字」)を用いて文法規則を一般化し、抽象化とカバレッジを向上させる。
- 推定された文法は、さらなるインストルメンテーションやプログラム実行なしに、高速な入力生成器としてファズィングに利用される。
- パイプラインは完全に自動化されており、プログラムの実行可能ファイルと有効な入力プレフィックス(例:空文字列)のみを入力として必要とする。
実験結果
リサーチクエスチョン
- RQ1入力サンプルや形式的仕様が一切ない状況でも、プログラムの入力文法を正確に推定できるか?
- RQ2動的タウンティング解析とパーサー探索を用いて、プログラムの入力パーサーにおけるすべての構文的代替を体系的にカバーできるか?
- RQ3得られた文法が、複数の言語機能を組み合わせた高カバレッジで意味的に豊かなテスト入力を生成できるか?
- RQ4サンプルなしの文法ベースファズィングは、変異ベースおよび制約ベースのアプローチと比較して、入力の妥当性とコードカバレッジの観点でどのように異なるか?
- RQ5推定された文法は、異なるツールやシステムにおいて、テスト、プログラム理解、入力検証の分野でどの程度再利用可能か?
主な発見
- Pygmalionは、JSON、URL、Mathexprの各プログラムについて、実行可能ファイルのみを用いて5分未満で正確な入力文法を推定した。
- システムは、JSONにおいて配列、オブジェクト、文字列、数値といった構文的特徴を包括的に組み合わせた数千件の妥当で高品質なテスト入力を生成した。
- JSONの文脈では、Pygmalionの入力はネストされた構造や特別な文字を含む複雑な要素を組み合わせた長大な入力であり、AFL や Klee は単純で繰り返しのある入力しか生成できなかった。
- カバレッジ指標において、Pygmalionは妥当な入力に対してほぼ最大のコードカバレッジを達成し、URL クエリパーサーを除き、Klee と同等またはそれを上回った。
- Pygmalionの入力の90%以上が妥当であり、AFL や Klee が構文的欠陥によりほとんどが不正な入力を生成するのとは対照的であった。
- 推定された文法により、入力構造、深さ、シンボル頻度に対する明確な制御が可能となり、変異ベース手法と比較して優れたテストケース設計能力を提供した。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。