【ITニュース解説】GitHub Copilot CLI Could Be Hijacked via a Nested Bare Git Repo (CVE-2026-45033)
2026年09月09日に「Dev.to」が公開したITニュース「GitHub Copilot CLI Could Be Hijacked via a Nested Bare Git Repo (CVE-2026-45033)」について初心者にもわかりやすく解説しています。
ITニュース概要
GitHub Copilot CLIにセキュリティ上の脆弱性が見つかった。プロジェクト内に悪意あるGitリポジトリが仕込まれると、Copilot CLIが裏でGit操作を行う際、ユーザーの許可なく任意のプログラムが実行される恐れがあった。この問題はバージョン1.0.43で修正済みだ。
ITニュース解説
GitHub Copilot CLIという、プログラマーのコーディング作業を強力に支援するAIツールに、重要なセキュリティ上の問題が発見された。この脆弱性により、悪意のある攻撃者が、ユーザーに気づかれることなくCopilot CLIを通じて任意のコマンドを実行させることが可能になるというものだった。この問題はCVE-2026-45033として識別され、セキュリティ上の危険度を示すCVSSスコアは8.5(危険度「高」)と評価されている。これは、攻撃が成功した場合に、システムに深刻な影響を及ぼす可能性があることを示している。
この脆弱性の核心は、広く使われているバージョン管理システムであるGitの特定の動作と、Copilot CLIがGitをどのように利用しているかにあった。Gitは、ソフトウェア開発においてコードの変更履歴を管理し、複数の開発者間での共同作業を可能にするための重要なツールだ。Gitリポジトリとは、プロジェクトのコードと履歴が保存されている場所を指す。通常、開発者がコードを編集する際には、作業ディレクトリと結びついたリポジトリを使う。しかし、Gitには「ベアリポジトリ」という特殊なタイプのリポジトリも存在する。これは作業ディレクトリを持たず、純粋に履歴データのみを保存するもので、主にリモートサーバー上での共有やバックアップに用いられる。
Gitの仕組みの一つに、ディレクトリツリーを走査(スキャン)してベアリポジトリを自動的に発見し、その中に記述された設定を適用するという機能があった。そして、その設定項目の中にcore.fsmonitorというものがあった。このcore.fsmonitorは、git statusやgit diffといった、Gitの基本的なファイルの状態確認操作などで、インデックス(Gitが管理するファイルの状態を示す情報)が更新される際に、Git自身が自動的に特定のプログラムを実行するように指定できる設定項目なのだ。この機能は、大規模なプロジェクトでファイルの変更を効率的に監視するために設計されたものだが、今回の脆弱性ではこの点が悪用される可能性があった。
具体的な攻撃シナリオは次のようになる。まず、攻撃者は開発者が利用するプロジェクトの内部、例えば依存関係のライブラリが置かれるvendorディレクトリのような場所に、malicious.git/といった形式で悪意のあるベアリポジトリを潜り込ませることを試みる。このような潜入は、オープンソースプロジェクトへの変更提案(プルリクエスト)を通じて行われたり、信頼していた依存ライブラリが実は攻撃者によって侵害されていたり、あるいはCopilot CLIがたまたま参照するディレクトリのどこかに仕込まれたりするなど、様々な経路が考えられる。
一度悪意のあるベアリポジトリがプロジェクト内に仕込まれると、攻撃者はそのベアリポジトリの内部に、core.fsmonitor設定を仕込む。この設定には、攻撃者が開発者のコンピューター上で実行させたい任意のコマンドが記述される。そして、開発者がGitHub Copilot CLIを使って作業を開始し、Copilot CLIが自身の機能のためにバックグラウンドでGitの操作、例えばプロジェクト内のファイルの状態を確認するためのgit statusのようなコマンドを自動で実行した瞬間に、この罠が発動する。Copilot CLIがGit操作を行う際、Gitはディレクトリツリー内を探索し、自動的に潜んでいるベアリポジトリを発見する。そして、その中のcore.fsmonitorに記述された攻撃者のコマンドを、開発者が全く意識することなく実行してしまうのだ。
この攻撃の最も危険な点は、「ユーザーによる何らかのインタラクション(操作)が一切不要」というところにある。開発者は、プロンプトに何かを入力したり、特定のボタンをクリックしたり、承認ダイアログで許可したりする必要がない。ただCopilot CLIを使い、Copilot CLIが自身の機能のためにバックグラウンドでGit操作を行っただけで、悪意のあるコマンドが実行される可能性があるのだ。これにより、攻撃者は開発者のコンピューター上で情報を盗み出したり、さらに別の悪質なプログラムをインストールしたりと、様々な不正行為を行うことが可能となる。
この脆弱性はGitHub Copilot CLIのバージョン1.0.42までが影響を受けたが、GitHubは迅速に対応し、バージョン1.0.43でこの問題を修正済みである。修正内容は、Gitの設定項目であるsafe.bareRepositoryの値をexplicitに設定することだった。この設定は、Gitの自動的なベアリポジトリ発見機能を完全に無効にするもので、これにより、意図しないベアリポジトリの設定が適用されるのを防ぐことができるようになった。
この脆弱性が注目されるのは、いくつかの理由がある。まず、これはGitHub自身が開発・提供する製品に関するセキュリティ勧告であり、その信頼性が非常に高いこと。そして、既に修正されている点も重要だ。さらに、これまでに報告されてきたGitHub Copilot関連のセキュリティ脆弱性の多くは、AIモデルが生成するコードの内容や、モデルが読み取る情報に対する「プロンプトインジェクション」と呼ばれるタイプの攻撃だった。例えば、見えない特殊文字を仕込んでCopilotに悪意のあるコードを生成させたり、Copilotが漏洩した認証情報を誤って補完として提案したり、チャット機能を通じて機密情報が外部に抜き取られたりといった事例がこれに該当する。
しかし、今回の脆弱性はこれらとは性質が全く異なる。これは、Copilot CLIのAIモデルが「何を推論するか」や「何を生成するか」といった部分ではなく、「ツールが自身のタスクを遂行するためにバックグラウンドで実行するGitコマンドの振る舞い」そのものを攻撃するものだった。つまり、AIモデルの知的な判断は一切関与せず、ツールが便利であるためにGit操作を行う必要性があることと、Gitがディレクトリツリー内に見つけた任意の構成設定を適用してしまうという、既存の技術の特性の間に存在する隙間を突いたものだ。この問題は、AIモデルがどれほど賢くなっても自動的には解決しないタイプの脆弱性であり、GitHubが行ったような、「ツールがデフォルトで信頼する範囲を狭める」という、根本的なセキュリティ対策が必要とされることを示している。
この事例は、単に一つのAI開発ツールに脆弱性が見つかったという話に留まらない。今後、AIを活用した開発ツールがさらに普及する中で、それらのツールが背後で利用する既存のインフラやライブラリ、そしてその連携方法におけるセキュリティリスクにも注意を払う必要があるという重要な教訓を与えている。AIの「賢さ」だけでなく、それを支える土台部分の堅牢性も、常に注意深く検証し、安全性を確保していく必要があるのだ。