自衛のためのサイバー攻撃の仕組み講座(AI時代・エンジニア水準)

区分4 AIとエージェントを狙う攻撃★★★

No.11 エージェントとMCPの守り(権限・確認・分離)

AIに道具を持たせた時に、何が新しい入口になるのかを、権限・確認・分離の3つで整理する回です。No.10で見た「文を命令と取り違える」弱点が、道具を通して現実の被害になる所を扱います。数字や名前は2026年10月時点の公式資料のものです。
目次
  1. 第0章 前提知識
  2. 第1章 持たせすぎの3つの形
  3. 第2章 MCP サーバーという新しい入口
  4. 第3章 Claude Code で効かせる守り
  5. 自分の環境を点検する
  6. 確認問題

第0章 前提知識

① 言葉の意味

② なぜ「道具を持ったAI」は別物なのか 必ず覚える

道具のない会話AIが騙されても、出てくるのは変な文章だけです。 道具を持ったAIが騙されると、あなたの権限で、実際に操作が起きます。

事務所のたとえで言えば、手紙を読むだけの受付係と、印鑑と通帳を預けた事務員の違いです。 同じ「だまされやすさ」でも、後者は被害が桁違いになります。

OWASP は、この点を2つの資料で整理しています。

名前を暗記する必要はありません。どちらも「AIに持たせすぎた権限」が問題の中心、と覚えれば十分です。

第1章 持たせすぎの3つの形

① 機能・権限・自律の3つ 必ず覚える

LLM06 の説明では、持たせすぎは次の3つに分けられます。

形 意味 あなたの環境の例
機能が多すぎる 使わない道具まで入れている ファイルを読むだけの用なのに、削除や送信の道具も入っている
権限が大きすぎる 道具の裏の鍵が強すぎる 読み取りで足りるのに、管理者の鍵を渡している
自律が大きすぎる 人の確認なしに重い操作をする 送信や支払いが毎回自動で通る

直し方も3つに対応します。道具を減らす・鍵を弱くする・重い操作で人を挟む、です。

② よくある勘違い さらっと

○ 「プロンプトで『危ない操作はしない』と頼んであるから大丈夫」と書いてあったら×。頼みごとは文章であり、権限の代わりにはなりません(No.10の第1章)
○ 「許可の画面が出るから大丈夫」と書いてあったら△。毎回の確認が多いと、人は読まずに押すようになります(確認疲れ)。確認は数を絞って効かせます

第2章 MCP サーバーという新しい入口

① 3つの攻められ方 必ず覚える

MCP の公式仕様(最新版は2025-11-25)には、セキュリティのページがあります。 ここでは、あなたが使う側として知っておくべき型を3つに絞ります。

2つ目の「説明文が命令になる」は、ツールの説明が最初に承認された時と、後の更新で変わってしまうことがある、という点まで含めて「見張る」対象です。 作り方や具体的な文面はここでは扱いません。見抜く側の視点だけ持っていれば十分です。

② 仕様が求めている守り さらっと

MCP の公式仕様のセキュリティ節は、開発者向けに次のことを求めています(一部は「望ましい」という強さです)。 あなたが自分で MCP サーバーを作る場合や、他人の物を選ぶ時の判断材料になります。

「素通し」は、受付が預かった他人の合鍵を、確認せずにそのまま奥の部屋に渡す状態です。 後ろの部屋の持ち主から見ると、誰が何をしたかが分からなくなります。

第3章 Claude Code で効かせる守り

① 許可のルールは「拒否→確認→許可」の順 必ず覚える

Claude Code の許可は、settings.json(Claude Code の設定ファイル)の permissions に allow・ask・deny で書きます。 評価は拒否→確認→許可の順で、最初に当たった物が採用されます。

なお、Bash(...)(コマンドを実行する道具の許可や拒否を書く書き方。かっこの中に対象のコマンドを書く)の拒否は、書かれたコマンドの文字に当てはまる物を止める仕組みです。 同じ動きを別の書き方で出されると外れることがあるので、公式も「これは壁ではない」としています。 本気で止めたいなら、後で出る分離(OSの隔離=サンドボックス)と組み合わせます。

② 確認を置く場所は「書く・送る・お金」だけ 必ず覚える

確認を全部に置くと、人は読まずに押します。 道具を3つの段に分けて、確認を置く場所を決めます。

段 例 初期設定のおすすめ
読むだけ 一覧を取る・検索する 自動で許可してよい
書く(元に戻せる) メモを書く・下書きを作る 自動か、まとめて確認
送る・消す・お金が動く メッセージ送信・削除・請求・支払い 毎回確認(ask)にする

「まとめて確認」とは、1回ごとには聞かず、作業がひと区切りついた所で、変更の一覧を1度に見て承認することです。元に戻せるので、これで足ります。

この表は、ご自身の環境の道具(Addness・freee・UTAGE など)を、1つずつ当てはめる時の型です。 「取り消せない物」を毎回確認に置く、という一点だけは外さないでください。

③ プロジェクトの設定を信用しすぎない 必ず覚える

知らない人のリポジトリを開くと、その中の .claude/settings.json や .mcp.json に、許可や MCP サーバーの設定が入っていることがあります。 Claude Code は、対話の画面では次の備えを持っています。

ただし、画面を出さずに動かす claude -p(指示を1回だけ実行して終わる、Claude Code の動かし方)では、これらの確認が出ません。 自動化で動かすフォルダは、中身をあなたが先に読んで確かめた物だけにします。

④ 分離と、機密の置き場 さらっと

自分の環境を点検する

読むだけの点検です。

  1. claude mcp list で、入れている MCP サーバーを全部出す。それぞれ「誰が作った物か」「起動コマンドは何か」を1行ずつ書く
  2. ~/.claude/settings.json と、よく使うプロジェクトの .claude/settings.json を開き、allow に入っている物を読む。送信・削除・支払いが自動で通る物が無いかを見る
  3. 自動化(VPSのボット、LINEボット、定期実行)に渡している鍵を一覧にする。各鍵が「読み取りだけ」か「書き込みもできる」かを書く
  4. 見つかった「強すぎる鍵」を、弱い鍵に差し替える順番を決める

頼み方の例:「claude mcp list の結果と settings.json の permissions を読んで、送信・削除・支払いが確認なしで通る道具を表にして。設定は変えないで」

道具を持ったAIは、騙されると本当に操作が起きる。問題は機能・権限・自律の持たせすぎ。拒否→確認→許可の順で、送る・消す・お金は毎回確認。部品は出所と起動コマンドを読み、鍵は最小にして自動化ごとに分ける。

確認問題

問1 「読み取りで足りる作業なのに、管理者の鍵を渡している」は、LLM06 の持たせすぎの3つのうちどれですか?

問2 `settings.json` で、ある道具を `allow` に、同じ道具を別の設定ファイルの `deny` に書きました。結果はどうなりますか?

問3 次の道具のうち、毎回の確認を置くべきなのはどれですか?

問4 画面を出さずに `claude -p` で自動化を動かす時の注意として、正しいのはどれですか?

出典(2026年10月時点で確認):MCP 公式仕様 2025-11-25 版「Security Best Practices」(https://modelcontextprotocol.io/specification/2025-11-25/basic/security_best_practices)/Anthropic「Claude Code Security」(https://code.claude.com/docs/en/security)/「Configure permissions」(https://code.claude.com/docs/en/permissions)/OWASP Top 10 for LLM Applications 2025「LLM06 Excessive Agency」(https://genai.owasp.org/llm-top-10/)/OWASP GenAI Security Project「Top 10 for Agentic Applications」(https://genai.owasp.org/resource/owasp-top-10-for-agentic-applications-for-2026/)