跳轉到主要內容
第三方 MCP 伺服器或安裝的技能是供應鏈依賴項。兩種失敗模式突出:
  • 投毒——伺服器從第一天就是惡意的。其清單看起來無害;危險行為 在工具實現中,而不是在聲明的範圍中。
  • 拉地毯式詐騙——你信任了它,然後它更改了。一個伺服器操作員悄悄添加的 新工具出現了,或一個社群登錄條目被劫持並更新以呼叫回家。
兩種威脅共享一個根本原因:在你說「我信任這個伺服器」之後,你的代理繼續 呼叫其工具——即使是新的或修改的——沒有進一步的審查。

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.exectool_creep)就足以封鎖技能, 即使其數字分數看起來很低。模式只會越來越嚴格——批准技能永遠不會放鬆由新鮮掃描設定的封鎖。

2.4 憑證以加密方式儲存

伺服器驗證密鑰在靜態時以工作區密鑰加密,並在派發時由閘道注入。 它們永遠不會到達模型、代理或呼叫引數。被攻擊的伺服器無法通過讀取自己的 auth_json 來外洩你的 API 金鑰。
第三方 MCP 伺服器審查清單在登錄外部 MCP 伺服器之前:
  • 驗證發行者的身份——誰控制端點 URL?
  • 閱讀來源或更新日誌;查找初始發佈後添加的新工具。
  • 檢查技能掃描在登錄時是否返回任何 tool_creepprompt_injection 發現。
  • 將防火牆規則的範圍設定為 tool_name_glob: <server>.*auditpending_approval,直到你有呼叫歷史。
  • 審查 network_egress 發現:清單聲明它只需要一個域,但工具描述中是否提到其他域?
  • 在任何上游版本升級後重新探測伺服器(POST /api/workspace/firewall/mcp_servers/:id/probe) 以顯示新工具。

3. 懷疑拉地毯式詐騙後該怎麼做

  1. 立即停用伺服器——停用的伺服器從執行期登錄中刪除,其憑證永遠不被解密。 使用帶有 "enabled": falsePUT /api/workspace/firewall/mcp_servers
  2. 重新探測以顯示更改——POST /api/workspace/firewall/mcp_servers/:id/probe 執行 tools/list 並返回自上次探測以來出現的任何新工具。
  3. 重新掃描技能記錄——POST /api/workspace/firewall/skills/:id/rescan 對更新的清單重新執行掃描器。如果裁決降級為 flaggedblocked, 防火牆會在你的動態中發出事件。
  4. 審查 pending_approval 佇列——自拉地毯式詐騙以來保留的任何呼叫都在佇列中。 逐一檢查並拒絕,而不是批量批准。
  5. 稽核呼叫日誌——檢查防火牆事件軌跡,查找在你偵測到更改之前通過的呼叫。

4. 將技能掃描與防火牆規則配對

技能掃描和防火牆規則是互補的且可以組合:
  • 帶有 tool_name_glob: community.* 設定為 pending_approval 的規則確保你審查 來自社群來源伺服器的每次呼叫,無論風險等級如何。
  • 隔離的技能覆蓋 allow 規則——即使你的政策廣泛許可 http.fetch, 擁有它的隔離技能仍然保留呼叫。
  • 使用規則中的 skill_name_glob 將更嚴格的政策範圍設定到不受信任的伺服器,而不影響你的第一方整合。
參見防火牆:MCP 伺服器了解完整的閘道模型, 以及防火牆:技能了解掃描器和強制執行模式參考。

5. 相關威脅

  • 危險工具呼叫——無論來源如何,封鎖破壞性或不可逆工具動作的規則。
  • 資料外洩——限制工具呼叫可以發送資料到哪裡的外向規則。
  • 威脅模型——OrcaRouter 被設計來防禦的完整攻擊面。

防火牆:MCP 伺服器

在閘道後面登錄 MCP 伺服器,探測其工具,並在任何呼叫到達真實伺服器之前套用每呼叫裁決。

防火牆:技能

掃描和對每個可安裝能力進行風險評分。在高風險技能的工具能夠執行之前隔離或封鎖它們。