関連記事
GitHub Copilot、コミット前のコードをAIでスキャンする新コマンド「/security-review」をパブリックプレビュー公開

(Github.com)[写真拡大]
GitHubは2026年7月14日、CopilotデスクトップアプリにAIを活用したコミット前の脆弱性スキャン機能「/security-review」コマンドを追加した。この機能はパブリックプレビューとして提供され、Freeプランを含むすべてのCopilotサブスクライバーが利用可能である。開発者がコードをコミットする前に、セキュリティ上の欠陥をその場で検知して修正を促すことを目的としている。
■開発中のコードをコミット前にAIスキャン
GitHubの公式Changelogによると、同社は2026年7月14日、Copilotデスクトップアプリに「/security-review」スラッシュコマンドを導入した。これにより、ターミナルの操作や実験的モードへのオプトインを必要とせず、Freeプランを含むすべてのCopilotサブスクライバーが、コミット前のAI駆動型脆弱性スキャンを初めて利用できるようになった。
この機能が提供されたタイミングは偶然ではない。GitHub Copilotは現在、世界最大のAI生成コードの供給源となっている。しかし、Veracodeが発表した「2025 GenAI Code Security Report」(80の代表的なプログラミングタスクにおいて100以上の大規模言語モデルをテストした調査)によると、AIが生成したコードの45%に少なくとも1つのOWASP(Open Web Application Security Project)基準の脆弱性が混入しているという。つまりGitHubは、開発者のマシンに脆弱性を含む可能性のあるAI生成コードを最も多く送り出している存在であると同時に、それがプルリクエストに到達する前に阻止するためのコミット前ツールを提供する存在にもなったということだ。
■技術的な仕組みと検知対象
GitHubのChangelogによると、開発者がCopilotアプリで「/security-review」と入力すると、コマンドは現在作業中のワークストリームの差分(コミットされていない開発中のコード変更)を収集する。そして、そのコンテキストをGitHubのクラウド型Copilotモデルルーティングインフラに送信し、LLM(大規模言語モデル)による推論を実行して、深刻度と信頼度でスコアリングされた優先順位付きの検出結果リストを返す仕組みとなっている。
スキャンが対象とするのは、インジェクション欠陥(SQLインジェクションやシェルインジェクションを含む)、クロスサイトスクリプティング(XSS)、安全でないデータ処理、パストラバーサル、脆弱な暗号化の5つの影響度が大きい脆弱性クラスだ。これらは、Webアプリケーションセキュリティの業界標準である「OWASP Top 10」に直接対応しており、Veracodeの調査でAI生成コードに最も頻繁に混入することが判明した脆弱性カテゴリと一致している。
なお、このコマンドはGitHubの既存のセキュリティインフラを代替するものではない。GitHub Code Scanningの静的解析エンジンである「CodeQL」は、コードベースのセマンティックグラフを使用してリポジトリ全体でタイント解析やデータフロー追跡を行う。また、「Dependabot」は既知の依存関係の脆弱性を処理し、シークレットスキャンは資格情報の露出を処理する。「/security-review」はこれらの処理を一切行わない。CVE(共通脆弱性識別子)データベースとの照合や、複数ファイルにまたがるタイント解析、依存関係のスキャンは行わず、開発者が書いたばかりのコード変更の文脈を推論することに特化している。これにより、開発者が「何をしようとしていたか」という思考コンテキストを完全に保持している状態で、その場で問題を指摘できるとTechTimesは過去のCLI版に関する報道で指摘している。
■LLM推論のメリットと限界:何が検知され、何が見落とされるか
Semgrep、CodeQL、Snyk Codeといった従来の静的アプリケーションセキュリティテスト(SAST)ツールは、ソースコードを既知の脆弱性パターンのルール(データフローグラフ、タイントトレース、パターンシグネチャなど)と照合することで動作する。例えばSQLインジェクションのルールは、サニタイズされていないユーザー入力がデータベースクエリに到達する箇所を特定する。しかし、InfoWorldが報じた研究によると、単体のSASTの適合率は約35.7%にとどまり、検出されたアラートの大部分が誤検知(偽陽性)であるとされている。StrangeBeeが引用した2023年の調査でも、日常的なセキュリティアラートの約83%が誤報であり、最終的に67%のアラートが完全に無視されているという実態が示されている。
GitHubの「/security-review」は、このルールエンジンをLLM推論に置き換える。LLMはコードが「何をしようとしているか」という意図を推論できるため、技術的には有効だがセマンティクス(意味論)的に脆弱な暗号実装など、既知のルールパターンに一致しない脆弱性も捉えることができる。しかし、文脈的推論を可能にする確率的アーキテクチャは、同時にハルシネーション(幻覚)も引き起こす。LLMベースのレビューとCodeQLを比較した研究が示すように、モデルの推論チェーンにエラーがあると、安全なコードを脆弱であると誤判定する可能性がある。
これに対するGitHubの設計上のアプローチは、信頼度の高い検出結果のみを表示することだ。これにより再現率(網羅性)を犠牲にして適合率(正確性)を高めている。つまり、差分(diff)に含まれる実際の一部の脆弱性は出力に表示されない可能性があるが、表示されたものは本物の問題である可能性が高い。また、ツールのスコープは意図的に狭められており、フルコードベースではなくコミットされていない現在の差分のみを参照する。そのため、モジュール境界を越えてデータを追跡する必要がある複数ファイルにまたがる脆弱性経路は視野の外となる。この制限は、TechTimesによるCLI版リリース時の報道でも詳しく説明されている。
2025年9月のarXivの論文によると、LLMベースのレビューとCodeQLを直接比較した研究では、両ツールが互いに補完し合う形で異なる失敗をすることが示されている。CodeQLはコード構造のセマンティック解析に優れている一方、LLMベースのレビュアーは言語に依存せず、幅広い文脈で人間のような解説を提供できる。しかし、LLMは確率的な性質を持つため、新しい脆弱性パターンや難読化されたパターンに対して一貫性を欠くことがある。どちらのツールも、もう一方が検知できるものをすべてカバーできるわけではない。GitHubが「/security-review」をCodeQLの代替ではなく補完ツールとして位置づけているのは、この現実を反映したものだ。
■シフトレフト:なぜスキャンのタイミングが重要なのか
「/security-review」の背景にある考え方は、ソフトウェア工学において確立された「シフトレフト」の原則だ。コードがコミットされる前に検出されたセキュリティ欠陥は、CIパイプラインで検出されるよりも修正コストが安く、コードレビュー時や本番環境で検出されるよりもさらに安価に済む。IBM Systems Sciences Instituteの研究によると、メンテナンスフェーズで欠陥を修正するコストは、設計フェーズで修正する場合の100倍に達するという。
従来のセキュリティスキャンは通常、プルリクエストの段階以降で実行される。開発者がCodeQLやセキュリティチームのコードレビューから検出結果を受け取る頃には、すでに別の作業に移っており、脆弱な変更を加えた当時の具体的な文脈を忘れてしまっていることが多い。また、コードがすでに共有ブランチにマージされていることもある。IDE、ターミナル、またはデスクトップアプリでのコミット前スキャンは、開発者が該当するコードにアクティブに関わっている最中に問題を提示することで、このギャップを埋める。
GitHubのChangelogによると、34日前にリリースされたCLI版のアプローチと比較して、今回のCopilotアプリ版が優れている点は「ワークフローの統合」である。開発者はターミナルに戻ったり別のツールを開いたりすることなく、同じCopilotのインターフェース内で修正案を適用し、再検証を行うことができる。また、CLI版では実験的モードの有効化が必要だったが、アプリ版ではデフォルトでコマンドが利用可能になっており、プレビュー版の開発者ツールにありがちな「一度試して忘れられる」という導入の障壁を排除している。
■セキュリティスタックの強化を進めるGitHub
「/security-review」アプリのリリースは、単独で行われたわけではない。同じ週にGitHubは、コードスキャンアラート向けの「エージェント型自動修正(agentic autofix)」のパブリックプレビューを開始した。これは、検出されたCodeQLアラートをCopilotに割り当て、Copilotがコードベースを探索して修正案を提案し、CodeQLを再実行して検証した上で、人間がレビューするためのドラフトプルリクエストを作成する、より強力な別ツールである。修正の生成には2〜4分かかり、プルリクエストにはCopilotが何をなぜ変更したかの要約と、実行した検証手順が記載される。
さらに同日、CodeQL 2.26.0がリリースされ、AIシステムのプロンプトインジェクションを検出するために設計された新しいJavaScriptおよびTypeScriptクエリが追加された。これは、エージェント型ワークフローが一般的になる前には、SASTの対象として名前すら存在しなかった脆弱性クラスだ。AIツールによって導入される脆弱性をCodeQLがスキャンする一方で、「/security-review」がコミット前にAIツールを使って脆弱性をスキャンするという構図は、GitHubが構築した多層防御(LLMベースのコミット前トリアージ、プッシュ後のCodeQL検出、各レイヤーでのAI支援による修正)を象徴している。
■企業向けセキュリティの補完であり、代替ではない
GitHubは、「/security-review」が何ではないかを明確にしている。これは「GitHub Advanced Security(GHAS)」を代替するものではなく、CodeQLのクエリ言語が可能にする深いセマンティック解析を行うものでもなく、依存関係におけるサプライチェーンの脆弱性に対処するものでもない。エンタープライズや規制の厳しい業界のチームにとって、CodeQL駆動のコードスキャン、シークレットスキャン、Dependabotを含むGHASは、依然として包括的なセキュリティ体制に必要な基準ラインである。
「/security-review」が提供するのは、企業のセキュリティツールが通常届かない開発ワークフローの段階(コードがコミットされる前、パイプラインに入る前、そしてコードを書いた開発者の思考コンテキストが途切れていない時点)における、第一段階のトリアージレイヤーだ。スキャンは数秒で完了し、検出結果には修正案が添えられる。開発者はセキュリティダッシュボードに切り替えたり、チケットを発行したりすることなく、その場で問題に対処して次の作業に進むことができる。
ただし、このワークフローの利便性には既知の注意点がある。スキャンを実行するLLMは、誤検知を生成するモデルと同じカテゴリのものである。また、Copilot自身のセキュリティ履歴には、修正済みの2つの重大な脆弱性が存在する。1つは2025年にプロンプトインジェクションを介してプライベートソースコードを密かに外部流出させることを可能にした「CamoLeak」(CVE-2025-59145、CVSS 9.6)、もう1つはOrca Securityが2026年2月に公開したGitHub Codespacesにおける受動的なプロンプトインジェクションの欠陥「RoguePilot」だ。いずれも修正済みだが、研究者たちは現在もこの脆弱性クラスの新しいバリエーションを発見し続けている。「/security-review」を使用する開発者は、このツール自体が攻撃対象領域の上で動作していること、具体的には、スキャン対象のファイルに悪意のあるコンテンツが埋め込まれていた場合、Copilotモデルに送信される差分データが理論上操作される可能性があることを理解しておく必要がある。
■新コマンドの試行方法
Free、Pro、Business、EnterpriseプランのすべてのGitHub Copilotサブスクライバーは、現在のパブリックプレビュー期間中に「/security-review」を使用できる。GitHub Copilotデスクトップアプリでプロジェクトを開き、コードを変更した上で、チャットインターフェースに「/security-review」と入力する。コマンドは現在の作業中の差分をスキャンし、深刻度と信頼度でランク付けされた検出結果を、アプリを離れることなく適用・再検証できるインラインの修正提案とともに返す。
GitHubは、GitHub Communityのディスカッションページを通じてパブリックプレビューのフィードバックを収集している。
■注目ポイントQ&A
●GitHub Copilotの「/security-review」は、CodeQLやGitHub Advanced Security(GHAS)とどう違うのですか?
CodeQLは、コードベース全体の抽象セマンティックグラフを構築し、宣言型ロジック言語を使用してクエリを実行することで、タイント解析、複数ファイルにまたがるデータフロー追跡、CVEに準拠した検出を可能にします。一方、「/security-review」はコミットされていない現在の差分(diff)のみを対象にLLM推論を使用するため、複数ファイルにまたがるタイント追跡やCVEデータベースとの照合は行いません。また、CodeQLはコードがプッシュされた後に実行されますが、「/security-review」はコミット前に実行されます。GitHubはこれらを代替手段ではなく、開発ワークフローの異なる段階をカバーする補完的なツールと位置づけています。
●無料のCopilotプランでも「/security-review」コマンドは使えますか?
はい、使えます。パブリックプレビュー期間中は、Free、Pro、Business、Enterpriseの4つのCopilotサブスクリプション層すべてで「/security-review」コマンドを利用できます。標準のCopilotアカウント以外に追加のライセンスやサブスクリプションは必要ありません。
●「/security-review」で実際に検出できる脆弱性と、検出できないものは何ですか?
このコマンドは、インジェクション欠陥(SQLやシェルインジェクションなど)、クロスサイトスクリプティング(XSS)、安全でないデータ処理、パストラバーサル、脆弱な暗号化を検出するように調整されています。これらはOWASP Top 10に対応しており、AI生成コードで最も一般的な脆弱性です。ルールベースではなくLLM推論を使用するため、従来のルールエンジンが見落とす文脈的・意味的な問題を検出できます。一方で、複数ファイルにまたがるデータフローの追跡、CVEデータベースとの照合、依存関係のスキャンは行えません。また、コミットされていない現在の差分のみを参照し、信頼度の高い検出結果のみを表示するため、実際の脆弱性の一部が表示されない可能性があります。
●AIコードを生成するツールが、なぜAIコードの脆弱性をスキャンする必要もあるのですか?
Veracodeの「2025 GenAI Code Security Report」によると、セキュリティに敏感なプログラミングタスクにおいて、AIが生成したコードの45%に少なくとも1つのOWASP脆弱性が混入していることが判明しています。CopilotのようなAIコーディングツールによってコードの生成速度が加速するにつれ、コミット時に持ち込まれる脆弱なコードの量も比例して増加します。コミット前スキャンは、生成モデルが混入させた脆弱性を、共有ブランチやCIパイプラインに到達する前にその場で検知して対処するためのアーキテクチャ上のアプローチです。
元記事: GitHub Copilot App Now Scans In-Flight Code for Vulnerabilities Before Commit
※この記事はTech Timesから提供を受けた記事を日本向けに翻訳・編集したものです。
スポンサードリンク

