表示
超・人工知能研究所 Super AI Research Lab トップへ超・人工知能研究所AI Research Lab / ぱそ太郎工事中

since
平成38年9月29日

← 検索結果に戻る

未知のC/C++プロジェクトで脆弱性を検出するためのデータ整備とモデル選択

Cross-project vulnerability detection

保存した記事を見るこのブラウザに保存します。無料会員で端末間の同期・フォルダ整理

概要

  • C/C++関数の脆弱性検出について、データの品質・多様性とモデル構造が、未知のプロジェクトでの性能にどう関わるかを調べた。
  • 著者はBigVulで再現率が6.8%向上したと報告するが、確認できた本文の範囲では比較相手と評価条件を特定できない。
  • 要旨では新データセットをVulGate、後の表と節見出しではRefinedVulと記しており、両者の関係は確認できない。
補足:編集した模式図で仕組みを確認する

VISUAL EXPLAINER

図でつかむ、Cross-project vulnerability detectionの仕組み

左から右へ読む
  1. 01C/C++関数とラベル
  2. 02重複・誤ラベルの整理
  3. 03モデルの追加学習
  4. 04関数の脆弱性判定

原論文の説明をもとにした模式図です。処理の細部は省略しています。

研究の背景

この研究は、C/C++の関数に脆弱性、つまり悪用され得るコード上の弱点があるかを判定する。焦点は、学習時に見ていない別のプロジェクトでも検出できるかという「汎化」だ。

著者は、既知のデータで良い結果を出すモデルも、未知のコード群では性能が落ちると指摘する。製品ごとにコードの構造や弱点の現れ方が異なるため、訓練データの品質とモデル選択を調べている。

手法

既存の脆弱性データを集め、重複する関数と誤ったラベルを整理する。ラベルは関数が脆弱か安全かを示す正解情報だ。著者は新しいC/C++の脆弱性情報や付随情報を加え、見た目がよく似ていても正解が異なる「難しい例」も取り入れる。修正前後で一行や一語だけ異なる関数が、その具体例である。

整えた関数とラベルを使い、既にコードを学習したモデルを脆弱性判定向けに追加学習する。例えば修正前の関数を脆弱、修正後を安全として違いを学ばせ、評価時には新たな関数を判定させる。著者は、入力を読み取って分類するエンコーダー型と、出力を順に生成するデコーダー型の複数モデルを比べている。

新規性

著者の提案は、C/C++の脆弱性検出で、訓練データの品質と多様性、モデルの構造を併せて調べる点にある。重複や誤ったラベルを整理し、新しい脆弱性情報と、正解の見分けにくい関数例を加える。

学習時に見せていないプロジェクトでの検出も評価対象にした。ただし、確認できた本文の範囲では、個々のデータ整備工程が結果に与えた影響は切り分けられない。

従来手法との違い

著者は、既存データセットにある誤ラベル、重複、クラスやプロジェクトの偏りを課題として挙げる。これらを整理したデータを使い、コードを分類するエンコーダー型と、順に出力を生成するデコーダー型の複数モデルを比較した。

比較したモデルの中では、エンコーダー型のUniXcoderが標準的な評価データで最も良く、複数の実験で高い再現率を示したと著者は述べる。静的解析など従来手法との同条件の数値比較は、確認できた本文の範囲にない。

実験結果

著者は、評価用データセットBigVulと、学習時に見せていないプロジェクトのコードで検出性能を調べたと報告する。再現率は、実際に脆弱な例のうち検出できた割合を示す指標だ。BigVulでは、自らのモデルの再現率が6.8%向上したと述べている。

また、比較したモデルではエンコーダー型のUniXcoderが最も良く、未知のプロジェクトでも他の比較モデルを上回ったとしている。確認できた本文の範囲では、6.8%の比較相手、評価分割、未知のプロジェクトの内訳、各モデルの数値を確認できず、結果の条件を特定できない。

応用の可能性

編集上の応用案 · 論文が実証した用途とは区別しています。

編集上の応用案:C/C++製品の変更レビューで、関数ごとの脆弱性判定を担当者の確認順に役立てる。入力はレビュー対象の関数コード、出力は脆弱性の判定と確認対象の一覧とし、担当者が周辺のコードも読んで判断する。

訓練には、対象製品以外のプロジェクトも含む関数コードと、脆弱・安全を確認したラベルが要る。追加センサーは想定しない。重複とラベルを点検して対象のコードに合わせて調整する必要があり、この運用での効果は未検証である。

応用先の候補からNauhに相談できます。

導入時の検証

導入時の検証案 · 対象データでの再評価が必要です。

導入時の検証案:対象製品と重ならない複数のC/C++プロジェクトから、関数コードと脆弱・安全の確認済みラベルを用意する。修正前後の似た関数も含め、重複とラベルの根拠を点検してからモデルを追加学習する。入力はコードであり、追加センサーは想定しない。

基準には、同じ訓練・評価分割で動かすデータ整備前の設定を置く。プロジェクト単位で評価対象を分け、再現率、誤警告の件数、担当者の確認時間を記録する。見逃した関数の種類も調べ、対象製品での利用範囲を決める。

限界と課題

著者は、既存データの誤ラベル、重複、クラスの偏り、プロジェクトの多様性不足を課題として挙げる。学習時に見ていないコード群では性能が落ちやすいことを、この研究の出発点としている。

編集上の検証事項:確認できた本文の範囲では、再現率6.8%向上の比較相手や評価分割、各モデルの設定と数値表を確認できない。要旨では新データセットをVulGateと呼ぶ一方、表と節見出しにはRefinedVulとある。両者の関係も不明である。

応用先の候補
研究内容と応用案に基づく分類です。業界での導入実績を示すものではありません。

出典

元のタイトル・要旨を確認する(英語)

Data and Context Matter: Towards Generalizing AI-based Software Vulnerability Detection

AI-based solutions demonstrate remarkable results in identifying vulnerabilities in software, but research has consistently found that this performance does not generalize to unseen codebases. In this paper, we specifically investigate the impact of model architecture, parameter configuration, and quality of training data on the ability of these systems to generalize. For this purpose, we introduce VulGate, a high quality state of the art dataset that mitigates the shortcomings of prior datasets, by removing mislabeled and duplicate samples, updating new vulnerabilities, incorporating additional metadata, integrating hard samples, and including dedicated test sets. We undertake a series of experiments to demonstrate that improved dataset diversity and quality substantially enhances vulnerability detection. We also introduce and benchmark multiple encoder-only and decoder-only models. We find that encoder-based models outperform other models in terms of accuracy and generalization. Our model achieves \textbf{6.8\%} improvement in recall on the benchmark BigVul dataset and outperforms others on unseen projects, demonstrating enhanced generalizability. Our results highlight the role of data quality and model selection in the development of robust vulnerability detection systems. Our findings suggest a direction for future systems with high cross-project effectiveness.

論文本体の取得範囲に基づく解説。AIが作成した未校閲の記事です。性能の数値は著者の評価条件に依存します。応用例と検証計画は編集上の提案です。解説更新:2026-10-01