株式会社ベストスキップのロゴ
課題から探す/最新テクノロジー活用

LLMでセキュリティ診断の精度を上げたい

誤検知の山を仕分ける診断から、確かな指摘だけが届く診断へ。

役割の異なるLLM呼び出しを多段に組み合わせた自作の脆弱性レビュー(secu-review)を、公開ベンチマークの OWASP Benchmark v1.2 で採点したところ、Youden スコア +0.930 を記録しました。商用SASTの平均(約0.33)を大きく上回る結果です。

01

お客さまの課題

  • Case 01

    商用SASTは誤検知が多く、アラートの仕分けに人手を取られる

    大量の指摘の多くが誤検知。人が一件ずつ真偽を確かめることになり、診断より仕分けに時間がかかる。

  • Case 02

    生成AIに一発で投げると、見逃しや根拠のない指摘が混じる

    「脆弱性を探して」と一度に頼むだけでは、取りこぼしと根拠のない指摘(幻覚)が避けられない。

  • Case 03

    ソースコードを外部サービスに丸ごと預けるのは避けたい

    セキュリティ診断ほど、対象のコードや設定を社外に出すリスクを許容しづらい。

  • Case 04

    診断の質がレビュアー個人の練度に依存してしまう

    観点が人によって揺れ、レビューの網羅性と再現性が担保されない。

02

ソリューション

網羅的に検知する → 一件ずつ検証する → CWEで確定する。

候補を漏れなく挙げる「検知」の段と、各候補が実際に悪用可能かを精査する「検証」の段を、役割の異なるLLM呼び出しとして直列に組みます。最後にCWEの等価集合と照合して確信度で振り分け、確実なものだけを「確定(CONFIRMED)」として提示します。判断の割れた灰色域は「要確認(NEEDS-REVIEW)」として残し、人のレビューに委ねます。

  • リポジトリのスキャン結果一覧。ファイル・位置・CWE・判定バッジが並ぶセキュリティレビュー画面
    Step 01

    ① コードを読み、脆弱性を検知して一覧化

    リポジトリを解析し、SQLインジェクションやコマンドインジェクション、パストラバーサルなどを検知します。指摘にはCWEと深刻度、判定(確定/要確認/除外)を付けて並べるので、確実なものから対応できます。該当行と修正提案もセットで提示します。

  • 検出→検証→CWE照合の2段階パイプラインと、CONFIRMED/NEEDS-REVIEW/除外への振り分けを示す画面
    Step 02

    ② 2段階のLLMレビューで誤検知を落とす

    1つのモデルに一度で判定させず、候補を検知する段と妥当性を検証する段に分けます。1次スキャンで候補を網羅的に検知し、2次チェックで緩和策やサニタイズの有無、攻撃経路の到達可能性を検証して誤検知を棄却します。「確定(CONFIRMED)」のみを採用する運用では、検出率 95.8% を維持したまま誤検知率を 2.7% に低減できます。

  • OWASP Benchmark v1.2 のカテゴリ別スコアカード。TPR・FPR・Youdenを一覧化した表
    Step 03

    ③ OWASP Benchmark でカテゴリ別に実証

    精度は公開ベンチマークで裏付けています。OWASP Benchmark v1.2(2,740件)で採点すると、SQLiやXSS、パストラバーサルなど多くのカテゴリで Youden +0.99〜+1.00。加重平均の +0.930 は、商用SASTの平均(約0.33)を大きく上回ります。

主な構成要素

  • 01オンプレ/閉域で動くLLM推論基盤(機密コードを外部に出さない)
  • 021次スキャン(疑わしい箇所を漏れなく候補として検知)
  • 032次チェック(各候補について、対策の有無と攻撃の到達可能性を検証)
  • 04CWE(脆弱性の分類基準)との照合・確信度スコアリング
  • 05診断結果を「確定(CONFIRMED)」「要確認(NEEDS-REVIEW)」「除外」の3段階に仕分け
  • 06OWASP Benchmark 採点・スコアカード生成
03

Claude Code 組み込み診断との比較

Anthropic のAIコーディングエージェント Claude Code には、/security-review というセキュリティ診断機能が標準で搭載されています。当社はこれとは別に、脆弱性候補を網羅的に検知する1次スキャンと、各候補の妥当性を個別に検証する2次チェックを分離した、多段構成の診断スキル secu-review を自社開発しました。

両者の精度を比較するため、セキュリティ診断ツールの標準的な評価に用いられる OWASP Benchmark v1.2 を使用しました。脆弱性を含むコードと安全なコード、計2,740件のテストケースを双方の診断環境で同一条件のもと診断し、脆弱性をどれだけ漏れなく検知できたか(検出率)と、安全なコードをどれだけ誤って指摘したか(誤検知率)を採点しています。

結果、組み込みの /security-review 単体でも Youden +0.884 と、商用SASTツールの平均(約0.33)を大きく上回りました。自社開発の secu-review は、「確定(CONFIRMED)」判定のみを採用する運用で誤検知率を 8.3% から 2.7% に低減し、Youden +0.930 を記録しています。検知と検証を分離した多段構成の効果が、数値の差として表れています。

総括(方式別の実測値)

方式検出率(TPR)誤検知率(FPR)Youden
/security-review(Claude Code 組み込み・Opus)96.7%8.3%+0.884
secu-review skill(確定+要確認)98.0%9.5%+0.885
secu-review skill(確定のみ)95.8%2.7%+0.930
(参考)商用SASTツールの平均約+0.33

カテゴリ別 Youden スコア

カテゴリ組み込み /security-reviewsecu-review(確定+要確認)secu-review(確定のみ)
cmdi(コマンドインジェクション)+0.92+0.95+0.93
crypto(弱い暗号アルゴリズム)+0.76+0.75+0.77
hash(弱いハッシュ)+0.55+0.32+0.63
ldapi(LDAPインジェクション)+0.88+0.94+0.97
pathtraver(パストラバーサル)+0.96+0.99+0.99
securecookie(Cookie属性の不備)+0.97+1.00+1.00
sqli(SQLインジェクション)+0.89+0.96+0.99
trustbound(トラストバウンダリ違反)+0.91+1.00+1.00
weakrand(弱い乱数)+1.00+0.89+0.96
xpathi(XPathインジェクション)+1.00+1.00+1.00
xss(クロスサイトスクリプティング)+0.89+0.98+1.00
加重平均+0.884+0.885+0.930
  • Youden スコアは検出率(TPR)から誤検知率(FPR)を引いた指標。+1.00 が満点で、高いほど「漏らさず、誤検知しない」診断を意味する。
  • secu-review(確定+要確認)の集計では、CWE の分類が一致しないノイズ検出 327 件を採点対象外としている。
04

関連ユースケース

Tech StackローカルLLM(オンプレ推論)多段レビュー・パイプラインOWASP Benchmark v1.2(評価)CWE 等価集合マッチングJava / 静的解析(対象コード)Next.js / TypeScript(レビューUI)