Claude Code、Cursor、Grok BuildなどのAIコーディングアシスタントは、開発者が信頼できないリポジトリを開いた瞬間に、クリックやプロンプトなしで任意のコマンドを実行できてしまいます。この欠陥は、これらのツールがプロジェクトのファイルをスキャンするためにGitの core.fsmonitor 機能を利用する方法に起因しています。
なぜ今、この問題が重要なのか
開発者は、コードの提案、関数のリファクタリング、あるいはモジュール全体の作成をAIエージェントに頼ることが増えています。これらのエージェントはワークスペースの素早いスナップショットを必要とするため、バックグラウンドで git status を実行します。Gitがリポジトリの .git/config ファイルを読み取るとき、core.fsmonitor に割り当てられた値は、Gitが実行するシェルコマンドとして扱われます。悪意のある攻撃者がその設定エントリに細工したコマンドを配置すると、ユーザーがコードを一行も入力する前に、AIによるバックグラウンドのGit呼び出しがそれをトリガーしてしまいます。
このコードは開発者自身の権限で実行されるため、AIエージェントが通常動作しているサンドボックスをバイパスしてしまいます。実際には、侵害されたリポジトリによって、開発者が単にアシスタントが提案を行っていると考えている間に、マルウェアのインストール、認証情報の流出、あるいはソースファイルの改ざんが行われる可能性があります。
攻撃の仕組み
- 準備 – 攻撃者が、
.git/configにcore.fsmonitor = /path/to/malicious/scriptのような行を含むリポジトリを作成します。 - 配布 – リポジトリがzipファイルとして渡されたり、USBメモリからコピーされたり、共有ドライブを通じて同期されたり、あるいは
.gitフォルダが既に存在する状態で被害者のマシンに配置されたりします。 - トリガー – 開発者がAI対応のIDEでフォルダを開きます。アシスタントはコンテキストを収集するために
git statusを実行します。Gitはローカルの設定を読み込み、core.fsmonitorコマンドを実行し、悪意のあるスクリプトが即座に実行されます。
通常の git clone ではこのリスクは露呈しません。なぜなら、クローンによって細工された設定のない新しい .git ディレクトリが作成されるからです。この攻撃は、攻撃者が既存の .git フォルダを提供できる場合にのみ成立します。
リスクの内容
- 個々の開発者は、気づかないうちにマシンを侵害され、AIエージェントがアクセスできるあらゆるデータを失う可能性があります。
- チームが内部ドライブや請負業者のzipファイルを通じてコードを共有している場合、ペイロードが多くのワークステーションに拡散する恐れがあります。
- ツールベンダーは、ユーザーが侵害の原因を(Gitの動作ではなく)AIアシスタントのせいだと判断した場合、レピュテーション(評判)の低下を招くリスクがあります。
悪意のあるコマンドはユーザーの権限を継承するため、SSHキー、ビルドスクリプト、デプロイメント用の認証情報など、開発者が変更できるあらゆるファイルを変更できます。
開発者が今日から取れる対策
ローカルのGit設定を信頼しない。AIアシスタントがプロジェクトにクエリを投げるたびに、リポジトリの設定がグローバルな値を上書きします。
アシスタントを使ってフォルダを開く前に、
core.fsmonitorエントリを検査する:git config --get core.fsmonitor何らかの値が表示された場合は、不審なものとして扱ってください。
次のコマンドでエントリを削除する:
git config --local --unset core.fsmonitorGitが実行可能な他のリスクのあるキーをチェックする:
hooksPath、sshCommand、pager、editor、filter。同じgit config --getパターンを使用して、これらが空であることを確認してください。AIツールに読み込ませるコードについては、クリーンなクローンを優先する。zipファイルや転送されたフォルダを使用せざるを得ない場合は、
.gitディレクトリを削除してリポジトリを再初期化するか、上記のチェックを最初に行ってください。
責任の所在
この脆弱性は、Claude Code、Cursor、Grok Buildを動かしている言語モデルの欠陥ではなく、それらのツールがファイル情報を収集する方法に起因するものです。一部のベンダーはGit呼び出しをより厳格にサンドボックス化し始めていますが、デフォルトの動作では依然としてローカルのリポジトリ設定を信頼しています。AIエージェントがワークスペースをスキャンする際に、潜在的に危険な設定エントリを削除または無視する標準規格が業界で採用されるまでは、開発者が最後の防衛線とならなければなりません。
今後の注目点
git statusを呼び出す前にGit設定を明示的にサニタイズ(浄化)するツールのアップデート。- 安全なAI支援開発のためのコミュニティ主導のガイドライン(推奨される事前チェックが含まれる可能性があります)。
- 上記の5つに加えて、コード実行が可能な追加のGit設定キーを発見する可能性のあるセキュリティ研究。
結論として、AIアシスタントは便利なペアプログラマーになり得ますが、リポジトリのGit設定に隠されたコマンドであれば、喜んで実行してしまいます。アシスタントに触れさせる前に、ワークスペースを検証してください。
