Claude Code に鍵を渡した。そしてワームも渡してしまった。
AIコーディングエージェントは、ジェイルブレイクされているわけではない。彼らは、まさにあなたが構築した通りに動いているのだ。彼らはあなたの認証情報を使用してコマンドを実行する。問題は、攻撃者がその入力を提供できてしまうことにある。
最近の脆弱性は、これが起こる3つの異なる方法を示している。
- サプライチェーン・ワーム Mini Shai-Hulud と呼ばれるワームが、170以上のパッケージに影響を与えた。これは単に鍵を盗んで立ち去るだけではない。自身のコードを構成ファイルに書き込むのだ。.vscode/tasks.json や .claude/settings.json に潜伏する。これらのファイルは、フォルダを開いたりセッションを開始したりする際に、コードを自動的に実行する。たとえ悪意のあるパッケージを削除したとしても、悪意のあるフックはディスクに残ったままになる。
- アローリスト(許可リスト)のバイパス Cursor エディタは、自動実行を安全にするためにアローリストを使用している。攻撃者は、export のようなシェルの組み込みコマンドを使用して、これを回避する方法を見つけた。プロンプトインジェクションを利用することで、攻撃者はエージェントに汚染された環境変数を設定させることができる。これにより、承認済みのコマンドが、意図しない挙動を示すようになる。このセキュリティ制御が失敗したのは、それが機械ではなく人間向けに構築されていたからだ。
- プロトコルの欠陥 mcp-remote プロキシには、重大なコマンドインジェクションの脆弱性がある。悪意のある MCP サーバーに接続すると、ハンドシェイク中にマシン上でコマンドが実行される可能性がある。これは、クライアントが接続先のサーバーを信頼してしまうために起こる。
根本的な問題は単純だ。コーディングエージェントは、データとコマンドの境界線を消し去ってしまう。LLM は、指示と外部データを同じものとして扱う。あなたがエージェントに伝えることと、世界がエージェントに伝えることの間に境界は存在しない。
身を守る方法:
- 環境変数には、長期間有効な鍵ではなく、短期間有効なトークンを使用する。
- シークレットや本番環境に触れるタスクについては、自動実行をオフにする。
- .claude/settings.json のような構成ファイルに、予期しない変更がないか監視する。
- プロベナンス(由来)の証明は、安全性の証明ではなく、出所の証明として扱う。
- 依存関係を特定のハッシュ値にピン留めする。
AI エージェントを、他のあらゆる高権限プロセスと同様に扱うこと。厳格な境界が必要だ。
エージェントを自動実行モードで運用している場合、いつ動作を許可し、いつ停止させるかをどのように判断するか?
出典: https://dev.to/kkierii/i-gave-claude-code-the-keys-so-did-a-worm-34a4
オプションの学習コミュニティ: https://t.me/GyaanSetuAi