[論文レビュー] DeFuzz: Deep Learning Guided Directed Fuzzing
DeFuzzは、関数の抽象構文木(AST)内の注目語を分析することで、事前に訓練されたBiLSTMモデルを用いて脆弱性の可能性があるコード領域を特定し、AFLベースのfuzzingをその予測された領域に向けた深層学習ガイド付きの指向型fuzzingフレームワークを提案する。実世界のアプリケーションにおいて、AFLに比べて43%多くのバグを発見した一方で、コードカバレッジと効率性を向上させた。
Fuzzing is one of the most effective technique to identify potential software vulnerabilities. Most of the fuzzers aim to improve the code coverage, and there is lack of directedness (e.g., fuzz the specified path in a software). In this paper, we proposed a deep learning (DL) guided directed fuzzing for software vulnerability detection, named DeFuzz. DeFuzz includes two main schemes: (1) we employ a pre-trained DL prediction model to identify the potentially vulnerable functions and the locations (i.e., vulnerable addresses). Precisely, we employ Bidirectional-LSTM (BiLSTM) to identify attention words, and the vulnerabilities are associated with these attention words in functions. (2) then we employ directly fuzzing to fuzz the potential vulnerabilities by generating inputs that tend to arrive the predicted locations. To evaluate the effectiveness and practical of the proposed DeFuzz technique, we have conducted experiments on real-world data sets. Experimental results show that our DeFuzz can discover coverage more and faster than AFL. Moreover, DeFuzz exposes 43 more bugs than AFL on real-world applications.
研究の動機と目的
- 従来のfuzzingが高いコードカバレッジを達成し、特定の脆弱性に的を絞るのには非効率であるという問題に対処すること。
- 深層学習を活用して脆弱性の可能性がある関数やコード領域を特定することで、脆弱性検出における誤検出を低減すること。
- ASTから得た情報を用いて注目メカニズム付きBiLSTMを用いて脆弱性のあるアドレスを予測することで、指向型fuzzingの効率を向上させること。
- 静的解析(AST抽出)と動的で的を絞ったfuzzingを組み合わせることで、ソフトウェアのセキュリティテストを強化すること。
- 深層学習が実世界のソフトウェア脆弱性のfuzzingをガイドする有効性を評価すること。
提案手法
- オープンソースプロジェクト(LibTIFF、LibPNG、FFmpeg)のソースコードから関数を抽出し、抽象構文木(AST)を生成する。
- Common Vulnerability and Exposures(CVE)およびNational Vulnerability Database(NVD)の記録に基づいて、関数を脆弱または非脆弱にラベル付ける。
- ラベル付きAST上で注目メカニズム付き双方向LSTM(BiLSTM)モデルを学習させ、脆弱性に関連する注目語を特定する。
- 訓練済みモデルを用いて、未観測のソフトウェアにおける潜在的な脆弱なコード領域(アドレス)を予測する。
- AFLgoを用いて、予測された脆弱な領域を標的とした指向型fuzzingを実行し、変異処理を高リスク領域に集中させる。
- 制御フローグラフ(CFG)を用いて、現在の実行から標的領域までのパス距離を計算し、fuzzingの方向をガイドする。
実験結果
リサーチクエスチョン
- RQ1AST上で学習された深層学習モデルは、実世界のソフトウェアにおける脆弱なコード領域を正確に予測できるか?
- RQ2予測された脆弱な領域にfuzzingをガイドすることで、従来のfuzzingと比較してコードカバレッジと脆弱性発見率が向上するか?
- RQ3DeFuzzはAFLと比較して、発見されたバグの数と初回クラッシュまでの時間において、どのように異なるか?
- RQ4予測された脆弱な領域が実際のバグ領域とどの程度一致するか?
- RQ5注目メカニズム付き深層学習と指向型fuzzingの組み合わせは、誤検出の低減と脆弱性検出の向上にどの程度効果を発揮するか?
主な発見
- DeFuzzは7つの実世界アプリケーションで合計63件のバグを発見した一方、AFLは20件にとどまった。
- 実世界のアプリケーションにおいて、DeFuzzはAFLに比べ43件多くのバグを発見し、脆弱性検出における顕著な改善を示した。
- 6つのアプリケーションでは、AFLが24時間以内にクラッシュを発見できなかったが、DeFuzzはすべての6つでクラッシュを成功裏に暴露した。
- libmingの7つのアプリケーションにおいて、深層学習モデルはすべての実際のバグ領域を正確に予測した。gifspongeでは、予測された場所(764/802行)が実際のバグ位置(771/790行)に近接していた。
- DeFuzzは、ランダムな入力生成ではなく、予測された脆弱領域に焦点を当てたことで、より速いコードカバレッジと高い効率性を達成した。
- モデルはメモリオーバーフローとダブルフリーバグの両方を検出できたが、AFLはメモリオーバーフローのみを検出できたため、より広範な脆弱性の暴露が可能であった。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。