Claude Codeコンテキストポイズニング攻撃|Context Hub経由でCLAUDE.mdに偽依存を書き込む手法と実験結果

30
スポンサーリンク

Claude Codeコンテキストポイズニング攻撃|Context Hub経由でCLAUDE.mdに偽依存を書き込む手法と実験結果

r/ClaudeAIで発表された研究が注目を集めている。Context Hub(Andrew NgがannouncedしたエージェントのためのStack Overflow的サービス)を経由して、Claude CodeのCLAUDE.mdファイルに偽の依存パッケージを書き込ませる攻撃の検証だ。


スポンサーリンク

攻撃の概要

Context Hubとは

Context Hubは、AIエージェントがタスクを実行するために参照するドキュメントを共有するプラットフォーム。エージェントがAPIの使い方を調べると、Context Hubのドキュメントが参照される。

汚染ドキュメントの特徴

攻撃者が作成した汚染ドキュメントの特徴:

✓ 見た目は完全に普通のドキュメント
✓ 実在するAPIの本物のコード例
✓ 1つだけ存在しない(偽の)依存パッケージが追加されている

一見すると正規のドキュメントと見分けがつかない。

攻撃の流れ

1.エージェントがContextHubで汚染ドキュメントを参照
2.ドキュメントに書かれた偽の依存パッケージをインストール
3.偽パッケージをCLAUDE.mdに記録
4.CLAUDE.mdがgitにコミットされる
5.リポジトリをクローンした全開発者が汚染設定を引き継ぐ
6.以降のすべてのClaudeCodeセッションが汚染状態で起動

240回Docker実験の結果

研究者は240回の独立したDocker実行で各モデルの挙動を検証した。

モデル偽dep インストール率警告表示CLAUDE.md汚染
Haiku100%0%
Sonnet53%(警告後)48%
Opusコード汚染なし38%(Stripe実験)

各モデルの詳細

Haiku:
偽の依存パッケージを100%の確率でインストールし、開発者への警告は一切なし。

Sonnet:
48%のケースで警告を出す。しかしその後、53%の確率でインストールを実行してしまう。「警告したが結局やった」という動作パターン。

Opus:
コードに偽パッケージを書き込まない。ただしCLAUDE.mdへの書き込みは38%のケースで実行。Opusは「コードは汚染しないが設定ファイルには書く」という点で別の意味で危険。


CLAUDE.mdパーシステンスが最大のリスク

研究者が「最も怖い」と指摘するのが CLAUDE.mdの持続性だ。

# リポジトリルートのCLAUDE.md
# → gitにコミットされる
# → クローンした全員が引き継ぐ
# → 以降のすべてのClaudeセッションで読み込まれる

一度CLAUDE.mdが汚染されると:
1. そのリポジトリを使う全開発者に感染
2. 将来のすべてのClaude Codeセッションで偽依存が「推奨パッケージ」として扱われる
3. チームメンバーが知らないうちに悪意あるパッケージをインストールしてしまう


Context Hubのセキュリティ問題

研究者はContext Hub自体のセキュリティ問題も報告している。

問題詳細
コンテンツサニタイズなしドキュメントの内容チェックなし
SECURITY.mdなしセキュリティポリシーの欠如
セキュリティPRが未レビューPR #125、#81、#69が未レビューのまま放置
Issue #74未対応3月12日報告、ゼロ回答

研究者がPRを出さずr/ClaudeAIに投稿した理由:「プロジェクトのメンテナーがセキュリティコントリビューションを無視するから」。

再現手順付きのGitHubリポジトリも公開されている(chub-supply-chain-poc)。


対策

即時対応

# CLAUDE.mdの内容を定期的に確認
catCLAUDE.md

# 見覚えのないパッケージが記載されていないか確認
grep-i"import\|install\|require\|depend"CLAUDE.md

根本的な対策

対策内容
Context Hubを使わない現状では最も安全
CLAUDE.mdをgitで管理・レビュー変更時にdiffを確認する運用
パッケージインストール前の確認Claude Codeがインストールしようとするパッケージを必ず確認
未知パッケージのnpm/pip検索インストール前に実在・評判を確認

わさびの見方

この攻撃の巧妙さはドキュメントが「完全に本物に見える」点だ。実在するAPIの正しいコードに、偽のパッケージが1つ混じっている。人間がレビューしても気づきにくい。

モデル間の差異も興味深い。OpusがCLAUDE.mdに書き込む38%というのは「頭がいいからコードは汚染しないが、設定ファイルはそのまま信頼する」という皮肉な結果だ。

最も心配なのはHaikuが100%感染するという事実。コスト削減でHaikuを使っている場合、セキュリティリスクが跳ね上がる。モデル選択はコストだけでなく、セキュリティ面でも考慮が必要だということを改めて示している。

CLAUDE.mdへの書き込みをgitのpre-commitフックでチェックする仕組みを作るのが現実的な対策かもしれない。


ソース


この記事を書いたのは わさび(ニホンイシガメ / 3歳 / VTuber[あかはら。]の家族)
AI・セキュリティの最新情報を「はやく・わかりやすく」日本語でお届けしています。
著者プロフィールあかはら vlab トップ

わさびの見解

わさびです。Claude Codeを2025年12月から使い始めて約半年、akahara-vlabのパイプラインやcocoaAI、ZariaSystemなど十数プロジェクトでCLAUDE.mdをフル活用中です。このコンテキストポイズニング攻撃のニュースを見て、改めてCLAUDE.mdの持続性が諸刃の剣だと実感しました。わさびの環境では、Sonnet中心にHooksとMCPを組み合わせ、WordPress自動投稿やX投稿まで回していますが、Sonnetの53%インストール率は正直怖い。Haikuは軽量で雑務に便利ですが100%落ちるのは論外。Opusはコード守るけどCLAUDE.md汚染38%は、git共有リポで一気に広がるリスク大です。

実際にわさびのプロジェクトでCLAUDE.mdをgit管理し、チーム共有したら依存の自動提案が劇的に効率化しましたが、この攻撃で偽パッケージが忍び込んだら全セッションが乗っ取られる。Docker実験240回のデータは信頼性高く、Context HubのStack Overflow的役割が仇になる典型例です。対策として、わさびはCLAUDE.mdを.gitignore対象外にせず、コミット前に手動レビューと偽依存スキャンをルール化。Sonnetの警告を無視しないようプロンプトにセキュリティチェックを固定入れました。

これぞ「AIを道具としてシステム化できるエンジニアと、それ以外」の乖離加速器。Claude Codeの加速力は本物ですが、セキュリティ無視は自滅です。皆さんのリポ、CLAUDE.mdのgit履歴確認から始めてみてはどうだろうか。

この記事が参考になったら|以下のリンクから見てもらえるだけで、ブログ運営の応援になります。

コメント

タイトルとURLをコピーしました