AID-H-034.001
極高
MCP Server Deployment Profile, Transport & Exposure Baseline
MCP 部署基準直接對應這條鏈的控制面缺口:即使路由只綁在 localhost,也要檢查請求來源、驗證呼叫者身分、限制可沿用的環境權限,並把 MCP server 啟動流程放進安全設定較嚴格的執行環境。
Microsoft 的 AutoJack 研究展示一條讓不可信網頁觸發主機上程式碼執行的完整路徑:瀏覽器 agent 先載入攻擊者頁面,頁面 JavaScript 再從同一台機器連線到 AutoGen Studio(Microsoft AutoGen 的本機 agent 建構與管理介面)的本機 MCP WebSocket,利用未套用驗證的路由傳入 server_params,最後讓 AutoGen Studio 依參數啟動攻擊者指定的程序。這個問題已在相關程式碼發布至 PyPI 前修補,但架構教訓更廣:只要 agent 能瀏覽外部內容,又能連到本機控制面,localhost 就不能被當成可信邊界。
ws://localhost:8081/api/mcp/...。原本用來限制外部網站的 Origin 檢查,遇到本機 agent 代為瀏覽時就不足以代表真實信任來源。/api/mcp/* 這類 WebSocket 路徑,假設後面的 handler 會自行檢查;但受影響的 MCP handler 沒有補上這道檢查,讓請求不用 token 就能進入控制面。server_params 會被解碼成可啟動程序的參數。 WebSocket URL 裡的參數被 Base64 解碼後,會變成 StdioServerParams,再交給 MCP stdio client 啟動程序。若沒有允許清單,這不只是在啟動 MCP server,也可能啟動 calc.exe、PowerShell、bash 或其他攻擊者指定命令。server_params 時執行:先確認呼叫者有權建立 MCP session,再檢查 command、args 和 env 是否符合允許清單,預設拒絕 shell、PowerShell、bash 或任意程序啟動。server_params 被解碼後、真正交給 stdio client 前攔截高風險內容,例如 shell 執行、Base64 包裝命令、程序建立、檔案系統操作或瀏覽器自動化指令。AutoJack 的重點不是「某個 localhost 路由有 bug」而已,而是 agent 讓原本分開的兩個世界接在一起:外部網頁內容可以透過瀏覽器 agent 觸碰本機控制面,本機控制面又能啟動程序。AIDEFEND 對這條鏈的防守重點也很明確:MCP 基準與服務身分驗證守住控制面入口,工具參數驗證和危險程式結構偵測擋住任意命令,一次性沙箱和瀏覽工作階段隔離則限制最壞情況下的主機影響。