# エージェンティックセキュリティのすべて 簡潔ガイド

_everything claude code / research / security_

---

前回の記事から少し間が空きました。ECCの開発ツールエコシステムの構築に時間を費やしていました。その間のホットかつ重要なトピックの1つがエージェントセキュリティです。

オープンソースエージェントの広範な普及が来ています。OpenClawなどがあなたのコンピュータ上で動作します。Claude CodeやCodex（ECCを使用）のような継続実行ハーネスは攻撃対象面を拡大します。そして2026年2月25日、Check Point Researchが「これは起こりうるが起こらない / 大げさだ」という議論のフェーズを終わらせるべきClaude Codeの開示を公開しました。ツールがクリティカルマスに達し、エクスプロイトの重大性は倍増しています。

1つの問題、CVE-2025-59536（CVSS 8.7）は、プロジェクトに含まれるコードがユーザーがトラストダイアログを受け入れる前に実行されることを可能にしました。もう1つのCVE-2026-21852は、攻撃者が制御する`ANTHROPIC_BASE_URL`を通じてAPIトラフィックをリダイレクトし、トラストが確認される前にAPIキーを漏洩させることを可能にしました。必要だったのは、リポジトリをクローンしてツールを開くだけでした。

私たちが信頼するツールは、同時に標的にされるツールでもあります。それがシフトです。プロンプトインジェクションはもはや面白いモデルの失敗や面白いジェイルブレイクのスクリーンショットではありません（下に面白いものを1つ共有しますが）。エージェンティックシステムでは、シェル実行、シークレット露出、ワークフローの悪用、あるいは静かなラテラルムーブメントになりえます。

## 攻撃ベクトル / サーフェス

攻撃ベクトルは本質的にすべてのインタラクションのエントリーポイントです。エージェントが接続するサービスが多いほど、リスクが蓄積されます。エージェントに供給される外部情報がリスクを増大させます。

### 攻撃チェーンと関与するノード / コンポーネント

![Attack Chain Diagram](./assets/images/security/attack-chain.png)

例えば、あなたのエージェントがゲートウェイレイヤーを介してWhatsAppに接続されているとします。攻撃者があなたのWhatsApp番号を知っています。既存のジェイルブレイクを使ってプロンプトインジェクションを試みます。チャットにジェイルブレイクをスパムします。エージェントがメッセージを読み、指示として受け取ります。プライベート情報を明かすレスポンスを実行します。エージェントがroot権限、広範なファイルシステムアクセス、または有用な認証情報を持っている場合、あなたは侵害されています。

Good Rudiジェイルブレイクのクリップのような、人々が笑うもの（面白いのは認めますが）でさえ、同じクラスの問題を指しています：繰り返しの試行、最終的に機密情報の露出、表面上はユーモラスですが根底にある失敗は深刻です — つまり、これは子供向けに作られたものですから、ここから少し推測すれば、なぜこれが壊滅的になりうるかの結論にすぐ到達するでしょう。モデルが実際のツールと実際のパーミッションに接続されている場合、同じパターンはさらに遠くまで行きます。

WhatsAppはほんの一例です。メール添付ファイルは巨大なベクトルです。攻撃者がプロンプトが埋め込まれたPDFを送信し、エージェントが仕事の一環として添付ファイルを読み、有益なデータであるべきテキストが悪意ある指示になります。OCRを行っている場合、スクリーンショットやスキャンも同様に危険です。Anthropic自身のプロンプトインジェクション研究では、隠しテキストと操作された画像を実際の攻撃素材として明示的に挙げています。

GitHub PRレビューもターゲットです。悪意ある指示は隠れたdiffコメント、Issue本文、リンクされたドキュメント、ツール出力、さらには「親切な」レビューコンテキストに潜むことができます。上流にボット（コードレビューエージェント、Greptile、Cubicなど）を設定しているか、下流でローカルの自動化アプローチ（OpenClaw、Claude Code、Codex、Copilotコーディングエージェント等）を使用している場合、低い監視と高い自律性でPRをレビューすることは、プロンプトインジェクションの攻撃対象面リスクを増大させ、そのエクスプロイトであなたのリポジトリの下流にいるすべてのユーザーに影響を与えます。

GitHub自身のcoding-agentの設計は、その脅威モデルの静かな認知です。書き込みアクセスを持つユーザーのみがエージェントに作業を割り当てられます。低権限のコメントはエージェントに表示されません。隠し文字はフィルタリングされます。プッシュは制約されます。ワークフローは依然として人間が**承認して実行**をクリックする必要があります。

MCPサーバーはまったく別のレイヤーです。偶然脆弱になったり、設計上悪意があったり、単にクライアントから過度に信頼されたりする可能性があります。ツールはコンテキストを提供するように見せかけながらデータを流出させることができます。OWASPがまさにこの理由でMCP Top 10を公開しています：ツールポイズニング、コンテキストペイロードによるプロンプトインジェクション、コマンドインジェクション、シャドウMCPサーバー、シークレット露出。

Simon Willisonの「致死的三連鎖」のフレーミングは、これについて考える最もクリーンな方法です：プライベートデータ、信頼できないコンテンツ、外部通信。3つすべてが同じランタイムに存在すると、プロンプトインジェクションは面白いものではなくなり、データ流出になり始めます。

## Claude Code CVE（2026年2月）

Check Point Researchは2026年2月25日にClaude Codeの調査結果を公開しました。問題は2025年7月から12月の間に報告され、公開前にパッチが適用されました。

重要なのはCVE IDと事後分析だけではありません。ハーネスの実行レイヤーで実際に何が起きているかを私たちに明らかにしています。

**CVE-2025-59536。** プロジェクトに含まれるコードがトラストダイアログが受け入れられる前に実行される可能性がありました。NVDとGitHubのアドバイザリーはこれを`1.0.111`より前のバージョンに関連付けています。

**CVE-2026-21852。** 攻撃者が制御するプロジェクトが`ANTHROPIC_BASE_URL`をオーバーライドし、APIトラフィックをリダイレクトし、トラスト確認前にAPIキーを漏洩させる可能性がありました。NVDは手動更新者は`2.0.65`以降にすべきとしています。

**MCP同意の悪用。** Check Pointは、リポジトリ制御のMCP設定とセッティングが、ユーザーがディレクトリを有意義に信頼する前にプロジェクトMCPサーバーを自動承認できることも示しました。

## 過去1年で変わったこと

この議論は2025年と2026年初頭に急速に進みました。

Snykの2026年2月のToxicSkills研究は3,984の公開スキルをスキャンし、36%にプロンプトインジェクションを発見、1,467の悪意あるペイロードを特定しました。スキルはサプライチェーンアーティファクトとして扱ってください。なぜならそれがまさにその通りだからです。

## リスクの定量化

頭に入れておくべきクリーンな数値：

| 統計 | 詳細 |
|------|------|
| **CVSS 8.7** | Claude Codeフック / トラスト前実行の問題：CVE-2025-59536 |
| **31社 / 14業界** | Microsoftのメモリポイズニングレポート |
| **3,984** | SnykのToxicSkills研究でスキャンされた公開スキル |
| **36%** | その研究でプロンプトインジェクションが含まれるスキル |
| **1,467** | Snykが特定した悪意あるペイロード |
| **17,470** | Hunt.ioが露出していると報告したOpenClawファミリーインスタンス |

## サンドボックス

root権限は危険です。広範なローカルアクセスは危険です。同じマシン上の長寿命の認証情報は危険です。「YOLO、Claudeがカバーしてくれる」は正しいアプローチではありません。答えは分離です。

### まずアイデンティティを分離

エージェントに個人のGmailを渡さないでください。`agent@yourdomain.com`を作成してください。メインのSlackを渡さないでください。ボットユーザーまたはボットチャネルを作成してください。個人のGitHubトークンを渡さないでください。短寿命のスコープトークンまたは専用のボットアカウントを使用してください。

エージェントがあなたと同じアカウントを持っている場合、侵害されたエージェントはあなたそのものです。

### 信頼できない作業は分離環境で実行

信頼できないリポジトリ、添付ファイルの多いワークフロー、または多くの外部コンテンツを取り込むものは、コンテナ、VM、devcontainer、またはリモートサンドボックスで実行してください。

Docker Composeまたはdevcontainerを使用して、デフォルトでエグレスなしのプライベートネットワークを作成：

```yaml
services:
  agent:
    build: .
    user: "1000:1000"
    working_dir: /workspace
    volumes:
      - ./workspace:/workspace:rw
    cap_drop:
      - ALL
    security_opt:
      - no-new-privileges:true
    networks:
      - agent-internal

networks:
  agent-internal:
    internal: true
```

`internal: true`が重要です。エージェントが侵害されても、明示的にルートを与えない限りフォンホームできません。

### ツールとパスを制限

```json
{
  "permissions": {
    "deny": [
      "Read(~/.ssh/**)",
      "Read(~/.aws/**)",
      "Read(**/.env*)",
      "Write(~/.ssh/**)",
      "Write(~/.aws/**)",
      "Bash(curl * | bash)",
      "Bash(ssh *)",
      "Bash(scp *)",
      "Bash(nc *)"
    ]
  }
}
```

## サニタイゼーション

LLMが読むものはすべて実行可能なコンテキストです。テキストがコンテキストウィンドウに入ると、「データ」と「命令」の間に有意義な区別はありません。

### 隠しUnicodeとコメントペイロード

```bash
# ゼロ幅およびbidi制御文字
rg -nP '[\x{200B}\x{200C}\x{200D}\x{2060}\x{FEFF}\x{202A}-\x{202E}]'

# HTMLコメントまたは疑わしい隠しブロック
rg -n '<!--|<script|data:text/html|base64,'
```

### モデルが見る前に添付ファイルをサニタイズ

実用的なルール：
- 必要なテキストのみを抽出
- 可能な場合はコメントとメタデータを除去
- ライブ外部リンクを特権エージェントに直接供給しない
- タスクが事実抽出の場合、抽出ステップとアクション実行エージェントを分離

## 承認境界 / 最小限のエージェンシー

モデルはシェル実行、ネットワーク呼び出し、ワークスペース外への書き込み、シークレット読み取り、ワークフローディスパッチの最終権限であるべきではありません。

ローカルにコピーしてください：
- サンドボックス外のシェルコマンド前に承認を要求
- ネットワークエグレス前に承認を要求
- シークレットを含むパスの読み取り前に承認を要求
- リポジトリ外への書き込み前に承認を要求
- ワークフローディスパッチまたはデプロイメント前に承認を要求

## 可観測性 / ロギング

少なくとも以下をログ：
- ツール名
- 入力のサマリー
- 触れたファイル
- 承認の決定
- ネットワーク試行
- セッション / タスクID

```json
{
  "timestamp": "2026-03-15T06:40:00Z",
  "session_id": "abc123",
  "tool": "Bash",
  "command": "curl -X POST https://example.com",
  "approval": "blocked",
  "risk_score": 0.94
}
```

## キルスイッチ

グレースフルキルとハードキルの違いを知ってください。`SIGTERM`はプロセスにクリーンアップの機会を与えます。`SIGKILL`は即座に停止します。

プロセスグループをキルしてください、親だけではなく。親だけをキルすると、子プロセスは実行し続けます。

## メモリ

永続メモリは便利です。同時にガソリンでもあります。

メモリを狭く保ってください：
- メモリファイルにシークレットを保存しない
- プロジェクトメモリとユーザーグローバルメモリを分離
- 信頼できない実行後にメモリをリセットまたはローテーション
- 高リスクワークフローでは長寿命メモリを完全に無効化

## 最低限のチェックリスト

2026年にエージェントを自律的に実行する場合、これが最低ラインです：
- エージェントのアイデンティティを個人アカウントから分離
- 短寿命のスコープ付き認証情報を使用
- 信頼できない作業はコンテナ、devcontainer、VM、またはリモートサンドボックスで実行
- デフォルトでアウトバウンドネットワークを拒否
- シークレットを含むパスからの読み取りを制限
- 特権エージェントが見る前にファイル、HTML、スクリーンショット、リンクコンテンツをサニタイズ
- サンドボックス外のシェル、エグレス、デプロイメント、リポジトリ外書き込みに承認を要求
- ツール呼び出し、承認、ネットワーク試行をログ
- プロセスグループキルとハートビートベースのデッドマンスイッチを実装
- 永続メモリを狭く使い捨て可能に保つ
- スキル、フック、MCP設定、エージェント記述子を他のサプライチェーンアーティファクトと同様にスキャン

## クロージング

エージェントを自律的に実行している場合、もはやプロンプトインジェクションが存在するかどうかは問題ではありません。存在します。問題は、モデルが価値あるものを保持しながら最終的に敵対的なものを読むことをランタイムが想定しているかどうかです。

それが今使うべき基準です。

悪意あるテキストがコンテキストに入ることを前提に構築する。
ツールの説明が嘘をつく可能性を前提に構築する。
リポジトリがポイズニングされる可能性を前提に構築する。
メモリが間違ったものを永続化する可能性を前提に構築する。
モデルが時折議論に負ける可能性を前提に構築する。

そして、その議論に負けても生き残れるようにする。

1つのルールが欲しいなら：**利便性レイヤーが分離レイヤーを追い越すことを許さない。**

その1つのルールで驚くほど遠くまで行けます。

セットアップをスキャン：[github.com/affaan-m/agentshield](https://github.com/affaan-m/agentshield)

---

## 参考文献

- Check Point Research, "Caught in the Hook: RCE and API Token Exfiltration Through Claude Code Project Files" (2026年2月25日): [research.checkpoint.com](https://research.checkpoint.com/2026/rce-and-api-token-exfiltration-through-claude-code-project-files-cve-2025-59536/)
- NVD, CVE-2025-59536: [nvd.nist.gov](https://nvd.nist.gov/vuln/detail/CVE-2025-59536)
- NVD, CVE-2026-21852: [nvd.nist.gov](https://nvd.nist.gov/vuln/detail/CVE-2026-21852)
- Anthropic, "Defending against indirect prompt injection attacks": [anthropic.com](https://www.anthropic.com/news/prompt-injection-defenses)
- Claude Code docs, "Settings": [code.claude.com](https://code.claude.com/docs/en/settings)
- Claude Code docs, "MCP": [code.claude.com](https://code.claude.com/docs/en/mcp)
- Claude Code docs, "Security": [code.claude.com](https://code.claude.com/docs/en/security)
- Claude Code docs, "Memory": [code.claude.com](https://code.claude.com/docs/en/memory)
- Simon Willison プロンプトインジェクションシリーズ / 致死的三連鎖フレーミング: [simonwillison.net](https://simonwillison.net/series/prompt-injection/)
- Snyk, "ToxicSkills: Malicious AI Agent Skills in the Wild": [snyk.io](https://snyk.io/blog/toxicskills-malicious-ai-agent-skills-clawhub/)
- OWASP MCP Top 10

---

まだ前のガイドを読んでいない方は、ここから始めてください：

> [Everything Claude Code 簡潔ガイド](https://x.com/affaanmustafa/status/2012378465664745795)
>
> [Everything Claude Code 長文ガイド](https://x.com/affaanmustafa/status/2014040193557471352)

以下のリポジトリも保存してください：
- [github.com/affaan-m/everything-claude-code](https://github.com/affaan-m/everything-claude-code)
- [github.com/affaan-m/agentshield](https://github.com/affaan-m/agentshield)
