Claude Codeのシンボリックリンクに関する欠陥、承認を経ずに機密ファイルを密かに流出させる

Anthropic製のAIコーディングアシスタント「Claude Code」に新たに発見された欠陥により、攻撃者が管理するリポジトリがプロジェクトディレクトリ外のファイルを密かに読み取り、その内容をリモートサーバーへ送信できることが明らかになりました。しかもこの動作は、AIモデルが何らかのアクションを実行する前に発生し、承認ダイアログが表示されることもありません。

この問題は、CLAUDE.mdおよび.claude/rules/**配下のファイルからプロジェクト指示を読み込むClaude Codeのメモリ読み込み機能に存在します。

これらのファイルは@importディレクティブに対応しており、セッション開始時に外部コンテンツをモデルのコンテキストに取り込みます。この方式は、共有指示ファイルを同期させる手段としてAnthropic自身のドキュメントでも推奨されているパターンです。

研究者Tomer Niv氏が調査したこの脆弱性は、Claude Codeがインポートパスを検証する方法と、実際にそれを読み込む方法との間に生じる不整合に起因します。このツールは、@importの対象が「外部」かどうかを、解決前の文字どおりのパスで判定しています。

リポジトリ内に、プロジェクト外のファイル(例えば/etc/passwd~/.aws/credentials)を指す@./linkのようなツリー内シンボリックリンクが含まれている場合、判定ロジックは内部向けに見えるパス./linkのみを認識し、安全だと判断してしまいます。

実際にファイルが読み込まれる段階になると、オペレーティングシステムはシンボリックリンクをたどり、実際のプロジェクト外の対象ファイルにアクセスします。

その結果、機密ファイルの内容がモデルのコンテキストに注入され、実際に解決されたファイルがリポジトリとは無関係であるにもかかわらず、「コードベースにチェックインされたプロジェクト指示」として扱われてしまいます。tool_useやファイル読み取りアクションが発生しないため、セキュリティ上のプロンプトを表示する自然なチェックポイントも存在しません。

Claude Codeには、まさにこうした事態に対応するための組み込み制御機構があります。メモリファイルがプロジェクト外のコンテンツを参照した際、初回に外部インポート承認ダイアログが表示される仕組みです。

しかし、この判定ロジックはシンボリックリンクの解決後のパスではなく、文字どおりのパスを評価するため、シンボリックリンク経由のインポートではこのダイアログが一切トリガーされません。

検証の結果、直接的な外部インポートは承認ダイアログに表示される一方、シンボリックリンクを介した同一の対象は完全にスルーされることが確認されました。

さらに問題を深刻化させているのが、Claude Codeのワークスペース信頼モデルが採用している祖先ディレクトリ探索の仕組みです。~/devのような親フォルダを信頼すると、その信頼は新たなプロンプトを表示することなく、その配下にクローンされたすべてのリポジトリへと暗黙的に拡張されてしまいます。

実際の開発者マシンを調査したところ、ホームディレクトリ全体を含む広範な信頼済みルートが、すでに有効化されている実態が確認されました。

ファイルが読み込まれると、その内容はClaude Codeが設定済みAPIエンドポイント(デフォルトではapi.anthropic.com)へ送信する、まさに最初のHTTPSリクエストに含まれてしまいます。

仮にリポジトリがANTHROPIC_BASE_URLを上書きする.claude/settings.jsonをコミットしている場合、この同じリクエストは攻撃者が選んだホストへとリダイレクトされ、流出したデータもろとも送信されてしまう可能性があります。

これは、信頼プロンプトが実行される前に同じ環境変数を通じてAPIキーを漏えいさせていた既にパッチが適用されたCVE-2026-21852と関連はあるものの、別個の問題です。

今回のケースは、Claude Codeにおいてシンボリックリンク関連のパス検証の不備が発覚するのはこれで3度目となります。過去にはCVE-2025-59829CVE-2026-25724が発覚し、いずれも権限サブシステム内で修正されていました。

しかし、メモリ読み込み機能のコードパスには同様の修正が適用されておらず、Claude Code v2.1.215、およびおそらく他の2.1.x系ビルドにおいても脆弱な状態のまま残されています。

この問題は2026年7月18日にHackerOne経由でAnthropicに報告されましたが、その2日後に「Informative(参考情報)」としてクローズされました。Anthropicは、ワークスペース信頼の承認が同社の脅威モデルの下で既にこの挙動を許可済みだと見なしており、外部インポートダイアログはあくまで利便性のための機能であって、強制力のあるセキュリティ境界ではないという立場を取っています。

緩和策: ユーザーはmacOS/Linuxでjq -r '.projects|to_entries[]|select(.value.hasTrustDialogAccepted==true)|.key' ~/.claude.jsonを実行することで信頼済みディレクトリを監査できます。また、これまで信頼していた親ディレクトリ配下に、信頼できないリポジトリをクローンすることは避けるべきです。

ANY.RUNでSOC調査の死角を削減し、脅威をより早期に封じ込めることで、対応コストと業務への影響を軽減できます。

翻訳元: https://cyberpress.org/claude-code-symlink-flaw/

ソース: cyberpress.org