[論文レビュー] Superion: Grammar-Aware Greybox Fuzzing
Superionは、構文木(AST)を用いて構造的整合性を保ちながらテスト入力を知的に短縮する文法対応グレイボックスファズァーを提案する。ASTから部分木を繰り返し削除し、カバレッジが変化しないかをチェックすることで、バグを引き起こす能力を維持したまま最小限の有効な入力を生成する。従来のアプローチに比べ、ファジングの効率が著しく向上する。
In recent years, coverage-based greybox fuzzing has proven itself to be one of the most effective techniques for finding security bugs in practice. Particularly, American Fuzzy Lop (AFL for short) is deemed to be a great success in fuzzing relatively simple test inputs. Unfortunately, when it meets structured test inputs such as XML and JavaScript, those grammar-blind trimming and mutation strategies in AFL hinder the effectiveness and efficiency. To this end, we propose a grammar-aware coverage-based greybox fuzzing approach to fuzz programs that process structured inputs. Given the grammar (which is often publicly available) of test inputs, we introduce a grammar-aware trimming strategy to trim test inputs at the tree level using the abstract syntax trees (ASTs) of parsed test inputs. Further, we introduce two grammar-aware mutation strategies (i.e., enhanced dictionary-based mutation and tree-based mutation). Specifically, tree-based mutation works via replacing subtrees using the ASTs of parsed test inputs. Equipped with grammar-awareness, our approach can carry the fuzzing exploration into width and depth. We implemented our approach as an extension to AFL, named Superion; and evaluated the effectiveness of Superion on real-life large-scale programs (a XML engine libplist and three JavaScript engines WebKit, Jerryscript and ChakraCore). Our results have demonstrated that Superion can improve the code coverage (i.e., 16.7% and 8.8% in line and function coverage) and bug-finding capability (i.e., 31 new bugs, among which we discovered 21 new vulnerabilities with 16 CVEs assigned and 3.2K USD bug bounty rewards received) over AFL and jsfunfuzz. We also demonstrated the effectiveness of our grammar-aware trimming and mutation.
研究の動機と目的
- 構文的構造を持つ複雑な入力に対して、有効で最小限のテスト入力を生成するグレイボックスファジングの非効率性を解消すること。
- 文法対応の短縮処理を活用して、ファジングキャンペーンにおける入力の肥大化と冗長性を低減すること。
- ASTベースの構造的分析を通じて、入力サイズを最小限に抑えつつコードカバレッジを維持または向上させること。
- 完全なプログラム解析や記号実行を必要とせずに、グレイボックスファジングに文法対応性を統合すること。
提案手法
- 与えられた文法 $G$ を用いて各入力を解析し、構造的分析のための抽象構文木(AST)を生成する。
- ASTから各部分木 $n$ を繰り返し削除し、その結果得られる入力 $ret$ についてカバレッジの維持をテストする。
- 部分木 $n$ を削除した後もカバレッジが変化しない場合、短縮された入力 $in = ret$ を保持して処理を継続する。それ以外の場合は、$n$ を木に戻す。
- 解析に失敗した場合には組み込みの短縮関数をバックアップとして使用し、入力の有効性を保証する。
- これ以上有効な短縮が行えないまで処理を繰り返し、最小の有効な入力 $ret$ を返す。
- 生のバイト列ではなくAST上で処理を行うことで、構造的整合性を維持する。
実験結果
リサーチクエスチョン
- RQ1文法対応のASTベースの入力短縮は、グレイボックスファジングの効率を向上させることができるか?
- RQ2テスト入力から不要な部分木を削除しても、コードカバレッジは維持されつつ入力サイズは小さくなるか?
- RQ3伝統的なファジングと比較して、文法対応の短縮処理はカバレッジと実行速度の面でどのように異なるか?
- RQ4ASTレベルでの操作によって、ファジングキャンペーンにおける重複するテストケースの数を削減できるか?
主な発見
- 提案されたASTベースの短縮戦略は、入力サイズを削減しつつ、カバレッジを維持または向上させることに成功した。
- カバレッジに影響しない部分木を削除することで、Superionはバグ検出能力を保持したまま最小限の有効な入力を生成した。
- AST構造上で処理を行うことで、無効な入力を回避し、短縮プロセス全体を通じて文法準拠を保証した。
- 入力の最小化により重複するテスト実行を削減するため、標準的なグレイボックスファジングに比べて本手法が優れた性能を示した。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。