Skip to main content
Skip to content

プル リクエスト向け AI スキャン

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

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

AI スキャンは、別のスキャン ツールやビルド構成を必要とせずに、code scanning 対象範囲を拡大します。

Availability

可用性は、誰がリポジトリを所有しているかとその可視性によって異なります。

リポジトリ所有者視認性利用可能状況と要件
組織Publicアクティブコミッター ライセンスがなくても利用可能
組織非公開または内部
GitHub Code SecurityまたはGitHub Advanced Securityで利用可能
個人用アカウントPublicAvailable
個人用アカウントPrivate該当なし

プル要求の AI スキャンは、リポジトリに対してマネージド ユーザー アカウントが有効になっている場合でも、code scanningの個人用名前空間内のリポジトリでは使用できません。

AI スキャンを使用するために GitHub Copilot ライセンスは必要ありません。

Billing

AI スキャンの使用状況はアクティブコミッター ライセンスとは別であり、Code Security AI クレジット SKU で報告されます。 使用は、対象となるプル リクエストがスキャンされたときにのみ開始されます。

組織所有のリポジトリの場合、使用量は組織の請求を担当するアカウントに請求されます。

個人アカウントが所有するパブリック リポジトリの場合、リポジトリ所有者が組織または企業によって提供された GitHub Copilot ライセンスを持っていない限り、その個人アカウントに使用量が課金されます。 その場合、ライセンスを提供する組織または企業に使用量が課金されます。

課金アカウントがAI creditsを含むGitHub Copilotの権利を通じてそれらを受け取った場合、AI スキャンでは最初にこれらのクレジットが使用されます。 含まれているクレジットが使い果たされた後、またはアカウントにクレジットが含まれていない場合、使用状況は従量制課金され、該当する予算によって管理されます。 ハード予算によって利用可能な Code Security AI Credits が残っていない場合、AI Scan では検出結果を生成できません。 管理者が制限予算を増やすか、新しい請求サイクルが開始されると、スキャンが再開されます。

課金モデルの詳細については、 GitHub Advanced Security ライセンス請求 を参照してください。

AI スキャンのしくみ

AI スキャンは、次のすべての条件が満たされると自動的に実行されます。

  • Code scanning はリポジトリに対して有効になっています。
  • リポジトリの [プル要求時の AI スキャン] 設定が有効になっています。
  • フォークからのものではなく、Dependabot によって作成されたものでもない pull request には、サポートされている言語またはフレームワークの変更が含まれ、CodeQL ではカバーされていません。

スキャンは、 CodeQLの場合と同様に、プル要求が作成され、新しいコミットのたびに実行されます。

AI スキャンでは、既定 CodeQL セットアップは必要なく、 CodeQL 分析の状態に依存しません。 CodeQL分析が失敗した場合、または待機状態の場合でも、AI スキャンは実行されます。

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

結果は参考情報です。 ** Code scanning **チェックに失敗せず、ルールセットの要件を通じてプル リクエストのマージをブロックすることはできません。 これらは、ワークフローを中断することなくコード セキュリティを改善できる場所に関するシグナルを提供します。

スキャン エンジンは、ビルド システムを必要とせずに pull request コードを分析し、コード検索を使用して、問題にフラグを設定する前にリポジトリからより多くのコンテキストを収集できます。 /.github/copilot-instructions.mdや/CLAUDE.mdなどのカスタム命令ファイルではなく、特殊なプロンプトが使用されます。

プル要求での AI スキャンの結果の表示方法

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

各結果は、セキュリティの問題を説明し、リスクを説明します。 ほとんどの検出結果には、推奨される修正策も含まれています。 使用可能な場合、 Copilot Autofix は、 CodeQL アラートの場合と同様に、コードの変更を推奨します。

高評価または低評価のコントロールを使用してフィードバックを提供し、検出品質の向上に役立てることができます。

Limitations

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

サポートされている言語

AI スキャンは、CodeQL が現在対応していない一部の言語とフレームワークをサポートしています。 例としては、PHP、シェル/Bash、Terraform 構成 (HCL)、Dockerfiles、JSP for Java、C# 用 Blazor などがあります。

CodeQLが言語をサポートしているかどうかを確認するには、CodeQL を使用したコード スキャン を参照してください。

検出カテゴリ

現在、AI スキャンでは、結果が次のカテゴリに分類されています。 機能が進化すると、カバレッジが変わる可能性があります。

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

AI スキャンの有効化

組織のプルリクエストで AI スキャンを有効にする前に、リポジトリの適格性を確認し、課金アカウントに含まれる AI credits を確認し、従量制課金の予算を構成します。

組織設定を有効にすると、 code scanning が有効になっているすべての適格なリポジトリに対してすぐに AI スキャンが有効になります。 その後、リポジトリ管理者はオプトアウトできますが、条件を満たすプルリクエストは、その前に Code Security AI クレジットを消費する可能性があります。

AI スキャンを有効にするためにモデルを選択する必要はありません。

  • エンタープライズ: 企業の所有者は、組織が AI スキャンを有効にすることを許可または禁止できます。 既定では、ポリシーは "許可されていません" に設定されています。 AI スキャンを許可しても、自動的には有効になりません。 「エンタープライズのコード セキュリティと分析のためのポリシーの適用」を参照してください。
  • 組織: 組織の所有者とセキュリティ マネージャーは、対象となるリポジトリのプル リクエストに対して AI スキャンを有効にすることができます。 リポジトリは組織の設定を継承します。 「組織のグローバル セキュリティ設定の構成」を参照してください。
  • 組織所有のリポジトリ: リポジトリへの管理者アクセス権を持つユーザーは、組織が AI スキャンを有効にしたときにオプトアウトできます。 組織の設定が無効になっている場合は、オプトインできません。
  • 個人アカウントが所有するパブリック リポジトリ: リポジトリへの管理者アクセス権を持つユーザーは、"****" の下にある Code scanning 切り替えを使用して、AI スキャンを直接有効または無効にします。

組織の所有者とセキュリティ マネージャーは、セキュリティの概要の "カバレッジ" ビューで、プル要求に対する AI スキャンの有効状態を確認できます。 「セキュリティ機能の導入を評価する」を参照してください。

セキュリティの概要にアクセスできるユーザーは、組織全体または企業全体で AI スキャンの結果を監視することもできます。

  • 概要ダッシュボードの [ Prevention ] タブには、AI スキャンの検出結果の傾向、解決された結果の数、および開発者が Copilot Autofix 提案を受け入れた頻度が表示されます。
  • "pull requests でのコード スキャン" レポートの [ AI スキャン ] タブには、時間の経過に伴う検出結果、Copilot Autofix 提案の可用性、および提案あり/なしの検出結果の結果が表示されます。

詳細については、「プルリクエストでのコード スキャン」を参照してください。

REST API を使用して、組織またはリポジトリの ai-scan 設定を管理できます。 「コード スキャン用の REST API エンドポイント」を参照してください。