AID-H-021.004
極高
Control-Plane & Oversight-Surface Isolation
控制面與監督介面隔離,可以避免瀏覽器 agent 載入的不可信頁面碰到會管理 MCP、工具和程序啟動的本機控制面。這會把「瀏覽外部網址」和「改變本機 agent 執行設定」拆成兩個不同邊界。
Microsoft 的 AutoJack 研究展示一條讓不可信網頁觸發主機上程式碼執行的完整路徑:瀏覽器 agent 先載入攻擊者頁面,頁面 JavaScript 再從同一台機器連線到 AutoGen Studio(Microsoft AutoGen 的本機 agent 建構與管理介面)的本機 MCP WebSocket,利用未套用驗證的路由傳入 server_params,最後讓 AutoGen Studio 依參數啟動攻擊者指定的程序。這個問題已在相關程式碼發布至 PyPI 前修補,但架構教訓更廣:只要 agent 能瀏覽外部內容,又能連到本機控制面,localhost 就不能被當成可信邊界。
ws://localhost:8081/api/mcp/...。連線來自本機,不代表網頁可信;瀏覽器仍會使用發起頁面的來源標頭(Origin,用來標示是哪個網站發起連線),不會因為目的地是 localhost 就變成本機來源。/api/mcp;不能把 HTTP 驗證視為 WebSocket 已受保護的證據。server_params 會被解碼成可啟動程序的參數。 WebSocket URL 裡的參數被 Base64 解碼後,會變成 StdioServerParams,再交給 MCP stdio client 啟動程序。若沒有允許清單,這不只是在啟動 MCP server,也可能啟動 calc.exe、PowerShell、bash 或其他攻擊者指定命令。b047730 改由 POST /api/mcp/ws/connect 在伺服器端登記參數,再讓 WebSocket 使用一次性的工作階段 ID。HTTP 身分驗證仍取決於部署設定;這不代表所有部署都已啟用驗證或完成網路隔離。AutoJack 把不可信網頁、agent 瀏覽器、本機 MCP 啟動路由與主機程序啟動接成一條攻擊鏈。相關防禦手法須包括在實際 WebSocket 傳輸上檢查身分與 Origin、對程序啟動執行範圍明確的授權,以及由瀏覽器程序之外強制執行對外連線政策。瀏覽器啟動檢查負責驗證這些邊界的證據,不會自行建立隔離。部署修補後,仍須獨立重新執行完整路徑,確認入口與程序啟動都已受控。
最後更新: