隨著 2024年11月底 Model Context Protocol (MCP) 正式的發布,有愈來愈多的 AI Agent 利用這種開放式的通訊協議,能夠即時地取得各項數據,或是調動可以一起協作的服務,讓AI各項的應用更加地多元和簡便,對使用者來說是一大福音。
只是在方便使用的背後,通常也隱含著需要我們關注的資安風險,以下文章是彙整最近閱讀相關文件的心得,並應用 ISO 27001 的控制措施來強化 MCP 的安全。
MCP 的誕生解決了傳統 API 連結各項服務,都需要手動設定各自的金鑰才能存取服務的要求,使用者只要透過 MCP Client 就可連接一台或多台的 MCP Server,MCP Server 有能力去調動各項工具、取得資源及協同的服務,而且除了可以存取儲存在地端的資料之外,也可透過網際網路存取遠端的資源與應用服務。
MCP應用可能的資安風險
目前,AI agent 有了 MCP 的幫助,就可讓大型語言模型 (LLM) 快速回應用戶端的 Prompt,並且依據 AI 的判斷主動地來執行各項任務,在這個過程中,包括使用了遠端的 MCP Server 和自行建置地端的 MCP Server,都可能需要注意以下相關的資安風險。
身分憑證 (Token) 被竊取:目前網路上充斥著許多由個人開發,或是偽冒知名 MCP Server 名稱的服務,如果沒有進行適當的確認就使用,可能會造成 MCP Server 的憑證被竊取,或是因授權過大而導致濫用的情況。
惡意攻擊指令注入:惡意人士可能會利用輸入的 Prompt,刻意操縱 LLM 去觸發惡意的行為,例如: 刪除特定的資料、送出敏感性資訊 (外洩個資或金鑰),或是透過為數眾多的 MCP Server 來實現組合式的攻擊。
MCP Server 缺少認證機制:MCP Server 常由一些獨立的開發者建立,在開發的過程中可能缺少了安全檢測,或是撰寫的程式碼未經過安全的審查,使用者若下載了內含安全漏洞或惡意程式的 MCP Server,並且安裝在本地端的電腦 (使用自動安裝工具) ,也可能就直接開了一個後門而毫不知情。
ISO 27001的安全控制措施
針對以上提到有關使用 MCP 的風險,組織可以依照 ISO 27001附錄A 的控制措施,包括但不限於以下的做法來強化資訊安全的管控:
A.5.15 存取控制 - 在組織內部的存取控制政策中,制訂明確的 MCP 管理和授權的過程,事先確認 MCP 的合理性和進行版本的管控。
A.8.3 資訊存取限制 - 限制可呼叫的遠端 MCP Server,並檢測可能有惡意行為的 Prompt 指令。
A.8.5 安全鑑別 - 利用 OAuth 等技術來強化安全認證機制,並限制用戶端只可使用經過驗證的 MCP Sever。
A.8.8 技術脆弱性管理 - 針對本地端自己建置的 MCP Sever 定期執行弱點掃瞄,並進行高風險弱點的修補。
A.8.15 存錄 - 留存 MCP 活動的日誌 (log),並針對高風險的操作進行分析與審查。
A.8.16 監視活動 - 利用工具持續地監控和記錄 MCP Server 的活動,若發現異常的行為,則結合事件通報的機制進行評鑑和處理。
A.8.18 具特殊權限公用程式之使用 - 將 MCP Server 視為是一種含有特權的應用程式,在安裝和使用時需要經過適當的審查與核可過程,以及建立可使用自動化工具的白名單。
A.8.24 密碼技術之使用 - 使用 TLS 傳輸加密來防範網路的中間人攻擊,安全地儲存所使用的金鑰,並適當輪替更換和限制金鑰的有效期限。