- 投毒——伺服器從第一天就是惡意的。其清單看起來無害;危險行為 在工具實現中,而不是在聲明的範圍中。
- 拉地毯式詐騙——你信任了它,然後它更改了。一個伺服器操作員悄悄添加的 新工具出現了,或一個社群登錄條目被劫持並更新以呼叫回家。
1. MCP 工具投毒如何到達你的代理
你的代理發出的每次tools/call 都透過 MCP 伺服器聲明的工具集旅行。
被投毒或被拉地毯式詐騙的伺服器以幾種方式利用那種信任:
| 向量 | 發生什麼 |
|---|---|
| 未聲明的工具 | 一個新工具出現在 tools/list 中,伺服器的清單從未聲明它。你的代理找到它並呼叫它。 |
| 被劫持的登錄條目 | 一個社群登錄列表被接管;端點現在指向攻擊者控制的伺服器。 |
| 憑證收割 | 伺服器的工具實現將收集的輸入發送到外部主機。 |
| 透過工具結果的提示注入 | 工具返回攻擊者控制的文字,將代理的下一個動作重定向。 |
2. OrcaRouter 的防禦
2.1 每次 tools/call 在執行之前都經過防火牆評估
MCP 伺服器透過防火牆 MCP 閘道在 /api/v1/firewall/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 | 任何非拒絕裁決都升級為 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佇列——自拉地毯式詐騙以來保留的任何呼叫都在佇列中。 逐一檢查並拒絕,而不是批量批准。 - 稽核呼叫日誌——檢查防火牆事件軌跡,查找在你偵測到更改之前通過的呼叫。
4. 將技能掃描與防火牆規則配對
技能掃描和防火牆規則是互補的且可以組合:- 帶有
tool_name_glob: community.*設定為pending_approval的規則確保你審查 來自社群來源伺服器的每次呼叫,無論風險等級如何。 - 隔離的技能覆蓋
allow規則——即使你的政策廣泛許可http.fetch, 擁有它的隔離技能仍然保留呼叫。 - 使用規則中的
skill_name_glob將更嚴格的政策範圍設定到不受信任的伺服器,而不影響你的第一方整合。
5. 相關威脅
防火牆:MCP 伺服器
在閘道後面登錄 MCP 伺服器,探測其工具,並在任何呼叫到達真實伺服器之前套用每呼叫裁決。
防火牆:技能
掃描和對每個可安裝能力進行風險評分。在高風險技能的工具能夠執行之前隔離或封鎖它們。
