Skip to main content

プル要求での AI を利用したセキュリティ検出

AI を利用したセキュリティ検出では、AI ベースのスキャン エンジンを使用して、 CodeQLでカバーされていない言語とフレームワークのプル要求のセキュリティの脆弱性を検出します。

メモ

AI を活用したセキュリティ検出は現在パブリック プレビューであり、変更される場合があります。

AI を利用したセキュリティ検出は、プル要求で実行され、 CodeQLを補完する AI ベースのスキャン エンジンによって生成される追加のセキュリティ結果です。 CodeQLアラートとは異なり、AI を利用した結果はプル要求でのみ使用でき、リポジトリのセキュリティ ビューではバックログ アラートとして表示されません。

CodeQLでは、サポートされている特定の言語とクエリのセットに対して高精度の静的分析が提供されますが、多くのリポジトリでは、CodeQLがカバーしていない言語とフレームワークが使用されます。 AI を利用した検出は、 code scanning の対象範囲をこれらの領域に拡大し、新しいツールや構成を追加することなく脆弱性を見つけるのに役立ちます。

パブリック プレビュー中、AI を利用したセキュリティ検出には、GitHub Advanced Security ライセンスとGitHub Copilot ライセンスが必要です。

使用するとAI creditsが消費されます。 「組織と企業の使用量ベースの課金」を参照してください。

AI を利用したセキュリティ検出のしくみ

AI を利用したセキュリティ検出は、既定のセットアップ CodeQL 有効になっており、AI を利用した検出が選択されているリポジトリ内のプル要求で自動的に実行されます。 AI ベースのスキャンは、プル要求の作成時と、新しいコミットのたびに、 CodeQLと同じようにトリガーされます。

AI を利用した結果はアドバイザリであり、プル要求のマージはブロックされません。 これらは、ワークフローを中断することなくコード セキュリティを改善できる場所に関するシグナルを提供します。

AI スキャン エンジンは、プル要求内のコードと直接連携し、ビルド システムを必要としません。 コード検索などのツールを使用して、問題にフラグを設定するかどうかを決定するときに、リポジトリから追加のコンテキストを収集します。 独自の特殊なプロンプトを使用し、 /.github/copilot-instructions.md/CLAUDE.mdなどのカスタム命令ファイルは使用しません。

AI スキャンは、 CodeQLの状態とは別に実行されます。 既定 CodeQL セットアップが失敗した場合、または待機状態の場合、AI を利用した検出は引き続き実行されます。

結果は、検出されると pull request にポストされます。 CodeQL スキャンの完了に時間がかかる場合は、結果が表示される前に AI を利用した結果CodeQL表示される場合があります。その逆も同様です。

プル要求での結果の表示方法

AI を利用した結果は、プル要求の CodeQL] タブと [ファイル] 変更タブに**** アラートと共に表示されます。 各 AI を利用した検索には、"AI" インジケーターのラベルが付いているため、 CodeQL アラートと区別できます。

各結果には、セキュリティの問題の説明とリスクの説明が含まれます。 ほとんどの結果には推奨される修復も含まれますが、すべての結果に解決策が含まれているわけではありません。 推奨される修復が利用可能な場合は、 Copilot の自動修正 が含まれており、 CodeQL アラートの場合と同じように、問題を修正するための推奨されるコード変更が提供されます。 結果には、時間の経過に伴う検出品質の向上に役立つサムアップ/ダウン フィードバック メカニズムも含まれます。

Limitations

  • AI を利用したセキュリティ検出では、プル要求のみが分析されます。 完全なリポジトリ スキャンはサポートされていません。
  • AI を利用した結果は、マージ要件を適用するためにルールセットではまだ使用できません
  • 検出カテゴリとサポートされている言語は、機能の進化に伴って変更される可能性があります。
  • AI ベースのツールと同様に、結果には誤検知が含まれる場合があります。 フィードバック メカニズムを使用して、不正確な結果を報告します。

サポートされている言語

AI を利用したセキュリティ検出は、現在 CodeQLでサポートされていない言語とフレームワークに対応するように設計されています。 これには、PHP、シェル/Bash、Terraform 構成 (HCL)、Dockerfile などの言語のほか、Javaの JSP や C# 用 Blazor などのフレームワーク カバレッジギャップが含まれますが、これらに限定されません。

CodeQLでサポートされている言語の完全な一覧については、CodeQL を使用したコード スキャン を参照してください。

検出カテゴリ

AI を利用したセキュリティ検出は、現在、次のカテゴリに対応しています。 これらのカテゴリでは、結果の分類方法について説明します。 AI スキャナーは、モデルの改善に伴って時間の経過と同時に進化する可能性があります。

  • 文字列挿入 — エスケープまたはサニタイズが不足しているか正しくない、安全でない文字列で構築された SQL、HTML、シェル、JSON、または YAML。
  • 弱い暗号化 - 弱いアルゴリズム、小さなキー、安全でないランダム性、暗号化の欠落、または脆弱なパスワード ハッシュ。
  • アクセス制御の中断 - パス トラバーサル、CSRF ギャップ、またはユーザー主導のオープン リダイレクト。
  • 機密データの公開 — シークレット、トークン、パスワード、またはスタック トレースは、適切な保護なしで保存、ログ記録、または送信されます。
  • セキュリティ構成の誤り — セキュリティ コントロールの無効化やデバッグ機能の有効化など、危険な既定値または設定。
  • 認証エラー - TLS または検証、安全でない認証フロー、またはレート制限の欠落。
  • データ整合性エラー — 安全でない逆シリアル化、機密性の高いアクションの HTTP、プロトタイプの汚染、または信頼されていないコンテンツの実行。
  • サーバー側要求フォージェリ (SSRF) - サーバーは、攻撃者が制御する URL、ホスト、またはプロトコルをフェッチします。
  • サプライ チェーンのリスク - 固定されていないサード パーティのアクション、パッケージ、イメージ、または整合性チェックなしのダウンロード。

AI を利用したセキュリティ検出の有効化

AI を利用したセキュリティ検出は、既定ではエンタープライズ レベルでは許可されず、組織レベルとリポジトリ レベルでは無効になっています。 エンタープライズ管理者は、組織が機能を有効にする前に、この機能を明示的に許可する必要があります。 組織の管理者は、この機能を明示的にオプトインする必要があります。 リポジトリ管理者は、この機能をオプトアウトできます。 さらに、 CodeQL の既定のセットアップを有効にする必要があります。

AI を利用したセキュリティ検出を有効にするためにモデルを選択する必要はありません。

  • エンタープライズ: [コード セキュリティ] の下 の AI 結果 ポリシーは、組織が機能を有効にできるかどうかを制御します。 「エンタープライズのコード セキュリティと分析のためのポリシーの適用」を参照してください。
  • 組織: [コード スキャン] の下の AI の結果 設定により、組織内のリポジトリに対して AI を利用した検出が可能になります。 「組織のグローバル セキュリティ設定の構成」を参照してください。
  • リポジトリ: [コード スキャン] の下にある AI の結果 の切り替えにより、個々のリポジトリに対する AI を利用した検出が有効または無効になります。 リポジトリは組織の設定を継承しますが、個別にオプトアウトできます。