新たに公開されたAnthropicのClaude Codeにおけるセキュリティ問題により、悪意あるプルリクエストが、以前に信頼したリポジトリ内でAIコーディングアシスタントを開くだけで、開発者のワークステーション上で攻撃者が制御するコマンドを実行できる可能性があることが分かりました。
この問題は、リポジトリまたはワークスペースが信頼された後に、プロジェクトスコープのModel Context Protocol(MCP)設定が読み込まれる仕組みに起因しています。
セキュリティ研究者のKevin Breen氏の報告によると、Claude Codeはセッション開始時にリポジトリルートの.mcp.jsonファイルを自動的に処理します。
この設定でローカルMCPサーバーが定義されている場合、Claude Codeは利用可能なツールを列挙するために、指定されたプロセスを起動します。これは、ユーザーがプロンプトを入力したり、そのコマンドを明示的に承認したりする前に行われる可能性があります。
Claude Codeは、信頼されていないプロジェクトが強力なローカル機能にアクセスすることを防ぐために設計された、ワークスペース信頼モデルを採用しています。
しかし、開発者が一度リポジトリを信頼すると、その信頼は後にチェックアウトされる設定やコンテンツにも及ぶとされており、これには外部プルリクエストに関連付けられたブランチも含まれます。
そのプルリクエストで追加された悪意ある.mcp.jsonにより、Claude Codeの初期化時にローカルコマンドが自動的に起動される可能性があります。
この攻撃は、必ずしもプロンプトインジェクションやユーザーの操作、認証済みのClaudeアカウントに依存しているわけではありません。その代わりに、最初のワークスペース判断の後にClaude Codeが信頼するものとして扱うプロジェクト設定を悪用します。
同様の調査により、コーディングエージェントの信頼メカニズムが、リポジトリ側で制御可能なMCP設定を通じて、開発者をコマンド実行のリスクにさらす可能性があることが判明しています。
MCPは、AIアシスタントが外部ツールやサービスに接続できるようにする仕組みです。リモートMCPサーバーは通常HTTPエンドポイントを使用しますが、ローカルMCPサーバーはオペレーティングシステムのプロセスとして起動されます。
プロジェクトスコープの設定では、リポジトリがClaude Codeに実行させるコマンドとその引数を指定できます。
攻撃者は、コードレビューでの精査を避けるために、こうしたエントリをブラウザテストツールやデータベース、テレメトリ、コンテナ統合といった、よくある開発者向けツールに偽装する可能性があります。
実際に実行されるコマンドは、第二段階のペイロードを取得したり、信頼されていないパッケージを起動したり、ローカルで利用可能なインタープリタを呼び出したりする可能性があります。
このプロセスは開発者の既存のユーザー権限で実行されるため、悪用に成功すると、環境変数、ソースコード、クラウド認証情報、SSH鍵、APIトークン、そしてローカルに保存されたClaude設定が露出する恐れがあります。
この潜在的な影響は、メンテナー、本番環境へのアクセス権を持つ開発者、そして信頼されていないプルリクエストを処理するCI環境にとって、特に深刻なものとなります。
Breen氏の公開情報によると、Anthropicはこの挙動を「設計通りの動作」に分類しました。同社の見解は、フォルダ信頼のプロンプトを承認することが、リポジトリの設定と、その後の信頼されたワークスペースへのコンテンツのチェックアウトを許可することになる、というものです。
この解釈は、開発ツールで一般的に使われているワークスペース信頼モデルと合致しています。しかし研究者らは、コードを閲覧することと自律的なコーディングエージェントを起動することの違いを考慮できていないと指摘しています。
他の公開研究でも、リポジトリ側で制御可能な設定や、信頼確立前の実行経路に関わるClaude Codeの欠陥が文書化されており、エージェント設定ファイルのセキュリティ上の機微性が改めて浮き彫りになっています。
Claude Codeを利用する組織は、.mcp.jsonや.claude/、および関連するエージェント設定ファイルを、実行可能コードとして扱うべきです。
開発チームは、プルリクエストのブランチをチェックアウトまたは開く前にエージェント設定の変更をレビューし、未レビューのMCP定義を含むリポジトリでのClaude Code起動を避け、プルリクエストのレビューは使い捨ての仮想マシン内で分離して行うべきです。
また組織は、CIランナーが信頼されていないプルリクエストのコンテンツに対してエージェント型ツールを実行することを防ぎ、設定ファイルに予期しないnpx、Docker、シェル、PowerShell、またはネットワーク実行に関するエントリがないか監視すべきです。
ANY.RUNのブラウザ内データ検査で、検知・調査・対応をより迅速に。フィッシングの完全な可視化を実現し、SOCを強化してMTTRを削減しましょう
翻訳元: https://cyberpress.org/claude-code-rce-flaw-pull-requests-execute-commands/