[開発者向け]GitHubが「シークレットスキャン」を刷新——LLMの文脈推論で誤検知を75%超減らした仕組み

目次

はじめに

 GitHubは2026年6月11日、シークレットスキャン機能の検証ステップにLLM(大規模言語モデル)による文脈推論を導入し、誤検知(false positive)を大幅に削減したと発表しました。Microsoft Security & AI のAgents Offenseチームと協力し、検出された値がコード内でどのように使われているかを分析することで、アラートの信頼性を高める取り組みです。本稿では、その仕組みと成果を解説します。

参考記事

要点

  • GitHubのシークレットスキャンは、パターンベース検出とAIベースの汎用シークレット検出を組み合わせて、APIキーやパスワードなどの漏洩を検知する仕組みである
  • Microsoft Security & AIのAgents Offenseチームと協力し、検証ステップにLLMによる文脈推論を追加することで、AI検出シークレットの精度向上を図った
  • 値を取得するだけでなく、変数への代入やAPIリクエスト・認証ヘッダー・データベースクライアントへの利用といった「使われ方」の文脈を抽出して判定材料とする
  • ファイル単位の焦点を絞った文脈を与えることで、リポジトリ全体を解析するよりも高精度かつ低レイテンシーを実現した
  • 数百件の顧客確認済み誤検知アラートを対象に評価したところ、目標の65%削減に対し75.76%の削減を達成した

詳細解説

シークレットスキャンの現在地

 GitHubのシークレットスキャンは、パートナー企業が提供するAPIキーやトークンのパターンに合致するものを検出する「パターンベース検出」と、既知のパターンに当てはまらないパスワードなどを検出する「AIベースの汎用シークレット検出」の2本立てで構成されています。GitHubによれば、パートナーパターンに基づく検出は、数十億件規模のプッシュを処理しながら業界トップクラスの精度を維持してきました。一方でAIベースの検出を拡大するにあたり、パターンベースと同等の精度水準に近づけることが新たな課題となっていました。

 シークレットスキャンとは、ソースコードやコミット履歴の中からAPIキー・パスワード・認証トークンなどの機密情報が誤って含まれていないかを自動的に検出する機能のことです。開発の初期段階で漏洩を発見できるため、インシデントの予防に役立つと考えられます。

誤検知を減らすアプローチ

 今回の取り組みは、検出パイプライン自体は変更せず、検出済みの「候補シークレット」を評価する検証ステップにLLMによる推論を加えるという設計です。GitHubの説明では、検出された値がコード内でどのように扱われているかを見ることで、本物の漏洩なのか、単に機密情報に見えるだけの値なのかを判別しやすくなるとされています。これにより、開発者が低価値なアラートの調査に時間を割く割合を減らせるとのことです。

 なお、この検証手法は、Microsoftが開発した「Agentic Secret Finder」というより広範な検出・検証システムの考え方を応用したものです。Agentic Secret Finderは、値が単にシークレットのパターンに一致するかどうかだけでなく、コンテキストの中でその値が実際にどう使われているかを理解することを目指したシステムだと説明されています。

「より多くの文脈」ではなく「より良い文脈」

 検証時にどの程度の文脈をLLMに与えるかは、難しい判断だとされています。短いコードスニペットだけでは判断材料が不足する一方、ファイルやリポジトリ全体を渡すとノイズが増え、コストとレイテンシーも増大します。

 そこでGitHubが採用したのは、値の使われ方を説明する「高信号な情報」を小さく抽出するという方法です。たとえば、ある値が変数に代入され、その後APIリクエスト・認証ヘッダー・データベースクライアント・クラウドSDKの呼び出しに渡されているかどうかを確認します。パターンマッチングでは値が「シークレットらしい形」をしているかは分かりますが、それが実際にシークレットとして使われているかまでは判断できません。周辺の利用文脈を見ることで、ランダムなUUIDや単なる文字列といった偽陽性を、ファイルやリポジトリ全体を読まずに見分けられるようになると考えられます。

 この設計思想は、コードレビューやセキュリティ監査の現場でも参考になる視点だと思います。「情報量を増やす」のではなく「関連性の高い情報に絞る」というアプローチは、LLMを使った他の検証・分析タスクにも応用できる考え方ではないでしょうか。

検証結果:数百件規模で75.76%の削減

 GitHubは、顧客から確認された誤検知アラート数百件を対象にこの手法を評価しました。目標としていた削減率は65%でしたが、結果は75.76%となり、検出性能を維持したまま目標を上回ったとのことです。

 一般的に、セキュリティアラートの誤検知率が高いと、対応するチームの「アラート疲れ」が起きやすくなることが知られています。75%超という削減率は、実務上のトリアージ負荷を大きく下げる効果が期待できる水準だと言えます。ただし、この評価は数百件規模のサンプルに基づくものであり、より大規模なデータセットや実運用環境での挙動については、GitHubも今後さらに検証を進める方針を示しています。

まとめ

 GitHubは、シークレットスキャンの検証ステップにLLMによる文脈推論を組み込み、誤検知を75.76%削減したと発表しました。検出パイプラインを変えずに「使われ方」という焦点を絞った文脈を活用する設計は、誤検知対策の一つの方向性として参考になりそうです。今後の大規模データでの検証結果にも注目したいところです。

この記事が気に入ったら
フォローしてね!

  • URLをコピーしました!
  • URLをコピーしました!
目次