シークレットスキャンの信頼性向上:大規模な誤検出削減
GitHubはLLMベースのコンテキスト検証を導入し、シークレットスキャンの誤検出率を75.76%削減。アラートの信頼性と開発者の信頼を向上させました。
シークレットスキャンは、開発者と組織を保護する上で重要な役割を果たします。露呈した認証情報を早期に発見し、小さなミスが実際のインシデントに発展するのを防ぎます。GitHubの規模では、小さな非効率でも実際の摩擦を生みます。誤検出が多すぎると、アラートを信頼することが難しくなります。
アラートがノイズが多いと、開発者はトリアージに時間を費やし、実際の問題の修正に費やす時間が減ります。時間の経過とともに、これにより修復が遅れ、システムへの信頼が低下します。
この課題に対処するため、GitHubはMicrosoft Security & AIのAgents Offenseチームと協力し、GitHubのシークレットスキャン検証により多くのコンテキスト推論をもたらしました。この協力では、潜在的なシークレットをコンテキストで理解するために開発された広範な検出・検証システムであるAgentic Secret Finderの検証アプローチを適用しました。これにより、GitHubはシークレットスキャンに期待されるカバレッジを維持しながら、低価値のアラートを削減する方法を探求しました。
現在のGitHubのシークレットスキャンは、パターンベースの検出とAIベースの検出を組み合わせて潜在的なシークレットを識別します。パターンベースの検出は、トークンやAPIキーのパートナーパターンなど、既知のシークレット形式を捕捉します。AI駆動の汎用シークレット検出は、既知のプロバイダーパターンに一致しないパスワードなどの非構造化シークレットにもカバレッジを拡大します。
GitHubはすでにプロバイダーパターンのシークレット検出において業界をリードする精度を誇り、数十億のプッシュを処理し、数百万のリポジトリにわたる数千万の開発者を保護しています。GitHubがAI駆動のシークレット検出に拡大するにつれて、次の課題はAI検出されたシークレットの精度をプロバイダーパターン検出と同じ高水準に近づけることでした。この協力は、GitHubの大規模検出パイプラインとLLMベースのコンテキスト検証を組み合わせて、アラートの品質と開発者の信頼を向上させることに焦点を当てました。
私たちのアプローチは、シークレットスキャンのアラートを信頼できるものにすることです。どのアラートに対処すべきかを迅速に判断できるとき、シークレットスキャンは最も有用です。GitHubにはノイズを減らすためのセーフガードがすでにありますが、一部のシークレットらしい値は、実際の露出を表しているかどうかを判断するためにより多くのコンテキストを必要とします。これらのアラートを信頼しやすくするために、検証ステップにより多くの推論を追加しました。検出された値がコード内でどのように現れるかを調べることで、システムは実際の露出と敏感に見えるだけの値をより適切に区別できます。これにより、低価値のアラートの調査に費やす時間を減らし、重要な問題の修正に集中できます。
このアプローチは既存のシステムに直接基づいています。検出は引き続き候補を生成し、検証ステップがそれらを評価します。コンテキスト認識性の向上により、このシステムは実際のシークレットとノイズをより適切に区別できます。結果として、上流の検出ロジックを変更したりカバレッジを減らしたりすることなく、精度が向上します。
重要な課題は、提供するコンテキストを決定することです。コードの小さな断片だけでは、何かが実際のシークレットかどうかを判断するのに不十分なことがよくあります。同時に、ファイル全体やリポジトリ全体を渡すとノイズが多くなり、コストとレイテンシが増加します。そのため、より多くのコンテキストを提供するのではなく、より良いコンテキストを提供しています。大量のコードを送信する代わりに、値の使用方法を説明するのに役立つ小さな高シグナル情報のセットを抽出します。たとえば、値が変数に割り当てられ、後でAPIリクエスト、認証ヘッダー、データベースクライアント、またはクラウドSDK呼び出しに渡されるケースを探します。パターンマッチングは値がシークレットのように見えることを教えてくれますが、その値が実際にシークレットとして使用されているかどうかは教えてくれません。周囲の使用コンテキストは、モデルが実際の露出と誤報(ランダムなUUIDや不透明な文字列など)を区別するのに役立ちます。ファイル全体やリポジトリ全体をレビューする必要はありません。
ほとんどの誤報は、焦点を絞ったファイルレベルのコンテキストで解決できます。重要なのは、モデルがどれだけのコードを見るかではなく、正しい信号を持っているかどうかです。多くの場合、単一のファイル内での使用方法を見ることで、値が実際のシークレットかどうかを判断できます。プレースホルダー、テストデータ、未使用の設定に類似した値は、より深い分析なしにフィルタリングできることがよくあります。これにより、システムは効果的かつ実用的で、高精度、低レイテンシ、大規模なコードベース全体にスケーリングする能力を維持します。
このアプローチを、顧客が確認した数百の誤検出アラートで評価しました。目標は65%の削減でしたが、結果は75.76%で、その目標を超え、強力な検出パフォーマンスを維持しました。実際には、これはノイズの大幅な減少と、対応が必要なアラートの割合の増加を意味します。この改善は、開発者体験に直接現れます。無関係なアラートが減ることで、見たものを信頼しやすくなります。ノイズのトリアージに費やす時間が減り、実際の問題を優先してより迅速に修正できます。
私たちは、より大規模なデータセットと実トラフィックでこのアプローチを引き続き評価し、コンテキストの抽出と検証への使用方法を改善しています。誤検出の削減は、大規模な環境での一貫したニーズです。この作業は、最も重要な場所でシグナルの品質を向上させ、アラートを信頼して対応しやすくすることに焦点を当てています。目標はシンプルです: distractions を減らし、シグナルを明確にし、実際のリスクに迅速に対応することです。