資安新聞
- 更新日期:114-05-28
- 發布單位:資訊技術服務中心
Anthropic於2024年底提出的「模型上下文協定(Model Context Protocol, MCP)」是一項創新框架,旨在讓大語言模型(LLM)與外部系統無縫連接。透過MCP框架,AI模型不僅能查詢資料與執行運算,還可利用API與外部資源互動,大幅提供其應用的靈活性與實用性。然而,MCP將LLM與外部系統做連結是一把雙面刃,提供AI存取權限、帶來更高便利性與自動化效率的同時,也擴大了攻擊面,為資安防護帶來新的挑戰。
MCP可以視為一種通用的「翻譯器」,讓LLM能即時與外部系統互通,透過這項機制,模型可動態獲取最新資訊,如即時天氣、使用者當下的資料配置等,並將其整合於回應中,有效解決過去LLM所面臨資訊無法即時的問題。
圖1: 用戶端和伺服器端於MCP架構中的通訊。圖片來源:SentinelOne
第一種常見的攻擊:惡意工具(Malicious Tools)
惡意工具是一種較為直接且普遍使用的攻擊手法,攻擊者透過偽裝名稱相同的合法工具,誘使使用者在建構MCP過程中,不慎使用包含惡意程式的工具,攻擊者可能在使用者系統中執行惡意程式,或試圖影響使用者所建置的雲端伺服器及基礎設施。儘管如此,透過對工具描述、發布來源等細節的仔細檢視,仍可察覺潛在異常。以圖2為範例,攻擊者創建名為「daily_report_analysis」的惡意工具,當使用者啟動MCP時,此惡意工具即不慎被呼叫使用。
圖2: 惡意MCP伺服器在背景執行惡意活動之流程圖。圖片來源:SentinelOne
第二種攻擊:MCP Rug Pulls
「MCP Rug Pulls」是一種透過建立初期信任,再進行惡意行為的延遲性攻擊。簡單來說,這類工具在初期看似正常、安全,使用者將其串接至MCP伺服器並使用運作一段時間後,彼此建立信任後,工具的開發者不另行通知的情況下修改其內部描述,插入僅對AI可見的惡意指令,便可能觸發未經授權的行為。圖3為MCP Rug Pulls攻擊流程。
圖3: MCP Rug Pulls攻擊流程。圖片來源:invariantlabs
第三種攻擊:工具中毒攻擊(Tool Poisoning Attack, TPA)
工具中毒攻擊則屬於更高階且更為隱蔽的技術型攻擊,與直接誘使使用者執行惡意工具不同,攻擊者會將惡意指令嵌入MCP工具描述中,這些指令對使用者而言是不易察覺的,但對AI模型卻是可辨識並可執行。當AI模型依據描述進行操作時,可能在使用者毫未注意的情況下執行未授權行為,例如存取敏感檔案(SSH Key、設定檔和資料庫等)、誘導AI傳輸敏感資料並對使用者隱藏此次操作等。
圖4為invariantlabs研究員提供的範例。當使用者使用add函數功能時,僅看到第18行「return a+b」,而不會看到第3行至第16行要求AI模型讀取敏感設定檔「~/.cursor/mcp.json」、存取SSH私鑰「~/.ssh/id_rsa」、透過「sidenote」參數以隱藏方式傳輸資料,但這些對於AI模型而言是可識別且可執行。
圖4:隱藏惡意指令在MCP工具中。圖片來源:invariantlabs
第四種攻擊:跨工具汙染(Cross-Tool Contamination)
當使用者允許單一LLM代理程式與多個來自不同MCP伺服器上的工具互動時,可能出現伺服器互相干擾的風險。具惡意意圖的MCP伺服器可透過注入隱藏指令,悄悄竄改原本受信任的工具行為,無須直接執行惡意工具,即可對系統造成破壞。
圖5為跨工具汙染的案例說明,「daily_report_analysis」工具的描述已遭惡意修改,當另一個原本受信任的工具「send_daily_email」執行調用該工具時,觸發潛在其中的惡意指令。在這個情境中,「send_daily_email」除了執行原有的發信任務外,額外向攻擊者發送一封電子郵件且不通知使用者此操作。
圖5:跨工具汙染破壞受信任工具之流程圖。圖片來源:SentinelOne
總結來說,MCP伺服器雖然替AI生態系帶來高度彈性與便利性,但因串接第三方平台,在此之間是無條件信任而無任何端點驗證、完整性檢查以及透明化機制,所以具有極高的資安風險,這些是MCP未來需要改進的部分。根據上述的資安風險,提出以下幾項資安防禦建議:
- 工具的敘述應對使用者是可見、明確定義和區分使用者和AI的指令
- 執行MCP工具之前,應透過Hash或簽章驗證等機制確認工具內容未被竄改
- 多個MCP伺服器共同運作時,應對邊界和資料實行嚴格的控管,並使用安全代理工具,確保彼此之間的安全性