自己完結型の使い捨て可能なラボで、GHSA-fg94-h982-f3mm / CVE-2026-54316 を再現します。Claude Code が huggingface.co を WebFetch ツールの ベアホスト名 として事前承認していたため、そのドメイン上の あらゆる パス(攻撃者が管理するモデルリポジトリを含む)が 許可プロンプトなしで 取得されていました。プロンプトインジェクションと組み合わせることで、データ流出のための帯域外チャネルとなり、HuggingFace のサーバー側ダウンロード数を通じて観測可能です。
| アドバイザリ | GHSA-fg94-h982-f3mm |
| CVE | CVE-2026-54316 |
| パッケージ | @anthropic-ai/claude-code (npm) |
| 影響を受けるバージョン | >= 0.2.54, < 2.1.163 |
| 修正バージョン | 2.1.163 |
| 根本原因 | マルチテナントホストにおけるベアホスト名の許可リスト登録 (CWE-183) |
これは、教育および防御目的のために、修正済みで公開されている脆弱性を再現します。自分が所有するインフラストラクチャに対してのみ使用してください。
fixtures/canary.env) です — 実際のものは絶対に使用しないでください。huggingface.co のパスを承認プロンプトなしで取得しますが、他のすべてのドメインではプロンプトが表示されます — huggingface.co がハードコードされた許可リストにあるためです。コンテナが脆弱性のあるバージョンを実行する唯一の場所です。ホストはクリーンなままです。Claude サブスクリプショントークンで認証します(APIキーは不要):
docker build -t cve-2026-54316-lab .
docker run --rm -it cve-2026-54316-lab
コンテナ内で claude を実行し、「Claude account with subscription」 を選択して対話的にログインします。脆弱性のある 2.1.162 は CLAUDE_CODE_OAUTH_TOKEN 環境変数よりも前のバージョンであるため、ここでは setup-token は使用されません — インタラクティブなブラウザ/コード貼り付けフローにより、長期有効なトークンは一切発行されません。
ポイントは ドメインごとの承認プロンプトの非対称性 です。WebFetch は 利用可能 なまま(拒否されていない)で、承認はデフォルトでプロンプトによって処理されます。コンテナ内で claude を実行し:
WebFetch を使用して
https://example.comを取得し、要約してください。
→ example.com を承認するよう求める許可プロンプトが表示されます。次に:
WebFetch を使用して
https://huggingface.co/<あなたのアカウント>/canary-lab/resolve/main/config.jsonを取得してください。
脆弱性あり: huggingface.co の取得は プロンプトなしで 実行されますが、example.com ではプロンプトが必要でした。この非対称性がバグです — huggingface.co はハードコードされた許可リストにあります。(このテストでは HF リポジトリは存在する必要はありません。401/404 でもプロンプトが表示されなかったことが証明されます。)@anthropic-ai/[email protected] で再ビルドすると、huggingface.co の取得でもプロンプトが表示されるようになります — その前後が要点です。
./scripts/make_hf_canary_files.sh ./hf-repo を実行し、hf-repo/ を自分が所有する公開 HuggingFace リポジトリ (<your-account>/canary-lab) にプッシュします。payloads/untrusted-readme.md を編集し、HF_ACCOUNT を設定して、エージェントが信頼できない入力として読み取る場所に配置します。Dockerfile — 脆弱性のある 2.1.162 に固定.claude/settings.json — 許可/拒否リストが空なので WebFetch がドメインごとにプロンプトを表示するfixtures/canary.env — ダミーのカナリアscripts/make_hf_canary_files.sh — HF カナリアファイルのレイアウトpayloads/untrusted-readme.md — プロンプトインジェクションペイロード (サニタイズ済み)