CodeQLの設定状況にかかわらず実行可能に
AI Scanは、プルリクエストの変更内容を対象に、CodeQLがカバーしない言語やフレームワークの脆弱性を検出するAIベースの機能だ。対象例として、PHP、Shell/Bash、Terraform/HCL、Dockerfile、JavaのJSP、C#のBlazorが挙げられている。CodeQLを置き換えるものではなく、補完する位置付けとなる。
今回の変更により、CodeQLのデフォルト設定を使っていないリポジトリでも、条件を満たせばAI Scanを利用できる。CodeQLのデフォルト設定は、解析対象の言語や実行するクエリ、スキャンのトリガーなどをGitHubが自動選択してコードスキャンを構成する仕組みだ。今回の変更に伴う新たなセットアップ手順はない。
残る利用条件と対象範囲
CodeQLのデフォルト設定は不要になったが、Code scanningとAI Scan自体は、リポジトリ、組織、または該当する場合はEnterpriseレベルで有効にしておく必要がある。組織がEnterpriseに属している場合は、Enterpriseのポリシーも適用される。パブリックプレビュー中は、GitHub Advanced SecurityライセンスとGitHub Copilotライセンスが必要で、利用量に応じてAI creditsを消費する。
提供対象はgithub.com上の適格な組織所有リポジトリおよび個人所有リポジトリで、GitHub Enterprise Serverは今回のリリースでは対応しない。EnterpriseではAI Scanがデフォルトで許可されておらず、Enterprise所有者による許可後に組織管理者が有効化できる。組織で有効化した場合、Code scanningが有効な対象リポジトリに適用されるが、組織所有リポジトリは個別にオプトアウトできる。
PR上に結果を表示、マージの強制は不可
AI Scanはプルリクエストの作成時と新しいコミットの追加後に実行される。ただし、対象となる言語やフレームワークの適格な変更が必要だ。CodeQLの解析が失敗中、または待機中であっても、その他の条件を満たしていればAI Scanは実行される。
検出結果はプルリクエストの「Conversation」と「Files changed」に表示され、現時点では助言型の所見として扱われる。リポジトリのSecurityビューにバックログアラートとして表示されるわけではなく、rulesetのマージ要件にも利用できない。また、検出結果には偽陽性が含まれる可能性があるため、開発者による確認が必要だ。
リポジトリ全体のスキャンには対応せず、フォークからのプルリクエストやDependabotが作成したプルリクエストも対象外となる。今回の変更は、CodeQLのデフォルト設定を採用していない開発環境にも、プルリクエスト単位の補助的な脆弱性検出を導入しやすくするものだ。一方で、パブリックプレビューであることや対象範囲、ライセンス、AI creditsの消費といった条件は、導入前に確認する必要がある。