MCP 安全檢查清單:AI ⼯具⽣態系統安全指南

背景

本安全檢查清單由 @SlowMist_Team 編寫並維護。

感謝 FENZ.AI 傾力相助。

概要

隨着大模型的迅猛發展,各種新的 AI 工具也在不斷湧現,當下代表

性的 MCP (Model Context Protocol) 標準實現的工具正逐漸成爲連接大語言模型 (LLM) 與外部工具、數據源之間的關鍵橋樑。自 2024 年底發佈以來,MCP 已被廣泛應用於 Claude Desktop、Cursor 等主流 AI 應用中,MCP Server 的各種商店也在不斷出現,展現出強大的生態擴展能力。

然而,MCP 的快速普及也帶來了新的安全挑戰。當前 MCP 架構中,系統由 Host (本地運行的 AI 應用環境)、Client (負責與 Server 通信與工具調用的組件) 以及 Server (MCP 插件所對應的服務端) 三部分構成。用戶通過 Host 與 AI 交互,Client 將用戶請求解析並轉發至 MCP Server,執行工具調用或資源訪問。在多實例、多組件協同運行的場景下,該架構暴露出一系列安全風險,尤其在涉及加密貨幣交易或 LLM 自定義插件適配等敏感場景中,風險更爲突出,需要適當的安全措施來管理。

在此背景下,制定和遵循一套全面的 MCP 安全檢查清單顯得尤爲重要。本清單涵蓋了從用戶交互界面、客戶端組件、服務插件,到多 MCP 協作機制及特定領域(如加密貨幣場景)的安全要點,旨在幫助開發者系統性地識別潛在風險並及時加以防範。通過落實這些安全措施,可有效提升 MCP 系統的整體穩定性與可控性,確保 AI 應用在快速發展的同時,安全性也同步得到保障。

(MCP 多組件交互流程與關鍵風險點示意圖)

如何使用

本檢查表基於我們在對 MCP 項目審計中遇到的可能風險點,旨在幫助開發者確保 MCP 實現的安全性。我們使用 3 個級別的優先級標識項目的重要性:

🟢️ 表示推薦項目,但在特定情況下可以省略。

🔶 表示強烈推薦項目,但在特殊情況下可以省略,省略可能會對安全性產生負面影響。

🟥️ 表示在任何情況下都不能省略的項目,移除這些元素可能導致系統故障或安全漏洞。

MCP Server(MCP 插件)安全

說明:MCP 服務是提供工具、資源和功能供 AI 調用的外部服務。即目前 MCP 插件的形態。一般包含 Resources、Tools、Prompts。

API 安全

  1. 輸入驗證:🟥️ 嚴格驗證所有 API 輸入,防止注入攻擊和非法參數。

  2. API 速率限制:🔶 實施 API 調用速率限制,防止濫用和攻擊。

  3. 輸出編碼:🔶 正確編碼 API 輸出。

Server 身份驗證與授權

  1. 訪問控制:🟥️ 實施基於角色的訪問控制,限制資源訪問,實施最小權限原則。

  2. 憑證管理:🟥️ 安全管理和存儲服務憑證,避免硬編碼,使用密鑰管理服務。

  3. 外部服務認證:🟥️ 使用安全方式向第三方服務認證。

  4. 最小權限:🔶 服務進程以最小必要權限運行,減少潛在攻擊面和提權風險。

  5. API 密鑰輪換:🔶 定期自動輪換 API 密鑰和服務憑證,限制密鑰有效期。

  6. 服務身份驗證:🔶 提供 Tools 驗證服務身份的機制,方便客戶端驗證和安全使用。

後臺持久性控制

  1. 生命週期管理:🟥️ 實施嚴格的 MCP 插件生命週期管理,與客戶端同步。

  2. 關閉清理:🟥️ 客戶端關閉時強制清理所有 MCP 後臺進程。

  3. 健康檢查機制:🔶 定期檢查 MCP 插件狀態,識別異常持久性。

  4. 後臺活動監控:🔶 監控和記錄所有 MCP 後臺活動。

  5. 活動限制:🔶 限制 MCP 插件可在後臺執行的操作類型和持續時間。

部署與運行時安全

  1. 隔離環境:🟥️ 服務在隔離環境(容器、VM、沙箱)中運行,防⽌逃逸、防止東西向移動攻擊

  2. 容器安全:🟥️ 使用強化的容器安全配置和非 root 用戶運行,實施不可變基礎設施,運行時保護。

  3. 安全啓動:🔶 驗證服務啓動過程的完整性,實施安全啓動鏈和完整性檢查。

  4. 環境變量安全:🔶 敏感環境變量受到保護,不在日誌中泄露。

  5. 資源限制:🔶 實施資源使用限制,防止大模型出錯時大量循環重複調用。

代碼與數據完整性

  1. 完整性驗證機制:🟥️ 使用數字簽名、哈希校驗等機制確保代碼未被篡改。

  2. 遠程驗證:🔶 支持遠程驗證代碼完整性的機制。

  3. 代碼混淆與加固:🟢️ 應用代碼混淆和加固技術,增加逆向工程難度。

供應鏈安全

  1. 依賴項管理:🟥️ 安全管理第三方依賴項。

  2. 包完整性:🟥️ 驗證包的完整性和真實性。

  3. 來源驗證:🔶 驗證所有代碼和依賴項的來源。

  4. 構建安全:🔶 確保構建流程安全。

監控與日誌記錄

  1. 異常檢測:🟥️ 檢測和報告異常活動模式。

  2. 詳細日誌記錄:🟥️ 記錄所有服務活動和安全事件。

  3. 安全事件告警:🟥️ 配置關鍵安全事件的實時告警。

  4. 集中日誌管理:🔶 集中收集和分析日誌。

  5. 日誌完整性:🔶 確保日誌完整性,防止篡改。

  6. 審計能力:🔶 支持詳細的審計和事件調查。

調用環境隔離

  1. MCP 間隔離:🟥️ 確保多個 MCP 服務之間的操作隔離。

  2. 資源訪問控制:🟥️ 爲每個 MCP 服務分配明確的資源訪問權限邊界。

  3. 工具權限分離:🔶 不同領域的工具使用不同的權限集。

平臺兼容性與安全

  1. 系統資源隔離:🟥️ 根據不同操作系統特性實施適當的資源隔離策略。

  2. 跨平臺兼容性測試:🔶 測試 MCP 服務在不同操作系統和客戶端上的安全行爲一致性。

  3. 平臺特定風險評估:🔶 評估特定平臺的獨特安全風險和緩解措施。

  4. 客戶端差異處理:🔶 確保安全控制能適應各種客戶端實現的差異。

數據安全與隱私

  1. 數據最小化:🟥️ 僅收集和處理必要的數據。

  2. 數據加密:🟥️ 敏感數據在存儲和傳輸中加密。

  3. 數據隔離:🟥️ 不同用戶的數據得到有效隔離。

  4. 數據訪問控制:🟥️ 實施嚴格的數據訪問控制。

  5. 敏感數據識別:🟥️ 自動識別和特殊處理敏感數據。

資源安全 (Resources Security)

  1. 資源訪問控制:🟥️ 實施細粒度的資源訪問控制。

  2. 資源限制:🔶 限制單個資源的大小和數量。

  3. 資源模板安全:🔶 確保資源模板參數經過驗證和清理。

  4. 敏感資源標記:🔶 標記並特殊處理敏感資源。

工具實現安全 (Tools Security)

  1. 安全編碼實踐:🟥️ 遵循安全編碼標準和最佳實踐。

  2. 工具隔離:🟥️ 工具執行在受控環境中,防止系統級別影響。

  3. 輸入驗證:🟥️ 嚴格驗證來自客戶端的所有輸入。

  4. 工具權限控制:🟥️ 各工具僅擁有完成任務所需的最小權限。

  5. 數據驗證:🟥️ 驗證工具處理的數據,防止注入和篡改。

  6. 工具行爲約束:🟥️ 限制工具可執行的操作範圍和類型。

  7. 第三方接口返回信息安全:🟥️ 驗證接口返回信息是否符合預期,不可直接將返回信息插入上下文。

  8. 錯誤處理:🔶 安全處理錯誤,不泄露敏感信息。

  9. 命名空間隔離:🔶 爲不同工具實施嚴格的命名空間隔離。

MCP 客戶端 / MCP HOST 安全

說明:Host 是運行 AI 應用程序和 MCP 客戶端的環境,是終端用戶與 AI 系統交互的入口點。如 Claude 桌面版、Cursor。Client 是 AI 應用程序內部的組件,負責與 MCP 服務通信,處理上下文、工具調用和結果展示。一般情況下 Client 是默認集成在 Host 中的。

用戶交互安全

  1. 用戶界面安全:🟥️ 用戶界面明確顯示 AI 操作的權限範圍和潛在影響,提供直觀的安全指示器。

  2. 敏感操作確認:🟥️ 高風險操作(如文件刪除、資金轉賬)需要明確用戶確認。

  3. 權限請求透明:🟥️ 權限請求明確說明用途和範圍,幫助用戶做出明智決策,避免過度授權。

  4. 操作可視化:🔶 工具調用和數據訪問對用戶可見且可審覈,提供詳細的操作日誌。

  5. 信息透明度:🔶 工具應該可以允許用戶是否默認展示隱藏標籤,如 。這樣保證用戶看到的和實際生成與調用的上下文完整與一致,防止隱藏標籤中存在惡意邏輯。

  6. 狀態反饋:🔶 用戶可清楚瞭解當前正在執行的 MCP 操作。

AI 控制與監控

  1. 操作記錄:🟥️ 記錄所有重要 AI 操作及其結果。

  2. 異常檢測:🔶 檢測異常的工具調用模式或請求序列。

  3. 工具調用限制:🔶 實施工具調用頻率和數量限制。

本地存儲安全

  1. 憑證安全存儲:🟥️ 對重要憑證使用系統密鑰鏈或專用加密存儲保護認證憑證,防止未經授權的訪問。

  2. 敏感數據隔離:🔶 實施數據隔離機制,將敏感用戶數據與普通數據分開存儲和處理。

應用程序安全

  1. 應用完整性:🟥️ 驗證應用程序及 MCP 插件的完整性,防止篡改。

  2. 更新驗證:🔶 Host 應用更新經過數字簽名驗證。

  3. 應用程序沙箱:🟢️ 儘量在沙箱環境中運行應用,限制系統訪問。

客戶端身份驗證與授權

  1. 強制認證:🟥️ 在與任何重要 MCP 服務通信前強制執行認證,防止匿名訪問。

  2. OAuth 實現:🔶 正確實現 OAuth 2.1 或更高版本流程,遵循最佳實踐和安全標準。

  3. 狀態參數:🔶 對於部分 Web 客戶端實施狀態參數防止 CSRF 攻擊,每次請求使用唯一隨機值。

MCP Tools 與 Servers 管理

  1. MCP 工具驗證:🟥️ 驗證註冊工具的真實性和完整性。

  2. 安全更新:🟥️ MCP 客戶端定期檢查並應用安全更新,驗證更新後的工具是否包含惡意描述。

  3. 函數名校驗:🟥️ 註冊工具前檢查名稱衝突和潛在惡意覆蓋。

  4. 惡意 MCP 檢測:🟥️ 監控和識別潛在惡意 MCP 的行爲模式。

  5. MCP 工具命名控制:🔶 採用命名空間或唯一標識符,防止命名衝突。

  6. 服務目錄:🔶 維護可信 MCP 服務和工具的授權目錄。

  7. 衝突解決:🔶 存在明確的規則解決同名工具衝突。

  8. 域隔離:🔶 不同域的工具彼此隔離,防止交叉影響。

  9. 優先級機制:🔶 建立明確的函數優先級規則,避免惡意覆蓋。

  10. 版本控制:🔶 對函數和工具實施版本控制,檢測變更。

  11. 工具註冊與註銷機制:🔶 明確工具註冊和註銷的流程,防止遺留工具的安全風險。

  12. 衝突檢測機制:🔶 檢測並解決多 MCP 環境中的函數和資源衝突。

  13. 工具分類:🟢️ 根據敏感度和風險級別對工具進行分類。

提示詞安全

  1. 提示詞注入防禦:🟥️ 實施多層防禦措施防止提示詞注入攻擊,包括對關鍵執行進行人工驗證。

  2. 惡意指令檢測:🟥️ 建立機制檢測並阻止潛在的惡意用戶指令,避免系統被操縱,如檢測阻止本地初始化時候的預載惡意指令,以及來自第三方 MCP 服務器的惡意工具包含隱藏的有害指令。

  3. 系統提示保護:🟥️ 系統提示與用戶輸入明確分離,防止篡改。

  4. 敏感數據過濾:🟥️ 從提示和上下文中過濾敏感個人數據。

  5. 上下文隔離:🔶 確保不同來源的上下文內容相互隔離,防止上下文污染和信息泄露。

  6. 提示詞模板:🔶 使用安全的提示詞模板,減少注入風險。

  7. 工具描述驗證:🔶 檢查工具描述中的潛在惡意指令。

  8. 提示詞一致性驗證:🔶 確保相同提示詞在不同環境下產生可預期的一致結果。

  9. 歷史上下文管理:🔶 明確歷史上下文的安全清理機制,防止舊數據累積造成的信息泄露風險。

日誌與審計

  1. 客戶端日誌記錄:🟥️ 記錄所有與 MCP 服務的交互、工具調用和授權活動。

  2. 安全事件記錄:🟥️ 記錄所有安全相關事件,包括授權失敗。

  3. 異常告警:🔶 檢測並告警異常活動模式。

Server 驗證與通信安全

  1. Server 身份驗證:🟥️ 驗證 MCP Server 身份,防止連接到惡意 Server,實施證書固定。

  2. 證書驗證:🟥️ 對遠程 Server 嚴格驗證 TLS 證書,防止中間人攻擊,檢查證書鏈完整性。

  3. 通信加密:🟥️ 所有 Client-Server 通信使用 TLS 1.2 + 加密,禁用弱加密套件。

  4. 安全協議配置:🔶 配置安全的 TLS 參數,定期審計和更新加密算法和協議。

權限 Token 存儲與管理

  1. 權限範圍限制:🟥️ 嚴格限制 Token 的權限範圍,實施最小權限原則。

自動批准 (autoApprove) 控制

  1. 自動批准限制:🟥️ 嚴格控制可被自動批准的工具和操作範圍。

  2. 白名單管理:🔶 明確定義可自動批准工具的白名單機制。

  3. 動態風險評估:🔶 根據上下文動態調整自動批准策略。

  4. 批准流程審計:🔶 記錄並審計所有自動批准決策。

採樣安全 (Sampling Security)

  1. 上下文包含控制:🟥️ 嚴格控制採樣請求中包含的上下文範圍。

  2. 敏感數據過濾:🟥️ 從採樣請求和響應中過濾敏感數據。

  3. 採樣請求驗證:🔶 驗證所有采樣請求參數和內容。

  4. 用戶控制:🔶 確保用戶對採樣請求和結果有明確控制權。

  5. 模型偏好安全:🔶 安全處理模型偏好信息,防止濫用。

  6. 結果驗證:🔶 驗證採樣結果是否符合安全標準。

MCP 在不同 LLM 上的適配和調用安全

說明:在實際使用過程中可以發現不同的 LLM 後端對 MCP 的調用的優先級和執行邏輯都會存在差異,所以我們不只需要關注 MCP 的實現也需要關注 LLM 與 MCP 之間的組合。

LLM 安全執行

  1. 優先函數執行:🟥️ 確保 LLM 可以優先執行正確插件的函數。

  2. 惡意提示防護:🟥️ LLM 能在提示惡意場景的情況下對注入的助記詞要求的行爲進行識別與防護。

  3. 安全調用:🟥️ LLM 能正確安全地調用相關 MCP 功能。

  4. 敏感信息保護:🟥️ 防止敏感信息泄露。

多模態安全

  1. 多模態內容過濾:🟥️ 過濾多模態內容中的有害或敏感信息(如圖片中的惡意提示詞)。

多 MCP 場景安全

說明:用戶正常使用 MCP 時經常會同時啓用多個 MCP Sever,由於目前還沒有官方商店對 MCP 插件進行審計,用戶很可能會安裝到惡意 MCP,這裏需要非常注意,引入了惡意 MCP 會對整體使用安全帶來極大隱患。

  1. 多 MCP 環境安全:🟥️ 確保多 MCP 環境的整體安全性,定期對安裝的 MCP 進行掃描檢查。

  2. 函數優先級劫持防護:🟥️ 檢查可能的惡意提示詞預設,防止函數優先級被惡意劫持。

  3. 跨 MCP 函數調用控制:🟥️ 安全控制跨 MCP 函數調用,防止惡意 MCP 返回惡意提示詞去調用其他 MCP 執行敏感操作。

加密貨幣相關 MCP 的特有安全點

說明:當前越來越多加密貨幣相關的 MCP 出現,其中很多擁有管理加密貨幣錢包這一高風險操作的功能,所以這裏着重爲加密貨幣相關 MCP 提出一些建議。

  1. 私鑰保護:🟥️ 加強私鑰的安全保護措施,如 Scrypt。

  2. 錢包生成安全:🟥️ 助記詞或錢包生成過程的安全性保障。

  3. 錢包信息隱私:🟥️ 保護錢包信息隱私,將錢包信息請求第三方接口時候需要做好過濾。

  4. 轉賬信息確認:🟥️ 鏈上或交易所轉賬簽名的信息需要完整展示並確認。

  5. 資金操作驗證:🟥️ 對重要資金操作需二次驗證,如 Google Authenticator。

  6. 本地模型隱私保護:🔶 使用本地大模型保護隱私數據,防止第三方大模型廠商獲取到你的錢包信息等敏感信息。

  7. 傳統錢包兼容:🔶 對傳統錢包的安全兼容,如支持用傳統錢包進行簽名操作等。

結語

在越來越智能化的將來,我們的日常可以預見的將更深度與各種 AI 工具相結合,我們的數字資產也將更加面臨更多維度安全挑戰。願大家一起擁抱 AI ,守護安全。

Ps. 文檔已同步至 (https://github.com/slowmist/MCP-Security-Checklist),感興趣的讀者可點擊文末的閱讀原文直接跳轉。

參考資料

[1] Model Context Protocol (MCP) GitHub

[2] Hou, X., Zhao, Y., Wang, S., & Wang, H. (2025). Model Context Protocol (MCP): Landscape, Security Threats, and Future Research Directions. arXiv preprint arXiv:2503.23278.

慢霧導航

慢霧科技官網

https://www.slowmist.com/

慢霧區官網

https://slowmist.io/

慢霧 GitHub

https://github.com/slowmist

Telegram

https://t.me/slowmistteam

Twitter

https://twitter.com/@slowmist_team

Medium

https://medium.com/@slowmist

知識星球

https://t.zsxq.com/Q3zNvvF

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/uNG5MmmWewUQfuvqMIwegw