エージェントのセキュリティ
エージェントは見知らぬ人が書いたテキストを読み、あなたの認証情報を使って行動します。このページでは、基本原則、2026年版OWASPの両リスト、これまでに発生したインシデント、それらを防げたはずの対策を紹介します。
致命的な三要素
- プライベートデータへのアクセスメール、リポジトリ、データベース、ファイルなど、あなたの認証情報でアクセスできるもの。
- 信頼できないコンテンツへの接触Webページ、issue、サポートチケット、受信メール、ツールの説明など、攻撃者が書き込めるあらゆるテキスト。
- 外部との通信機能メールの送信、プルリクエストの作成、URLの取得、リモート画像の表示など。Simon Willisonは2025年6月、この3要素の組み合わせに名前を付けました。
1つのエージェントが3要素すべてを備えている場合、プロンプトインジェクションによってデータが攻撃者に渡る可能性があると考えてください。モデルが拒否することを当てにせず、すべてのエージェントとセッションから少なくとも1つの要素を取り除いてください。
セキュリティチェックリスト
入力、ツール、ランタイム、MCP、CI、運用に関する22項目のチェックリストです。確認した項目にチェックを付け、結果をMarkdownファイルとしてエクスポートできます。
インシデント記録
2025年4月以降に公表されたエージェントのセキュリティインシデントを取り上げます。それぞれの概要、攻撃が成功した理由、自分の環境で変更すべき点を解説します。
最近のインシデント
- MCP Python SDKのセッション乗っ取りとセッション間のタスクアクセス
- Claude Code の WebFetch 自動承認で huggingface.co 経由のデータ流出が可能に
- Comment and Control:PRのテキストでCIエージェントからシークレットを窃取
- MCP TypeScript SDKでクライアント間のレスポンス漏えい
- ClawHavoc:数百の悪意あるClawHubスキルがAMOSを拡散
OWASP Top 10 for Agentic Applications 2026
OWASP GenAI Security Projectが2025年12月9日に公開したリストです。モデルが計画を立て、メモリを保持し、ツールを呼び出し、ほかのエージェントと連携するようになったときに生じるリスクを取り上げています。
ASI01エージェントの目標乗っ取り攻撃者は、通常はエージェントが読むコンテンツに指示を隠すことで、エージェントの目標を変更します。エージェントはユーザーのツールと権限を使い、攻撃者の目標を追求するようになります。
ASI02ツールの誤用と悪用エージェントが操作されていたり、タスクに必要な範囲を超えるツール権限を持っていたりすると、レコードの削除、メッセージの送信、呼び出しの連鎖など、正規のツールを有害な方法で使用することがあります。
ASI03IDと権限の悪用エージェントは認証情報、委任されたトークン、継承した権限を使って動作します。攻撃者はこうしたIDやその間にある不備を悪用し、権限を昇格させたり、他人になりすまして操作したりします。
ASI04エージェントのサプライチェーンの脆弱性ビルド時または実行時に読み込まれるツール、MCPサーバー、スキル、プラグイン、モデル、プロンプトは、悪意あるものや侵害されたものである可能性があります。エージェントはこれらを動的に多数読み込むため、1つの不正なコンポーネントが、それを使うすべてのセッションに影響します。
ASI05予期しないコード実行(RCE)コードを作成して実行するエージェントや、モデルの出力をシェルやインタープリターに渡すエージェントは、攻撃者が選んだコマンドをホスト上で実行するよう誘導されるおそれがあります。
ASI06メモリとコンテキストの汚染攻撃者は、エージェントのメモリ、検索されたドキュメント、保存済みのコンテキストに、誤った事実や指示を仕込みます。最初の入力がなくなった後も汚染が残り、後続のセッションに影響します。
ASI07エージェント間通信の不備エージェント間のメッセージに適切な認証、完全性チェック、検証が行われていないと、偽装、リプレイ、改ざんによって受信側のエージェントが誤った情報を信じるおそれがあります。
ASI08連鎖的な障害汚染された入力、不正なツールの結果、侵害されたエージェントなど、ひとつの障害が連携するエージェントや自動化された処理を通じて広がり、人が気づくよりも速く影響を及ぼします。
ASI09人間とエージェント間の信頼の悪用エージェントは自信に満ち、親切な印象を与えるため、人はその提案を承認しがちです。攻撃者はその信頼を利用して、有害な操作を人に承認させたり、情報を開示させたりします。
ASI10不正エージェント侵害されたエージェントや、本来の動作から逸脱したエージェントが、与えられた範囲や監督の外で自律的に動作し続けます。
OWASP Top 10 for LLM Applications 2026
この版は2026年8月4日に公開され、2025年版に置き換わりました。「過剰な自律性」は6位から3位に上がり、「システムプロンプトの漏えい」は「隠れたコンテキストの露出」に改称されました。
LLM01プロンプトインジェクション入力によって、開発者が意図しない形でモデルの動作が変わります。ユーザーから直接与えられる場合もあれば、モデルが読み込む文書、Webページ、ツールの結果を介して間接的に与えられる場合もあります。
LLM02機密情報の漏えいモデルやアプリケーションが、学習データ、コンテキスト、接続先システムに含まれる個人データ、認証情報、企業秘密などの機密情報を出力に含めて開示します。
LLM03過剰な自律性アプリケーションが、タスクに必要な範囲を超える機能、権限、自律性をモデルに与えると、操作された出力や誤った出力が実害につながるおそれがあります。2025年の6位から、2026年には3位に上昇しました。
LLM04サプライチェーンサードパーティ製のモデル、データセット、アダプター、パッケージ、プラグインは、改ざんされたり脆弱性を含んだりする可能性があり、そのリスクをアプリケーションに持ち込みます。
LLM05データとモデルの汚染攻撃者は事前学習、ファインチューニング、埋め込みに使うデータを操作し、バックドア、バイアス、または本番環境で初めて表面化する不正な動作を仕込みます。
LLM06無制限の消費リクエスト数、入力サイズ、計算リソースに上限がないと、攻撃者は高頻度のクエリで請求額を膨らませたり、リソースを枯渇させたり、モデルを複製したりできます。
LLM07誤情報モデルがもっともらしい誤った情報や誤解を招く出力を生成し、ユーザーや後続システムが確認せずにそれをもとに行動します。
LLM08隠れたコンテキストの露出以前は「システムプロンプトの漏えい」と呼ばれていました。システムプロンプト、非公開の指示、その他ユーザーに見せるべきでないコンテキストが抽出され、そこに含まれるルール、ロジック、秘密が露出するおそれがあります。
LLM09ベクトルと埋め込みの脆弱性埋め込みの生成、保存、取得方法に欠陥があると、攻撃者がコンテンツを注入したり、テナント間でデータを漏えいさせたり、元のテキストを復元したりできます。特にRAGシステムが大きな影響を受けます。
LLM10不適切な出力処理モデルの出力が、検証やエンコードを経ずにブラウザー、シェル、データベース、その他のコンポーネントに渡されると、XSS、SQLインジェクション、コード実行、データ流出につながるおそれがあります。
防御策
出典を明記した防御策を15件紹介します。どの対策も単独ですべての攻撃を防げるわけではないため、複数を組み合わせてください。
危険な3要素を断つ
Simon Willisonのルール:エージェントが非公開データを読み取り、信頼できないコンテンツを見て、データを外部に送信できる場合、読み取ったテキストによって攻撃者に悪用されるおそれがあります。エージェントまたはセッションごとに、3要素のうち少なくとも1つを取り除いてください。たとえば、公開Issueを振り分けるエージェントには秘密情報を渡さず、秘密情報を扱うエージェントには外部への送信経路を与えません。
信頼できない入力を受けた後のエージェントを制限する
エージェントのセキュリティに関するデザインパターンの研究が示す原則はひとつです。エージェントが信頼できない入力を取り込んだ後、その入力によって重大な操作が実行されてはなりません。パターンには、action-selector、plan-then-execute、dual LLM、コンテキストの最小化があります。ワークフローごとにひとつ選びます。たとえば、エージェントが信頼できないデータを読む前に計画を確定します。
CaMeLでデータフローを追跡する
CaMeLはエージェントを2つに分けます。特権を持つプランナーはユーザーのリクエストからコードを作成し、隔離されたモデルは信頼できないデータを処理します。隔離側の値にはケイパビリティタグが付与され、ツールを実行する前にポリシーがそのタグを確認します。論文では、証明可能なセキュリティを保ちながらAgentDojoのタスクの77%を解決しました。防御なしのエージェントは84%でした。
最小権限の認証情報を使う
エージェントにはデフォルトで読み取り専用かつプロジェクト単位のアクセス権を与え、Supabaseで行レベルセキュリティを回避するadminキーやservice_roleキーは決して使わないでください。CIとリポジトリのトークンは、それぞれが実行する1つのジョブに必要な範囲に限定します。Amazon Q Developerのインシデントは、CodeBuildで過剰な権限を持つGitHubトークンが使われていたことが原因でした。
重大な操作には承認を必須にする
書き込み、削除、送信、支払いを行うツール呼び出しは人が承認するようにし、応答がない場合は安全側に倒して拒否してください。SupabaseはMCPツール呼び出しの手動承認を推奨しています。OpenClawではtools.exec.askをalwaysに設定し、askFallbackはdenyのままにします。レビュー担当者が実行内容を正確に把握できるよう、引数をすべて表示してください。
コードとツールの実行をサンドボックス化する
シェルコマンドと生成コードは、認証情報を持たず、ワークスペースだけにアクセスできるコンテナまたはVMで実行してください。OpenClawはサンドボックスがオフで、ゲートウェイホストではtools.exec.securityがfullに設定された状態で提供されます。そのため、サンドボックスを有効にし、exec securityをdenyまたはallowlistに設定し、fs.workspaceOnlyをtrueにして、elevated modeは無効のままにしてください。openclaw sandbox explainで設定を確認します。
外向きのネットワークアクセスを制限する
エージェントとMCPサーバーからの外向き通信はデフォルトですべて拒否し、各サービスに必要なホストだけを許可してください。誰でも公開できるマルチテナントホストへのfetchを自動承認してはいけません。CVE-2026-54316では、これが原因でhuggingface.coが情報流出経路になりました。postmark-mcpが示したように、メールサーバーはメールAPIだけに接続できるようにします。
コントロールプレーンをインターネットに公開しない
エージェントのゲートウェイ、ダッシュボード、デバッグプロキシはloopbackにバインドし、24文字以上のトークンを必須にしてください。たとえば、openssl rand -hex 32で生成できます。リモートからアクセスする場合はSSHトンネルまたはTailscale Serveを使い、Tailscale Funnelはパスワード認証を設定した場合に限って使用してください。openclaw security audit --deepを定期的に実行します。
MCPトークンのaudienceを検証する
MCP認可仕様では、サーバーは自分宛てに発行されていないアクセストークンを拒否する必要があり、クライアントのトークンを上流APIに転送することも禁止されています。クライアントはRFC 8707のresource indicatorを送信し、各トークンを1つのサーバーに紐付けます。プロキシサーバーは各クライアントから同意を得る必要があります。そうしないと、confused deputyになります。
MCPのセッションとテナントを分離する
複数のクライアントでひとつのインスタンスを共有せず、セッションごとに別のサーバーとトランスポートのインスタンスを作成してください。各セッションとタスクを、それを作成した認証済みプリンシパルに紐付け、すべてのリクエストでその紐付けを検証します。2026年に公開されたMCP SDKのアドバイザリは、どちらも状態の共有または紐付けの欠如が原因でした。
スキル、プラグイン、MCPサーバーを審査する
バージョンを正確に固定し、更新のたびに差分を確認して、VirusTotalなどのスキャナーの判定やClawHubのセキュリティ監査ステータスをチェックしてください。サーバーを承認するときにツールの説明をハッシュ化し、変更があれば警告するようにすれば、rug pullを検出できます。OpenClawはインストール時に組み込みのブロック機能を提供しないため、security.installPolicyは自分で設定してください。
エージェントにメッセージを送れる人を制限する
DMへのアクセスはペアリングまたは許可リストに限定し、グループチャットではメンションがある場合にのみエージェントが動作するようにしてください。session.dmScopeをper-channel-peerに設定し、送信者間でコンテキストが共有されないようにします。エージェントにメッセージを送れる人は誰でも指示を試みられるため、送信者のリストも攻撃対象領域の一部です。
信頼できないCI実行からシークレットを隔離する
プルリクエスト、issue、コメントを通じて外部の人が実行できるワークフローでは、リポジトリのシークレットを持つエージェントを実行しないでください。そうしたイベントのタイトル、説明、コメントはすべて悪意のある入力として扱います。ステップでシークレットが必要な場合は、メンテナーが実行を承認した後に限って実行してください。
モデル出力を信頼できないデータとして扱う
モデル出力を表示する前にエスケープまたはサニタイズし、検証せずにシェル、SQLクエリ、ブラウザーへ渡してはいけません。Markdown画像や外部ドメインへのリンクの自動読み込みをブロックし、厳格なContent Security Policyを設定してください。EchoLeakでは、単独で読み込まれるURLを通じてデータが外部に持ち出されました。
エージェントの署名を検証してから認可する
サイトやAPIを呼び出すエージェントを識別するには、オペレーターが/.well-known/http-message-signatures-directoryで公開している鍵を使ってWeb Bot Auth署名を検証してください。ChatGPT agentはSignature-Agent https://chatgpt.comとして署名します。有効な署名から分かるのはエージェントの運用者であり、リクエストを送ったユーザーやそのユーザーに許可された操作ではありません。そのため、リクエストごとに個別に認可してください。
エージェントのセキュリティに関する質問
AIエージェントにおけるプロンプトインジェクションとは何ですか?
プロンプトインジェクションとは、Webページ、メール、ツールの説明などにデータとして含まれていたテキストを、モデルが指示として扱ってしまうことです。エージェントでは、その指示によって、ユーザーの認証情報で実行されるツール呼び出しが引き起こされる場合があります。OWASPではLLM01:2026として分類されており、Agent Goal Hijack (ASI01)はエージェントに特有の形態を扱っています。
AIエージェントにおける「致命的な三要素」とは何ですか?
Simon Willisonが名付けたもので、非公開データへのアクセス、信頼できないコンテンツへの接触、外部と通信する手段をすべて備えたエージェントを指します。3つがそろうと、プロンプトインジェクションによってデータを読み取られ、外部に送信されるおそれがあります。2025年のSupabase MCPトークン流出は、典型的な事例です。
MCPサーバーを保護するにはどうすればよいですか?
自分のサーバー向けに発行されていないアクセストークンは拒否し、クライアントのトークンを上流APIに渡さないでください。セッションごとにサーバーインスタンスとトランスポートインスタンスを作成し、セッションとタスクを認証済みユーザーに紐付けます。クロスクライアントのレスポンス漏えいとセッションハイジャックを修正したTypeScript SDK 1.26.0以降、またはPython SDK 1.27.2以降を使用してください。
より優れたシステムプロンプトでプロンプトインジェクションを防げますか?
それに頼らないでください。エージェントの設計パターンに関する研究では、エージェントが信頼できない入力を取り込んだ後は、その入力によって重大な操作が実行されないよう制約する必要があるとされています。ケイパビリティ追跡によってこれを強制するCaMeLは、証明可能なセキュリティを保ちながらAgentDojoのタスクの77%を解決しました。防御のないエージェントは84%でした。
OWASP LLM Top 10とAgentic Top 10の違いは何ですか?
2026年版が2026年8月4日に公開されたOWASP Top 10 for LLM Applicationsは、言語モデルを基盤とするあらゆるアプリケーションのリスクを扱います。2025年12月9日に公開されたOWASP Top 10 for Agentic Applicationsは、モデルが計画を立て、ツールを使い、メモリを保持し、他のエージェントとやり取りすることで生じるリスクを扱います。エージェントを開発する場合は、通常どちらも確認する必要があります。
OpenClawのゲートウェイをインターネットに公開しても安全ですか?
いいえ。gateway.bindはデフォルトのloopbackのままにし、リモートアクセスが必要な場合はSSHトンネルまたはTailscale Serveを使ってください。OpenA2Aは2026年9月1日時点で、インターネットに公開されたゲートウェイを192,492件確認しています。また、CVE-2026-25253は、loopbackのみのインストールでも速やかなパッチ適用が必要であることを示しました。