技術共有

論文研究_脆弱性検出のための深層学習モデルの実証研究

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1 はじめに

研究の背景 :近年、ディープラーニング脆弱性検出ツールは有望な成果を上げています。最先端のモデルは 0.9 の F1 スコアを報告し、静的アナライザーよりも優れたパフォーマンスを示します。ディープラーニングはソフトウェア保証に革命をもたらす可能性があるため、その結果は興味深いものです。したがって、IBM、Google、Amazon などの業界企業は、そのようなツールやデータセットの開発に非常に関心があり、多額の投資を行っています。

既存の問題 :ディープラーニングの脆弱性検出は有望ですが、まだコンピュータビジョンや自然言語処理のレベルには達していません。現在の研究の多くは、新たな深層学習モデルを試し、それを Devign や MSR データセットなどのデータセットに適用することに焦点を当てています。ただし、モデル自体についてはほとんどわかっていません。たとえば、モデルがどのタイプのプログラムを効果的に処理できるのか、脆弱性タイプごとにモデルを構築する必要があるのか​​、それとも適切なトレーニング データを使用してすべての脆弱性タイプに対応する統合モデルを構築する必要があるのか​​などです。セットがどのように見えるか、モデルが意思決定を行う際にどのような情報を使用するか。これらの質問に対する答えを知ることは、モデルの開発、デバッグ、および適用をより適切に行うのに役立ちます。ただし、ディープラーニングのブラックボックスの性質を考慮すると、これらの質問に答えるのは困難です。この文書の目的は、これらの問題に対する完全な解決策を提供することではなく、これらの目標を探ることです。

科学的な質問 : この論文では、一連の最先端の深層学習脆弱性検出モデルを調査および再現し、これらのモデルを理解するための研究課題を確立し、そこから教訓と指針を引き出して将来のモデルをより適切に設計およびデバッグすることを目的としています。この論文は研究課題を構成し、次の 3 つの領域に分割します。モデルの機能トレーニングデータそして機種説明 。具体的には、この論文の主な目的は、次の研究課題に特に焦点を当てて、脆弱性検出問題におけるディープ ラーニングの機能を理解することです。

  • 質問1 : さまざまなモデルが脆弱性検出に関して合意に達することはできますか?異なるモデル間の違いは何ですか?
  • 質問2 : 特定の種類の脆弱性は検出しやすいですか? 脆弱性の種類ごとにモデルを構築する必要がありますか、それともすべての脆弱性を検出するモデルを構築する必要がありますか?
  • 質問 3 : モデルで予測するのが難しいコード パターンがいくつかありますか?そのようなコードパターンが存在する場合、それはどのようなコードパターンですか?

この論文の 2 番目の研究焦点はトレーニング データです。この論文の目的は、トレーニング データのサイズと構成がモデルのパフォーマンスに影響するかどうか、またどのように影響するかを理解することです。具体的には、この論文では次のような研究課題が構成されています。

  • 質問4: データセットのサイズを増やすと、脆弱性検出のモデルのパフォーマンスが向上しますか?
  • 質問5: トレーニング データ セット内の項目の構成はモデルのパフォーマンスにどのような影響を与えますか?

最後に、論文の 3 番目の研究領域はモデルの解釈です。 この論文では、SOTA モデル解釈ツールを使用して以下を調査します。

  • 質問6 : モデルは予測にどのようなソース コード情報を使用しますか? モデルは重要な特徴に関して一貫していますか?

研究内容 : 上記の質問に答えるために、この論文では最先端の深層学習モデルを調査し、元のデータセット上で 11 個のモデルを再現することに成功しました。これらのモデルは、GNN、RNN、LSTM、CNN、Transformers などのさまざまな深層学習アーキテクチャを採用しています。これらのモデルを比較するために、この論文では、Devign と MSR という 2 つの人気のあるデータセットを使用して 9 つのモデルを実行することに成功しました。この論文がこれら 2 つのデータセットを選択した理由は次のとおりです: (1) どちらのデータセットにも実際のプロジェクトと脆弱性が含まれている、(2) ほとんどの論文のモデルは Devign データセットを使用して評価および調整されている、(3) MSR データセットには 310 のプロジェクトが含まれている。 、データには脆弱性の種類の注釈が​​付けられており、これは研究課題にとって重要です。この論文では、慎重に計画された実験と脅威の検討を通じて、6 つの研究課題に対する結果が得られました。全体として、この論文の研究貢献には次のものが含まれます。

  • 貢献: 1: この論文は、深層学習の脆弱性検出モデルに関する包括的な調査を実施します。
  • 貢献2: この論文は、さまざまな研究設定を備えた SOTA 深層学習フレームワーク用の 11 のトレーニング モデルとデータセットを含むコード リポジトリを提供します。
  • 貢献 3: この論文では、モデルの機能、トレーニング データ、モデルの解釈を理解するための 6 つの科学的質問を設計しています。
  • 貢献 4: この論文は研究を構造化し、提起された科学的疑問に対する実験を通じて結果を取得します。
  • 貢献 5: この論文では、モデルの解釈可能性をさらに調査するために興味深い例とデータを準備しています。

2.モデルの再現

この論文では、最先端の深層学習モデルを収集するために、2018 年から 2022 年までの論文を調査し、Microsoft の CodeXGLUE ランキングと IBM の欠陥検出 D2A ランキングを参照しました。この論文では、利用可能なすべてのオープンソース モデルを使用し、11 個のモデルの再現に成功しました。モデルの完全なリストと、一部のモデルを再現できなかった理由は、この論文のデータ複製パッケージに含まれています。

上の表に示すように、再現されたモデルはさまざまな深層学習アーキテクチャをカバーしています。 Devign と ReVeal はプロパティ グラフで GNN を使用し、制御フロー、データ依存関係、および AST を統合します。 ReGVD はトークンに GNN を使用します。 Code2Vec は AST 上で多層パーセプトロン (MLP) を使用します。 VulDeeLocator と SySeVR は、RNN と Bi-LSTM に基づくシーケンス モデルです。最近の深層学習検出では、CodeBERT、VulBERTa-CNN、VulBERTa-MLP、PLBART、LineVul などの事前トレーニング済みの Transformer が使用されます。

論文の研究上の質問に応えて、論文では Devign と MSR のデータセットを選択しました。この論文では、上の表に示されている元の論文で使用されているデータセットに基づいてこれら 11 のモデルを研究しています。この論文では、Devign データセットが 8 つのモデルの評価と調整に使用されていることがわかりました。このデータセットは、ほぼ同数の脆弱なサンプルと非脆弱なサンプルを含むバランスの取れたデータセットで、合計 27,318 データ ポイント (各サンプルはデータ ポイントとも呼ばれます) です。 LineVul は、最近利用可能なデータセットである MSR データセットを使用します。データセットは不均衡であり、10,900 件の脆弱な例と 177,736 件の非脆弱性の例が含まれています。例には、ソース プロジェクトと、脆弱性の種類を示す Common Weakness Enumeration (CWE) エントリが含まれています。この論文では、これらのデータセットの特性を使用して、いくつかの研究課題を定式化します。

この論文では、上の表に示すように、元のデータセットと設定に基づいてモデルの結果が再現されています。このうち、列 A、P、R、F は、精度、精度、再現率、F1 スコアなど、深層学習の脆弱性検出で一般的に使用される指標を表します。元の紙と比較して、紙の再現結果の計算誤差は通常 2% 以内です。特殊なケースとしては、ReVeal の場合、著者らは私たちの結果によって元の論文のデータ漏洩エラーが修正されたことを確認しました。Devign の場合、元の Devign コードは使用されていなかったため、論文ではサードパーティの複製コード (Chakaborthy et al. が公開) が使用されていました。オープンソース。