[論文レビュー] Automated Vulnerability Detection in Source Code Using Deep Representation Learning
本論文では、数百万のオープンソース関数から学習された表現を用いて、C/C++のソースコードにおける自動脆弱性検出のためのディープラーニングベースのシステムを提案する。独自のレキサーと畳み込みニューラルネットワーク、およびキュレートされた静的解析ツールの出力結果を組み合わせたランダムフォレストアンサンブルを用いることで、ベンチマークデータセット上で最先端のパフォーマンスを達成し、従来の静的解析ツールや先行する機械学習手法を上回った。
Increasing numbers of software vulnerabilities are discovered every year whether they are reported publicly or discovered internally in proprietary code. These vulnerabilities can pose serious risk of exploit and result in system compromise, information leaks, or denial of service. We leveraged the wealth of C and C++ open-source code available to develop a large-scale function-level vulnerability detection system using machine learning. To supplement existing labeled vulnerability datasets, we compiled a vast dataset of millions of open-source functions and labeled it with carefully-selected findings from three different static analyzers that indicate potential exploits. The labeled dataset is available at: https://osf.io/d45bw/. Using these datasets, we developed a fast and scalable vulnerability detection tool based on deep feature representation learning that directly interprets lexed source code. We evaluated our tool on code from both real software packages and the NIST SATE IV benchmark dataset. Our results demonstrate that deep feature representation learning on source code is a promising approach for automated software vulnerability detection.
研究の動機と目的
- オープンソースおよびプロプライエタリなコードベースにおけるソフトウェア脆弱性の増加する課題に対処する。
- 新しいまたは複雑な脆弱性を検出できないルールベースの静的解析ツールの限界を克服する。
- 多様な脆弱性パターンに一般化可能な機械学習モデルを、大規模で現実世界のコードから学習する。
- トークン化されたソースコードに基づくディープ表現学習を用いて、スケーラブルな関数レベルの脆弱性検出システムを構築する。
- 深層ニューラル特徴量とアンサンブル分類器を組み合わせることで、検出精度を向上させ、誤検出を低減する。
提案手法
- Debian、GitHub、およびSATE IV Julietテストスイートから1200万件を超えるC/C++関数のデータセットを構築した。
- ソースコードをディープラーニングに適したシーケンスベースの表現に変換するため、独自のレキサーを適用した。
- Clang、Flawfinder、Cppcheckの3つの静的解析ツールを用いて関数に潜在的脆弱性をラベル付けし、キュレートされたデータセットを構成した。
- RNN、CNN、全結合ネットワークを含む複数の機械学習モデルを訓練し、レキシングされたコードから深層特徴表現を学習した。
- 学習された深層特徴量とランダムフォレスト分類器を組み合わせることで、一般化性能と予測性能を向上させた。
- 精度-再現率およびROC AUC指標を用いてモデルのパフォーマンスを評価し、予測の解釈を可能にするためにアテンションマップの可視化を実施した。
実験結果
リサーチクエスチョン
- RQ1生のレキシング済みソースコードに対する深層表現学習は、多様なコードベースにわたり幅広いソフトウェア脆弱性を効果的に検出できるか?
- RQ2実世界のコード(Debian、GitHub)におけるモデルのパフォーマンスは、SATE IVのような合成ベンチマークにおけるパフォーマンスと比べてどうか?
- RQ3深層ニューラルネットワーク特徴量は、従来のbag-of-wordsやルールベース表現に比べて、脆弱性検出でどの程度優れているか?
- RQ4深層特徴量とランダムフォレストを組み合わせたアンサンブルモデルは、個々のモデルに比べて検出精度と耐障害性を向上させられるか?
- RQ5機械学習モデルの予測結果は、精度、再現率、F1スコアの観点で、既存の静的解析ツールと比べてどの程度異なるか?
主な発見
- CNN + ランダムフォレストモデルは、自然コードテストセット(DebianおよびGitHub)で最高のPR AUC(0.518)とF1スコア(0.566)を達成し、BOW + RFおよびRNNベースのモデルを上回った。
- SATE IVベンチマークでは、CNN + RFモデルがPR AUC 0.916、F1スコア 0.824を達成し、Clang(F1: 0.450)やFlawfinder(F1: 0.365)といった静的解析ツールを著しく上回った。
- モデルのパフォーマンスはSATE IVデータセットにおいて実世界のコードよりも顕著に優れており、合成データのほうが一貫性とラベルのバランスが高いためと推測される。
- CNNおよびRNNからの深層特徴量の使用により、従来のbag-of-words表現に比べてF1スコアが10–15%向上した。
- 畳み込み特徴マップの可視化により、脆弱性に関連するコード領域を解釈可能な形で特定することができた。
- 本システムはスケーラビリティを示し、コンパイルを必要とせず大規模なコードベースを迅速に処理でき、精度-再現率のトレードオフを調整可能な閾値を設定可能であった。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。