跳轉到主要內容
「rug-pull」是一個在你核准它之後變更其工具定義的 MCP 伺服器——重新定義一個信任的工具去做某件新事,或悄悄 加上一個。OrcaRouter 在 schema 層抓住這件事:它為每個 伺服器所公告的工具集建立基準並在每一次載入時重新檢查它,所以漂移 fail closed,而非悄悄服務變更後的工具。 本頁是每伺服器 schema 狀態的參考,以及每個 狀態對流量代表什麼。

1. 基準指紋

在首次接觸時,閘道會計算該伺服器所公告工具集的一個 正規雜湊,並把它儲存為核准的基準:
  • 該雜湊涵蓋每個工具的名稱、描述與輸入 JSON schema—— 正是一個 rug-pull 會更動的表面(一個工具獲得一個外洩 引數,或一個被武器化用於提示注入的描述會翻轉該雜湊)。
  • 它是順序無關的:一個伺服器重新排序它的工具清單,或 重新排序一個 schema 內的鍵,都不會看起來像一個變更。只有一個 真正的定義變更才會移動該雜湊。
在之後的每一次探測,閘道會重新雜湊即時工具並把它們 與已儲存的基準比較。這是一個每伺服器的檢查——它不取決於 你撰寫的任何規則。

2. schema 狀態生命週期

每個已註冊伺服器攜帶一個 schema_status。這些狀態以及它們 如何影響該伺服器的工具是否被服務:
狀態意義工具被服務嗎?
(未建立基準)首次使用——尚未記錄基準。發現姿態:是(trust-on-first-use——目前的 schema 被捕捉為基準)。嚴格姿態:否——見下方 pending
verified即時 schema 匹配核准的基準。
changed偵測到漂移——即時 schema 與基準不同。否——fail closed
pending一個在嚴格(無 trust-on-first-use)姿態下未建立基準的伺服器——等待核准。否——fail closed
quarantined一位 admin 已保留該伺服器。否——fail closed
這三個封閉狀態——changedpendingquarantined——都會 停止該伺服器的工具透過閘道被服務。verified 總是 服務;一個未建立基準的伺服器只在發現姿態 (trust-on-first-use)下服務,並在嚴格姿態下被保留為 pending。漂移 永不會悄悄通過。

3. 漂移時會發生什麼

當一次重新檢查發現即時 schema 不再匹配基準時:
1

狀態翻轉為 changed

該伺服器的 schema_status 變成 changed,且漂移時間戳記 被記錄。
2

工具停止被服務

閘道 fail closed:該伺服器的工具會從統一的 MCP 表面被扣留,所以一個代理無法呼叫變更後的定義。
3

主控台將它浮現

該漂移會浮現以供審查,所以一位 admin 能把新工具集 與核准的那個比較。
4

重新建立基準或隔離

一位 admin 核准新 schema(重新建立基準——目前的工具集 成為新的 verified 基準)或隔離該伺服器。在 其中之一發生之前,該伺服器保持封閉。

4. 重新核准一個漂移的伺服器

重新建立基準是一次呼叫(或主控台動作):
POST /api/workspace/firewall/mcp_servers/:id/approve_schema
需要 Developer 角色。它會把即時工具集記錄為新的 核准基準並把該伺服器恢復為 verified。(隔離一個 伺服器是一個獨立的動作,用於當你判定該變更是敵對時—— approve_schema 只重新建立至 verified 的基準。)該動作會寫入 稽核軌跡。
只在你審查過 diff 之後才重新核准。在不檢查的情況下 核准一個漂移的 schema 會破壞這個控制——它告訴 OrcaRouter 那個新 (可能惡意的)工具定義是受信任的。

5. 這如何融入

Schema 漂移偵測是 rug-pull 防禦的 schema 層那一半; 另一半是 mcp 表面上的每次呼叫評估(每一次 tools/call 在派發時都會對照你的政策檢查)。兩者合起來涵蓋「 定義變更了」與「這個特定呼叫很危險」兩者。

Rug-pull 防禦

完整的 rug-pull 圖景——schema 基準加上每次呼叫的評估。

MCP 安全總覽

MCP 閘道、技能與憑證。

MCP 工具下毒

這個狀態機防禦的威脅。

MCP 稽核事件

監控 schema 變更與閘道決策。