- ポイズニング — サーバーは最初から悪意のあるものでした。マニフェストは 無害に見えました;危険な動作はツールの実装にあり、宣言されたスコープではありませんでした。
- ラグプル — あなたはそれを信頼し、その後変更されました。サーバーのオペレーターが 静かに追加した新しいツールが現れた、またはコミュニティレジストリエントリがハイジャックされて ホームへのコールを行うよう更新されました。
1. MCP ツールポイズニングがエージェントに到達する方法
エージェントが発行するすべてのtools/call は MCP サーバーの宣言されたツールセットを
通じて移動します。ポイズニングまたはラグプルされたサーバーはいくつかの方法でその信頼を
悪用します:
| ベクター | 何が起きるか |
|---|---|
| 未宣言のツール | サーバーのマニフェストが宣言しなかった新しいツールが tools/list に現れます。エージェントがそれを見つけて呼び出します。 |
| ハイジャックされたレジストリエントリ | コミュニティレジストリのリストが乗っ取られます;エンドポイントが攻撃者が制御するサーバーを指すようになります。 |
| クレデンシャルハーベスティング | サーバーのツール実装が収集した入力を外部ホストに送ります。 |
| ツール結果経由のプロンプトインジェクション | ツールがエージェントの次のアクションをリダイレクトする攻撃者が制御するテキストを返します。 |
2. OrcaRouter の防御
2.1 すべての tools/call は実行前にファイアウォール評価される
MCP サーバーは /api/v1/firewall/mcp のファイアウォール MCP ゲートウェイを通じて
エージェントに接続します。ゲートウェイはファイアウォールエンジンが
ポリシーに対して評価するまでツール呼び出しを転送しません。
つまり、あなたの許可リストが信頼の根拠です — サーバーのツールマニフェストではありません。
ラグプルが shell.exec を追加し、ポリシーにそれを許可するルールがない場合、判定は
deny であり、呼び出しはゲートウェイを離れません。モデルはツールエラー
(firewall deny: …)を受け取って反応できます;攻撃者が追加したツールは到着時に
無効化されます。
エンジンが返せる判定:
| 判定 | 効果 |
|---|---|
allow / audit | 呼び出しが転送されます;audit は追加で引数をログします。 |
sanitize | 引数が転送前に書き換えられます。 |
deny | 呼び出しがブロックされます;モデルはツールエラーを受け取ります。 |
pending_approval | 呼び出しが保留されます;人間が進める前に承認しなければなりません。 |
cap_cost | コスト上限が強制されます;超えた場合、呼び出しがブロックされます。 |
2.2 自動検出されたケイパビリティはレビューまで隔離される
エージェントがケイパビリティを自己インストールする場合 — またはラグプルがサーバーを 登録したときに存在しなかった新しいツールを追加する場合 — ファイアウォールはホットパスを 外れた新しいケイパビリティを 自動検出し、マニフェストを 合成し、スキャンし、リスクバンドと強制モードを割り当てます。重要なことに、自動検出された ケイパビリティはスキャン結果に関わらず常に隔離されます:人間がレビューするまでpending_approval に保留されます。
これがラグプルが封じ込められる方法です。オペレーターは静かに新しいツールを追加して
エージェントがそれを使用し始めることはできません — それらの呼び出しは新しいケイパビリティを
検査・承認するまで保留されます。
2.3 スキルスキャニングがリスクバンドと強制モードを割り当てる
インストール可能なすべてのケイパビリティ — 登録したものでもファイアウォールが自動検出 したものでも — はスキルスキャナーを 通過します。スキャナーはマニフェストと宣言されたスコープに対して決定的なパスを実行します:- prompt_injection — 指示をハイジャックしようとするマニフェストテキスト。
- tool_creep — マニフェストが使用するが決して宣言しないツール。
- network_egress — 承認されたネットワークスコープ外の HTTP(S) ホスト。
- fs_write_unsafe —
/tmp外の書き込みモードファイルシステムアクセス。
low / medium / high / critical)
そして強制モードに:
| モード | 実行時に起きること |
|---|---|
allow | スキルは独自のものを課しません;ポリシールールが決定します。 |
quarantine | deny 以外の判定は pending_approval にエスカレートします。人間がすべてのツール呼び出しを承認しなければなりません。 |
block | ポリシールールに関わらず、このスキルのすべてのツールに deny を強制します。 |
high バンドのスキルは自動的に隔離されます;critical はブロックされます。
ひとつの error 発見(例:未宣言の shell.exec の tool_creep)は数値スコアが
低く見えても、スキルをブロックするのに十分です。モードは締まる方向にのみラチェットします
— スキルを承認しても新しいスキャンで設定されたブロックは緩和されません。
2.4 クレデンシャルは暗号化して保存される
サーバー認証シークレットはワークスペースシークレットキーで保存時に暗号化され、 ディスパッチ時にゲートウェイによってインジェクションされます。それらはモデル、エージェント、 または呼び出し引数に決して到達しません。侵害されたサーバーは独自のauth_json を読んで
API キーを持ち出すことはできません。
サードパーティ MCP サーバーの審査チェックリスト外部 MCP サーバーを登録する前に:
- パブリッシャーのアイデンティティを確認します — エンドポイント URL を誰が管理していますか?
- ソースまたは変更ログを読みます;初期リリース後に追加された新しいツールを 探します。
- 登録時にスキルスキャンが
tool_creepまたはprompt_injectionの発見を 返すかどうかを確認します。 - 呼び出し履歴ができるまで
tool_name_glob: <server>.*でファイアウォールルールをauditまたはpending_approvalにスコープします。 -
network_egressの発見を確認します:マニフェストはひとつのドメインのみが必要だと 主張していますが、ツールの説明では他のものに言及していますか? - アップストリームのバージョンバンプの後にサーバーを再プローブします
(
POST /api/workspace/firewall/mcp_servers/:id/probe)して新しいツールを 表面化します。
3. 疑われるラグプルの後に何をするか
- すぐにサーバーを無効にします — 無効化されたサーバーはランタイムレジストリから
削除され、クレデンシャルは決して復号化されません。
"enabled": falseでPUT /api/workspace/firewall/mcp_serversを使用します。 - 変更を表面化するために再プローブします —
POST /api/workspace/firewall/mcp_servers/:id/probeはtools/listを実行し、 前回のプローブ以降に現れた新しいツールを返します。 - スキルレコードを再スキャンします —
POST /api/workspace/firewall/skills/:id/rescanが更新されたマニフェストに対してスキャナーを再実行します。判定がflaggedまたはblockedに悪化した場合、ファイアウォールはフィードにイベントを発行します。 pending_approvalキューを確認します — ラグプル以降に保留された呼び出しが キューにあります。一括承認するのではなく検査して deny します。- 呼び出しログを監査します — 変更を検出する前に通過した呼び出しについて ファイアウォールイベント証跡を確認します。
4. スキルスキャニングとファイアウォールルールをペアにする
スキルスキャニングとファイアウォールルールは補完的で構成されます:tool_name_glob: community.*でpending_approvalに設定されたルールは、 リスクバンドに関わらず、コミュニティソースのサーバーからのすべての呼び出しを 確認することを保証します。- 隔離されたスキルは
allowルールをオーバーライドします — ポリシーがhttp.fetchを広く許可していても、それを所有する隔離されたスキルは依然として呼び出しを保留します。 skill_name_globを ルールで使用して、ファーストパーティの統合に影響を与えずに信頼されていない サーバーに対してより厳格なポリシーをスコープします。
5. 関連脅威
- 危険なツール呼び出し — ソースに関わらず 破壊的または不可逆なツールアクションをブロックするルール。
- データ持ち出し — ツール呼び出しがデータを 送れる場所を制限する egress ルール。
- 脅威モデル — OrcaRouter が防御するよう設計された 完全な攻撃表面。
ファイアウォール:MCP サーバー
MCP サーバーをゲートウェイの背後に登録し、ツールをプローブし、実際のサーバーに
到達する前に呼び出しごとの判定を適用します。
ファイアウォール:スキル
すべてのインストール可能なケイパビリティをスキャンしてリスクスコアリングします。
リスクのあるスキルをツールが実行できる前に隔離またはブロックします。
