GitHubのAI脆弱性検出、組織・リポジトリ単位のAPI管理に対応
2026年9月12日 11:19
GitHubは9月10日、プルリクエスト向けのAI脆弱性検出機能「AI Scan」を、組織およびリポジトリ単位で管理できるREST APIをパブリックプレビューとして公開した。GitHub Advanced Securityを利用する組織は、対象リポジトリへの段階的な展開や設定状況の確認を自動化できる。一方、GitHub Enterprise Serverは今回の提供対象に含まれない。
■組織とリポジトリの設定をAPIで管理
新たなREST APIでは、AI Scanが有効になっているかを読み取り、設定を更新できる。組織向けの「/orgs/{org}/code-scanning/ai-scan」と、リポジトリ向けの「/repos/{owner}/{repo}/code-scanning/ai-scan」という2種類のエンドポイントが用意された。
組織レベルの設定は、その組織に属するリポジトリでAI Scanを実行できるかどうかを制御する。組織側で無効にされている場合、個別のリポジトリから有効にすることはできない。一方、組織側で有効になっていても、リポジトリ管理者は個別にオプトアウトできる。
これにより、多数のリポジトリを管理する組織は、GitHubの画面から一つずつ設定する代わりに、スクリプトや社内の管理システムから設定を読み取り、対象を選んで更新できる。例えば、重要度の高いリポジトリから導入し、検出結果を確認しながら対象を広げるといった運用が可能になる。
APIで取得できるのは組織やリポジトリに保存された設定状態である。継続的な監査記録が必要な場合は、APIによる取得結果や設定変更の履歴を、組織側の管理基盤に保存する運用が考えられる。
■CodeQLの対象外を補うAI検出
AI Scanは、GitHubが7月14日にパブリックプレビューを開始したAIベースのセキュリティ検出機能である。プルリクエストが作成されたときや、新たなコミットが追加されたときに動作し、変更されたコードから潜在的な脆弱性を検出する。
CodeQLが対応する言語やフレームワークを高精度な静的解析で調べるのに対し、AI ScanはCodeQLで十分にカバーされていない領域を補完する位置付けとなる。GitHubは対象例として、PHP、Shell/Bash、Terraformの設定言語であるHCL、Dockerfileのほか、JavaのJSPやC#のBlazorなどを挙げている。
AI Scanはプルリクエスト内のコードを直接調べ、必要に応じてコード検索などを使ってリポジトリ内の追加情報を参照する。専用のプロンプトを利用し、「CLAUDE.md」やGitHub Copilot向けのカスタム指示ファイルは解析に使用しない。
検出結果は、プルリクエストの「Conversation」と「Files changed」にCodeQLのアラートと並んで表示される。AIによる検出には「AI」の表示が付き、問題の説明やリスクの解説が示される。多くの検出結果には修正案も付くが、すべての結果に修正案が提示されるわけではない。
AI Scanの検出結果は助言として扱われ、単独ではプルリクエストのマージを阻止しない。また、リポジトリ全体を対象としたスキャンや、リポジトリのセキュリティ画面に蓄積されるバックログアラートには対応していない。AIによる判定には誤検知が含まれる可能性があるため、導入時には実際のコードベースで検出内容を評価する必要がある。
■利用にはCodeQLのデフォルトセットアップが必要
AI Scanを利用するには、エンタープライズ管理者がAIベースのセキュリティ検出を許可し、組織管理者が機能を有効にする必要がある。対象リポジトリでは、CodeQLのデフォルトセットアップも有効になっていなければならない。
AI ScanとCodeQLは別々に解析を行う。CodeQLの解析が失敗した場合や待機状態にある場合でも、AI Scan自体は処理を続行する。両者の結果は完了した順に表示されるため、AI Scanの結果が先に現れる場合も、CodeQLの結果が先に現れる場合もある。
パブリックプレビュー期間中は、GitHub Advanced Securityのライセンスに加えてGitHub Copilotのライセンスが必要となる。AI Scanを実行すると、組織に割り当てられたAIクレジットを消費する。クレジットが消費されるのは、検出処理が実際に動作した場合である。
今回のAPIにより、組織はAI Scanを利用するリポジトリをプログラムから選別できるようになった。全リポジトリへ一斉に導入するのではなく、優先度の高い対象から展開することで、検出品質の評価とAIクレジットの管理を並行して進められる。
■シークレット検出などの機能も拡充
GitHubはAI Scan APIの公開前日となる9月9日、シークレットスキャンのアラートを解消していないプルリクエストのマージを、リポジトリルールセットで阻止できる機能もパブリックプレビューとして公開した。
このルールでは、プルリクエストの先頭コミットに対するシークレットスキャンが完了していることと、そのプルリクエストのコミットによって持ち込まれたシークレットの未解決アラートがないことを確認する。バイパス権限を持たない開発者は、各アラートを解決するまでマージできない。
AI Scanの検出結果は現時点でルールセットによるマージ要件には利用できないため、両機能の役割は異なる。AI Scanはプルリクエスト上で潜在的な脆弱性を提示し、シークレットスキャンの新ルールは、条件に該当するシークレットが残ったままマージされることを防ぐ。
同じく9月9日にはCodeQL 2.27.0が公開され、Linux ARM64への対応、新たなRust向けセキュリティクエリ、Java/KotlinやC#のフレームワーク対応拡大などが加わった。
■GitHub Enterprise Serverは対象外
AI Scan APIのパブリックプレビューは、github.com上でGitHub Advanced Securityを利用する顧客を対象としている。セルフホスト型のGitHub Enterprise Serverは今回のリリースではサポートされず、対応時期も公表されていない。
GitHub Enterprise Server 3.22は、AI Scan API公開の2日前となる9月8日に一般提供された。同バージョンでは、GitHub Cloudへ接続できない分離環境やエアギャップ環境でCopilot CLIを利用するための機能がテクニカルプレビューとして追加されたほか、エンタープライズチーム機能が一般提供となった。ただし、プルリクエスト向けAI Scanと今回のAPIは提供機能に含まれていない。
GitHub Enterprise Serverを利用している組織については、将来の対応を前提とした時期を推測せず、GitHubの正式な発表を待つ必要がある。
■プレビュー期間は小規模な検証から
GitHub Advanced SecurityとGitHub Copilotの必要なライセンスを持つ組織は、REST APIを利用してAI Scanの設定管理を自動化できる。ただし、APIとAI Scanはいずれもパブリックプレビューであり、仕様や対応する検出カテゴリー、言語は今後変更される可能性がある。
導入時には、代表的なリポジトリを選んで検出内容や誤検知を確認し、利用するAIクレジットと運用上の効果を評価したうえで対象を広げる方法が適している。APIによる設定情報を既存のセキュリティ管理基盤に取り込めば、どのリポジトリを対象としているかを継続的に把握しやすくなる。
GitHubは、プレビューに関する意見や報告をGitHub Communityのディスカッションで受け付けている。一般提供やGitHub Enterprise Serverへの対応時期については、現時点で正式な予定を示していない。
元記事: GitHub Releases REST API for AI Vulnerability Scanning; Enterprise Server Still Excluded