[論文レビュー] SkipFuzz: Active Learning-based Input Selection for Fuzzing Deep Learning Libraries
SkipFuzz は、ドキュメントやシード入力を使用せずに入力制約を推定するアクティブラーニングを用いる、ディープラーニングライブラリ向けの新規ファズィング手法である。テストエグゼキュータを介してインタラクティブにライブラリを問い合わせることで、意味的に有効で重複のない入力を生成し、クラッシュの発見を顕著に向上させた。結果として 43 件のクラッシュを報告し、そのうち 28 件が確認され、13 件の固有の CVE が割り当てられた。
Many modern software systems are enabled by deep learning libraries such as TensorFlow and PyTorch. As deep learning is now prevalent, the security of deep learning libraries is a key concern. Fuzzing deep learning libraries presents two challenges. Firstly, to reach the functionality of the libraries, fuzzers have to use inputs from the valid input domain of each API function, which may be unknown. Secondly, many inputs are redundant. Randomly sampled invalid inputs are likely not to trigger new behaviors. While existing approaches partially address the first challenge, they overlook the second challenge. We propose SkipFuzz, an approach for fuzzing deep learning libraries. To generate valid inputs, SkipFuzz learns the input constraints of each API function using active learning. By using information gained during fuzzing, SkipFuzz infers a model of the input constraints, and, thus, generate valid inputs. SkipFuzz comprises an active learner which queries a test executor to obtain feedback for inference. After constructing hypotheses, the active learner poses queries and refines the hypotheses using the feedback from the test executor, which indicates if the library accepts or rejects an input, i.e., if it satisfies the input constraints or not. Inputs from different categories are used to invoke the library to check if a set of inputs satisfies a function's input constraints. Inputs in one category are distinguished from other categories by possible input constraints they would satisfy, e.g. they are tensors of a certain shape. As such, SkipFuzz is able to refine its hypothesis by eliminating possible candidates of the input constraints. This active learning-based approach addresses the challenge of redundant inputs. Using SkipFuzz, we have found and reported 43 crashes. 28 of them have been confirmed, with 13 unique CVEs assigned.
研究の動機と目的
- 入力制約が不明な状況下で、ディープラーニングライブラリのファズィングに意味的に有効な入力を生成する課題に対処すること。
- 既知の結果を繰り返すのではなく、新しい動作を引き起こす入力を選択することで、ファズィング中の入力の冗長性を低減すること。
- API ドキュメントや手動で収集されたシード入力を用いずに、入力制約の推定を実現すること。
- TensorFlow や PyTorch などのディープラーニングライブラリにおける、標的的で制約を考慮したファズィングによってクラッシュ発見を向上させること。
- ファズィング中にリアルタイムで入力制約を学習する、スケーラブルで動的なアプローチの開発
提案手法
- SkipFuzz は、テストエグゼキュータ(オラクルとして機能)を介して反復的に API 関数の入力制約を推定するアクティブラーニングを採用する。
- アクティブラーナーは、潜在的な制約(例:テンソルの形状や型)に基づいて分類された入力クエリを生成する。
- テストエグゼキュータからのフィードバック(入力が受容されたか否か)により、真の入力制約に関する仮説が精錬される。
- 入力は、新たな情報を提供する可能性に基づいて選択され、冗長性を最小限に抑え、動作の多様性を最大化する。
- システムは、仮説の検証と入力制約モデルの精錬をファズィング中に動的にテストケースを構築・実行することで行う。
- ランダムな変異やシードに基づく生成を避ける代わりに、制約に基づいた情報最大化の入力を中心に据える。
実験結果
リサーチクエスチョン
- RQ1ドキュメントに依存せずに、ディープラーニングライブラリの API に対する入力制約をアクティブラーニングで効果的に推定できるか?
- RQ2制約推定により、ファズィング中の入力の冗長性を低減し、新しい動作の発見を向上させられるか?
- RQ3制約を考慮した入力選択は、ランダムまたは変異ベースのファズィングと比較して、クラッシュの再現率を高められるか?
- RQ4SkipFuzz は広く使われているディープラーニングライブラリにおいて、以前に未知の脆弱性を発見できるか?
- RQ5クラッシュ発見および CVE への報告という観点で、SkipFuzz のパフォーマンスは DocTer や FreeFuzz などの既存手法と比較してどうか?
主な発見
- SkipFuzz はディープラーニングライブラリで合計 43 件のクラッシュを発見・報告し、そのうち 28 件がメンテナーより確認された。
- 確認された脆弱性のうち 13 件が固有の CVE に割り当てられ、以前に未知であった深刻なセキュリティ上の欠陥が発見されたことが示された。
- 特に制約を考慮した入力選択による冗長性の低減により、クラッシュを引き起こす入力を生成する点で、先行手法を上回った。
- API ドキュメントや事前収集済みのシード入力を一切必要とせず、実世界のライブラリファズィングにおいても有効であることが実証された。
- アクティブラーニング機構により、仮説の精錬が効率的に行われ、入力制約に関する情報量の最大化を図るクエリ設計が可能だった。
- 本ツールはスケーラビリティと実用性を示し、再現・拡張が可能なソースコードを公開している。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。