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

since
平成38年9月29日

← 検索結果に戻る

コード向けBERTの注意行列を分析し、脆弱性を判定する

Topological Analysis of Attention Maps

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

概要

  • コード向けBERTの注意行列から、語のつながりや輪がどれだけ残るかを特徴量にし、脆弱性を判定する。
  • Devignの150トークン未満の例で、著者らはLightGBMのF1スコア0.55、正解率0.63を報告した。
  • 本文と結果表で比較モデル名が一致しない。確認できた本文にはデータ分割方法も示されていない。
補足:編集した模式図で仕組みを確認する

VISUAL EXPLAINER

図でつかむ、Topological Analysis of Attention Mapsの仕組み

左から右へ読む
  1. 01C言語コード
  2. 02BERTの注意行列
  3. 03行列の対称化
  4. 04形の持続性を数値化
  5. 05脆弱性判定

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

研究の背景

ソースコードの脆弱性検出には、書き方を表す構文だけでなく、コードの働きに関わる意味の情報も必要になる。著者らは、従来の静的解析が構文に強く依存し、誤検知が多くなり得ると説明する。

コード向けに学習した言語モデルは、入力中の語同士の関係を注意行列として表す。本研究は、その行列に含まれる関係を数値に変え、脆弱性の有無を判定できるか調べる。

手法

コード向けに事前学習したBERTへコードを入力し、各注意ヘッドから語同士の関係の強さを示す行列を取り出す。注意ヘッドは、語の関係をそれぞれ計算する部分を指す。語の組について両方向の値の大きい方を選んで行列を対称化し、結び付きの強さの閾値を変えながら、語を点、関係を線とするグラフの変化を追う。

この変化を調べる「持続ホモロジー」で、つながった語の集まりと、線が作る輪がどれだけ残るかを測る。例えば、関数内の語の集まりが閾値を変えても残る長さを調べる。各注意ヘッドについて、残る長さの平均・分散・最大値、形の数、持続性の分布を表す値を特徴量とし、分類器に渡して脆弱性の有無を判定する。

新規性

著者らは、コード向けに事前学習したBERTの注意行列から、脆弱性判定用の数値特徴を作る方法を提案した。注意行列は、コード中の語同士にモデルが割り当てた関係の強さを表す。

結び付きの強弱を一つの閾値で区切らず、閾値を変えたときに集まりや輪がどれだけ残るかを測る。著者らは、この持続性が判定に使える情報を含むと解釈している。

従来手法との違い

比較対象は、追加学習前のコード向け言語モデルと、脆弱性判定用に追加学習したモデルである。提案手法では、注意行列から作った特徴量を使い、ロジスティック回帰、SVM、LightGBMの各分類器を学習する。

本文の比較方法には「microsoft/codebert-base」とある一方、結果表には「CodeBERTa」と記され、モデル名が一致しない。静的解析ツールとの直接比較は、この実験結果には示されていない。

実験結果

著者らは、QEMUとFFmpegのC言語コードを含むDevignで分類器を学習・評価した。計算上の制約から、トークン化後の長さが150未満の例だけを使った。結果表ではLightGBMのF1スコアが0.55、正解率が0.63、SVMはそれぞれ0.54、0.65、ロジスティック回帰は0.22、0.54だった。

同表の追加学習前の比較モデルはF1スコア0.28、正解率0.45、追加学習後は0.71、0.72である。著者らの結果ではLightGBMとSVMは前者の両指標を上回り、後者の両指標を下回る。確認できた本文の範囲では、データの分割方法と各クラスの件数は分からない。

応用の可能性

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

編集上の応用案:C言語の関数をレビューする工程で、関数のコードを入力し、脆弱性の疑いを示す判定を担当者に返す。担当者は判定を調査順の参考にし、問題の有無はコードを確認して決める。

実施には、対象プロジェクトの関数コードと、脆弱性の有無を確認したラベル付き学習データが要る。追加のセンサーは使わず、対象コードをコード向けBERTで処理して特徴量を作り、分類器を学習し直す。この工程での有用性は別途測る。

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

導入時の検証

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

導入時の検証案:対象のC言語プロジェクトから、脆弱性の有無を確認したラベル付き関数コードを集める。センサーは不要で、トークン化後の長さが150未満の例について、コード向けBERTの注意行列から特徴量を作り、分類器を対象データに合わせて学習する。

同じ評価データで、追加学習前と追加学習後の比較モデルも測る。F1スコア、正解率、誤検知・見逃しの件数を記録し、レビュー担当者の調査に役立つか確かめる。長さの条件から外れた関数の件数も数え、適用できる範囲を示す。

限界と課題

著者らが明記した制約は、計算上の理由で、トークン化後の長さが150未満の例に対象を限ったことである。長いコードへの適用結果は示されていない。コード構造から得る特徴の追加や、注意行列の対称化方法の検討は、著者らが今後の方向として挙げている。

編集上の検証事項は、学習・評価データの分け方、重複コードの扱い、誤検知と見逃しの件数である。比較モデル名の食い違いも確認が要る。別のプロジェクトや言語での性能を、この結果から推定することはできない。

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

出典

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

Vulnerability Detection via Topological Analysis of Attention Maps

Recently, deep learning (DL) approaches to vulnerability detection have gained significant traction. These methods demonstrate promising results, often surpassing traditional static code analysis tools in effectiveness. In this study, we explore a novel approach to vulnerability detection utilizing the tools from topological data analysis (TDA) on the attention matrices of the BERT model. Our findings reveal that traditional machine learning (ML) techniques, when trained on the topological features extracted from these attention matrices, can perform competitively with pre-trained language models (LLMs) such as CodeBERTa. This suggests that TDA tools, including persistent homology, are capable of effectively capturing semantic information critical for identifying vulnerabilities.

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