Confused Deputy問題
セキュリティにおける古典的な脆弱性パターン。権限を持つプログラム(deputy)が、その権限を悪用されて本来アクセスできないリソースへの操作を実行してしまう問題。
概要
「deputy」とは代理人・代行者の意味。正当な権限を持つプログラムが、攻撃者のリクエストを検証せずに処理することで、攻撃者が本来持たない権限で操作を実行できてしまう。
攻撃者(権限なし)
│
▼
代理プログラム(権限あり)──> 保護されたリソース
(権限チェックなし)
MCPにおける例
MCPプロキシサーバーがこの問題を起こしやすい。
脆弱なパターン:
- MCPプロキシが静的なクライアントIDで第三者認可サーバーに接続
- プロキシがクライアントからのリクエストを検証せずに転送
- 攻撃者がプロキシの権限を借りて保護リソースにアクセス
防御策:
- Per-Client Consent:クライアントごとに明示的な同意を記録
- リクエスト元の検証
- トークンのパススルー禁止(MCPサーバーは受け取ったトークンを下流に転送しない)
歴史
この用語は1988年にNorm Hardyが提唱。コンパイラサービスが課金ファイルへの書き込み権限を悪用された事例から名付けられた。