最近釋出的 Damn Vulnerable Model Context Protocol (DVMCP) 專案在科技社群中引發了關於模型上下文協議(Model Context Protocol,MCP)實施的安全隱患的廣泛討論。這個教育性專案旨在展示 MCP 實施中的漏洞,凸顯了人們對這些系統應如何部署和保護的根本性誤解。
信任邊界是 MCP 安全的關鍵
據評論執行緒中的專家表示,MCP 伺服器並非設計為面向公眾的 API,而是在受信任環境中執行的元件。許多評論者強調,MCP 假設其傳輸層本身是可信的,這一點並未被實施這些系統的開發人員廣泛理解。一位評論者指出,該協議透過其預設的標準輸入輸出傳輸機制明確表明,MCP 伺服器預期在對任何能夠訪問它們的客戶端都隱含可信的環境中執行。
「MCP 規範明確表示,MCP 伺服器預期在對任何能夠訪問它們的客戶端都隱含可信/可信任的環境中執行。這從預設/假設的標準輸入輸出傳輸可以看出,但即使使用 SSE,該協議也期望認證問題已經解決。」
這一觀點將 MCP 伺服器定位為不是獨立服務,而是客戶端應用程式本身——本質上是代理或閘道器,它們抽象服務併為 LLM 新增與之互動的上下文。
現實世界的安全事件引發擔憂
儘管在理論安全模型中,現實世界的實施已經顯示出重大漏洞。來自 Invariant Labs 的安全研究人員記錄了幾種攻擊向量,包括工具中毒、地毯式撤離和工具遮蔽。一個特別令人擔憂的例子涉及一個 WhatsApp MCP 伺服器,攻擊者可以透過社會工程技術訪問私人資料,攻擊者可以向用戶傳送指令,要求他們的助手將私人訊息轉發到另一個賬戶。
這些事件表明,雖然 MCP 本身可能不存在漏洞,但當前的生態系統鼓勵可能導致安全漏洞的實施方式。理論安全模型(MCP 在可信環境中執行)與實際實施(安全邊界常常定義不清)之間的差距似乎是許多漏洞的根源。
MCP 安全資源
- 初始安全通知: https://invariantlabs.ai/blog/mcp-security-notification-tool... (關於工具中毒、跑路詐騙、工具影子攻擊的詳細資訊)
- WhatsApp MCP 漏洞利用: https://invariantlabs.ai/blog/whatsapp-mcp-exploited
- BrowserMCP 攻擊: https://x.com/lbeurerkellner/status/1912145060763742579
- 安全掃描工具: https://github.com/invariantlabs-ai/mcp-scan
正確實施需要明確的邊界
成功實施安全 MCP 伺服器的開發人員強調明確控制的重要性。一位評論者描述了建立一個具有嚴格限制的伺服器——例如,允許它傳送郵件但只能傳送到特定的電子郵件地址,或將檔案系統訪問限制在非機密目錄。這種方法將 MCP 伺服器視為與與 LLM 交談的人具有相同的許可權和訪問許可權,建立了明確的安全邊界。
DVMCP 專案本身概述了三個難度級別的十個挑戰,展示了從基本提示注入到複雜的多向量攻擊的各種攻擊向量。這些教育性示例作為警示,說明在 MCP 實施中忽視安全考慮可能導致的問題。
DVMCP 中展示的關鍵 MCP 安全漏洞
- 提示注入:透過惡意輸入操控 LLM 行為
- 工具中毒:在工具描述中隱藏惡意指令
- 過度許可權:利用過度寬鬆的工具訪問許可權
- 地毯式攻擊:利用工具定義變異
- 工具覆蓋:用惡意工具覆蓋合法工具
- 間接提示注入:透過資料來源注入指令
- 令牌竊取:利用不安全的令牌儲存
- 惡意程式碼執行:透過易受攻擊的工具執行任意程式碼
- 遠端訪問控制:獲取未授權的系統訪問許可權
- 多向量攻擊:結合多種漏洞
教育工具面臨分發挑戰
有趣的是,一些評論者還對專案名稱表示擔憂,指出 Damn Vulnerable Model Context Protocol 中的 Damn 一詞可能會限制其在教育環境中的採用,特別是對 K-12 學生。這與類似命名的 Damn Vulnerable Web Application (DVWA) 面臨的挑戰相似,教育者不得不重新命名或克隆該專案,使其適合年輕學生。
隨著 MCP 的採用增長,社群似乎正在應對技術安全挑戰和如何教育下一代開發人員瞭解這些問題的實際考慮。儘管可能存在命名問題,DVMCP 專案代表了提高人們對這一新興協議中安全考慮的意識的重要一步。
圍繞 MCP 安全的討論強調了開發人員的一個關鍵點:理解協議的預期部署上下文和安全模型與理解其技術規範同樣重要。正如一位評論者簡潔地表述的那樣,MCP 安全完全關乎信任——如果你信任它,你就沒問題,但這種信任需要透過適當的實施和明確的邊界來建立。