0:00 0:00
記事
GitHub「AI Scan」が一般提供開始——CodeQL非対応のPHPやDockerfileもPRで脆弱性診断
GitHubがプルリクエスト向けのAI Scanを一般提供開始しました。CodeQLが対応しない言語・フレームワークの変更も自動でスキャンし、修正案付きの指摘をPR上に表示します。
GitHubが公式Changelogで、プルリクエスト向けのセキュリティ診断機能「AI Scan for pull requests」の一般提供を開始したと発表しました。これまでCodeQLが対応していなかった言語やフレームワークの変更に対しても、AIベースの脆弱性診断を自動で行う機能です。PHPやShell/Bash、Terraform(HCL)、Dockerfile、JavaのJSP、C#のBlazorなど幅広い範囲をカバーするとしています。
CodeQLを置き換えるのではなく補完する位置づけ
AI Scanは、コードスキャンとリポジトリ側のAI Scan設定がいずれも有効になっているプルリクエストで自動的に実行されます。重要なのは、既存のCodeQLを置き換えるものではなく、あくまで補完する機能という位置づけである点です。CodeQLが得意とする静的解析の精度はそのまま維持しつつ、CodeQLのクエリが用意されていない言語やインフラ定義ファイルまで診断範囲を広げることで、PR全体のセキュリティレビューの抜け漏れを減らす狙いがあるとみられます。GitHubのチームは今回の一般提供に先立ち、9月にはAPIを通じた有効化・無効化のパブリックプレビューを公開しており、組織やリポジトリ単位で段階的に導入を進めやすい形を整えてきました。
「Conversation」「Files changed」タブに統合表示
AI Scanの指摘は、プルリクエストの「Conversation」タブと「Files changed」タブの両方に、CodeQLの指摘と並ぶ形で表示されます。CodeQLによる検出結果と見分けがつくよう、指摘には「AI」のラベルが付きます。指摘にはリスクの説明と、その場で適用できる修正案が添えられることもあり、開発者はPRを離れることなく脆弱性の内容を理解し、提案された修正を確認できます。

画像引用元: GitHub Changelog
指摘はあくまで参考情報、マージのブロックには使えない
GitHubは今回の発表で、AI Scanの指摘が「advisory(参考情報)」である点を明確にしています。CodeQLのアラートとは異なり、AI Scanの指摘はコードスキャンのチェックを失敗させることはなく、ルールセットを使ってマージをブロックする条件にも使用できません。また、フォークからのプルリクエストやDependabotが作成するプルリクエストでは実行されないという制限もあります。誤検知のリスクが残るAI生成の指摘を、いきなり強制力のあるゲートにはしないという慎重な設計がうかがえます。
公開リポジトリは無償、非公開リポジトリは有償プランが必要
利用条件も整理されています。組織または個人アカウントが所有する公開リポジトリでは無償で利用できる一方、組織所有の非公開・内部リポジトリで使うにはGitHub Code SecurityまたはGitHub Advanced Securityのライセンスが必要です。GitHub Copilotのライセンスは必須ではありません。利用量は「Code Security AIクレジット」として消費され、エンタープライズの課金・ライセンス管理画面の「AI usage」セクションにAdvanced Securityの製品として表示されます。管理者はSKU単位で予算の上限を設定できるため、コストをコントロールしながら段階的に適用範囲を広げることが可能です。
セキュリティ担当者が見ておきたいポイント
すでにCodeQLでコードスキャンを運用しているチームにとっては、AI Scanをオンにするだけで、これまで解析対象外だったDockerfileやインフラ定義ファイルまでレビューの網をかけられるようになる点が大きな変化です。一方で指摘はマージをブロックしないため、重大な指摘を見落とさないための運用ルール、たとえばAIラベル付きの指摘を人間のレビュアーが必ず目視確認するといった社内フローを合わせて整備しておく価値がありそうです。非公開リポジトリで使う場合はAdvanced Securityのライセンス費用とAIクレジットの消費量を踏まえ、まずは重要度の高いリポジトリから試験導入してみるのが現実的な進め方といえるでしょう。
AI Scan for pull requests generally available
Code scanning AI Scan for pull requests is now generally available. It complements CodeQL by finding vulnerabilities in pull request changes for languages and frameworks that CodeQL does not currently…