Skip to main content
QUICK REVIEW

[論文レビュー] D2A: A Dataset Built for AI-Based Vulnerability Detection Methods Using Differential Analysis

Yunhui Zheng, Saurabh Pujar|arXiv (Cornell University)|Feb 16, 2021
Software Engineering Research参考文献 34被引用数 10
ひとこと要約

D2Aは、オープンソースプロジェクトにおけるバグ修正コミットを用いて、静的解析の問題を真陽性または偽陽性として自動ラベル付けるための微分解析に基づく手法を提案する。これにより、詳細な文脈情報を有する130万件を超える高品質なデータセットが生成され、静的解析のみに依存する場合と比較してラベル品質が著しく向上し、脆弱性検出における偽陽性を低減するための機械学習モデルの効果的な学習が可能になる。

ABSTRACT

Static analysis tools are widely used for vulnerability detection as they understand programs with complex behavior and millions of lines of code. Despite their popularity, static analysis tools are known to generate an excess of false positives. The recent ability of Machine Learning models to understand programming languages opens new possibilities when applied to static analysis. However, existing datasets to train models for vulnerability identification suffer from multiple limitations such as limited bug context, limited size, and synthetic and unrealistic source code. We propose D2A, a differential analysis based approach to label issues reported by static analysis tools. The D2A dataset is built by analyzing version pairs from multiple open source projects. From each project, we select bug fixing commits and we run static analysis on the versions before and after such commits. If some issues detected in a before-commit version disappear in the corresponding after-commit version, they are very likely to be real bugs that got fixed by the commit. We use D2A to generate a large labeled dataset to train models for vulnerability identification. We show that the dataset can be used to build a classifier to identify possible false alarms among the issues reported by static analysis, hence helping developers prioritize and investigate potential true positives first.

研究の動機と目的

  • AIベースの脆弱性検出のための既存データセットが、合成的コンテンツ、限定的な文脈、小規模なスケールという深刻な制限を抱えていることに対処する。
  • 実世界のソフトウェアプロジェクトを用いて、静的解析の問題を真陽性または偽陽性として自動かつスケーラブルにラベル付ける手法を開発する。
  • 機械学習モデルの強固な学習を可能にする、詳細な文脈情報(例:バグの種別、根本原因、トレース)を有する高品質で大規模なデータセットを生成する。
  • D2Aラベル付きデータセットを用いてモデルを学習させることで、静的解析における偽陽性の低減を効果的に行い、開発者の生産性を向上させる。

提案手法

  • 6つの大規模なオープンソースプロジェクトから、バグ修正前のコミットとその直後のコミットのバージョンペアに対して微分解析を適用する。
  • 両方のバージョンに対して静的解析を実行し、『前』のバージョンに存在するが『後』のバージョンに存在しない問題は、おそらく真陽性であるとラベル付けする。
  • コミット履歴と関数間静的解析を活用して、根本原因の位置やトレースを含む、詳細なバグの文脈を抽出する。
  • プロジェクトごとに訓練・開発・テスト分割を保持したまま、複数プロジェクトにまたがるデータセットを構築する。
  • CatBoost、LightGBM、ランダムフォレスト、エキストラツリーなどの機械学習モデルをD2Aデータセット上で学習させ、静的解析の問題を真陽性または偽陽性に分類する。
  • 複数のモデルのアンサンブル投票を適用することで、特に複数プロジェクトにまたがる統合評価において汎化性能と性能を向上させる。

実験結果

リサーチクエスチョン

  • RQ1バージョンペアの微分解析は、静的解析レポートにおける真陽性を信頼性を持って同定できるか?
  • RQ2大規模かつ自動化されたラベル付けアプローチは、静的解析のみに依存する場合と比較して、より高品質なラベルを生成できるか?
  • RQ3D2Aデータセットは、静的解析における偽陽性を低減するための機械学習モデルの学習に効果的に使用できるか?
  • RQ4モデルの性能は異なるソフトウェアプロジェクト間でどのように変動するか?また、アンサンブル手法は汎化性能を向上させることができるか?

主な発見

  • D2Aデータセットには、6つの大規模なオープンソースプロジェクトから得た130万件を超えるラベル付き例が含まれており、バグの種別、根本原因、トレースなどの詳細な文脈情報が含まれている。
  • 手動による検証により、D2Aは静的解析のみに依存する場合と比較して、ラベル品質が著しく向上しており、ラベル付けにおける曖昧さと偽陽性が低減されていることが確認された。
  • D2Aに基づく偽陽性低減モデルは、統合データセット上で平均F1スコア0.54、偽陽性低減率(FPRR)83.7%を達成し、個々のモデルを上回る性能を示した。
  • CatBoost、LightGBM、ランダムフォレスト、エキストラツリーなどの複数モデルのアンサンブル投票により、最良の性能が達成され、統合データセット上でF1スコア0.54、FPRR83.7%を記録した。
  • 個々のプロジェクトでは、高いFPRR(例:libtiffでは97.3%、LightGBMを用いた場合96.6%)を達成しており、多様なコードベースにおいて強力な性能を示した。
  • 結果から、D2Aデータセットは、真陽性を優先して処理できるモデルの効果的な学習を可能にし、静的解析レポートのトリアージに要する開発者の作業負荷を低減できることを示している。

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

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

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

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