總字數：約12000字 | 預計閱讀時長：35分鐘​

一、MCP協議簡介​

1.1 MCP的作用與定位​

MCP（Model Context Protocol，模型上下文協議）是Anthropic於2024年11月推出的開放標準，旨在為AI模型與外部工具、資料來源之間建立統一的雙向通訊協議。它被業內譽為"AI時代的USB-C"，解決了AI應用與外部工具之間的連線標準化問題。​

在MCP出現之前，每個AI應用都需要為每個外部工具編寫自定義整合程式碼，導致"M×N"的複雜連線問題。MCP將其簡化為"M+N"模式：AI應用只需實現一次MCP客戶端，工具開發者只需實現一次MCP伺服器，即可實現任意組合。​

MCP的核心價值：​

•

標準化：統一的JSON-RPC 2.0協議，消除碎片化整合​

•

雙向通訊：AI不僅能呼叫工具，還能接收工具的實時反饋​

•

生態開放：任何人都可以開發和釋出MCP伺服器​

截至2026年初，MCP生態已呈爆發式增長：GitHub上超過13,000個MCP伺服器實現，Claude Desktop、ChatGPT、Cursor、Windsurf等主流AI工具均已原生支援MCP。​

1.2 MCP核心架構概述​

MCP採用Client-Host-Server三層架構：​

​

Code block​

Plain Text

┌─────────────────────────────────────────────────────────────┐​

│ Host（宿主應用） │​

│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │​

│ │ Claude │ │ GPT-4o │ │ Gemini │ │​

│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │​

└─────────┼──────────────────┼──────────────────┼─────────────┘​

│ │ │​

└──────────────────┼──────────────────┘​

│​

┌──────▼──────┐​

│ MCP Client │​

│ （客戶端） │​

└──────┬──────┘​

│​

┌──────────────────┼──────────────────┐​

│ │ │​

┌──────▼──────┐ ┌──────▼──────┐ ┌──────▼──────┐​

│ MCP Server │ │ MCP Server │ │ MCP Server │​

│ （檔案系統） │ │ （資料庫） │ │ （GitHub） │​

└─────────────┘ └─────────────┘ └─────────────┘​

​

三大核心角色：​

•

Host（宿主）：使用者直接互動的應用程式（如Claude Desktop、Cursor IDE）​

•

Client（客戶端）：維護與MCP伺服器的連線，處理協議通訊​

•

Server（伺服器）：暴露工具、資源和提示詞，供AI呼叫​

三大核心原語：​

​



| 原語 | 說明 | 示例 |
| --- | --- | --- |
| Tools（工具） | AI可呼叫的可執行函式 | 讀取檔案、執行SQL查詢、呼叫API |
| Resources（資源） | AI可讀取的靜態上下文資料 | 配置檔案、文件、資料庫schema |
| Prompts（提示詞） | 預定義的指令模板 | 程式碼審查模板、資料分析模板 |



​

傳輸方式：​

​



| 傳輸方式 | 適用場景 | 認證支援 |
| --- | --- | --- |
| Stdio | 本地開發、CLI工具 | 無 |
| Streamable HTTP | 生產環境、遠端部署 | OAuth 2.1 |



​

關於MCP協議的詳細講解，請參閱《3.5-MCP協議》章節。 本文聚焦於MCP協議的安全風險分析與防護實踐。​

二、MCP協議安全風險分析​

MCP的設計初衷是最大化功能性而非安全性。它為AI開啟了通往現實世界的大門，同時也創造了一個前所未有的、完全基於AI認知的全新攻擊面。​

2.1 傳輸層風險​

1）明文傳輸風險​

MCP的Stdio傳輸方式在本地環境中使用，安全性相對可控。但當MCP透過HTTP遠端部署時，如果未啟用TLS加密，所有通訊資料（包括敏感的工具呼叫引數和返回結果）都將以明文傳輸，容易被中間人竊聽。​

2）連線劫持風險​

遠端MCP伺服器如果缺乏嚴格的認證機制，攻擊者可能劫持客戶端與伺服器之間的連線，篡改工具呼叫請求或注入惡意響應。​

真實案例——mcp-remote遠端命令注入（CVE-2025-6514）：2025年底，安全團隊發現mcp-remote包存在CVSS評分高達9.6的嚴重漏洞。攻擊者可以構造惡意的MCP伺服器URL，誘導客戶端在解析URL時執行任意系統命令。該包在NPM與PyPI上累計下載量已突破43.7萬次，幾乎滲透到每一家使用Agentic AI的企業。​

參考連結：[資訊保安警鐘長鳴——從"MCP協議"爆炸式漏洞到全員防禦的緊迫呼喚](https://blog.securemymind.com/information-security-alarm-bells-are-ringing-from-the-explosive-vulnerability-of-the-mcp-protocol-to-the-urgent-call-for-all-person-defense.html)​

2.2 認證與授權風險​

1）認證機制缺失​

這是當前MCP安全最嚴重的問題之一。Trend Micro在2025年7月的研究發現，492個公開暴露的MCP伺服器沒有配置任何認證或加密。Knostic透過Shodan掃描發現1,862個暴露的MCP伺服器，其中手動驗證的119個伺服器全部允許未認證訪問內部工具列表。​

2）令牌管理不當​

OWASP MCP Top 10將"令牌管理不當與金鑰洩露"列為首要風險。常見問題包括：​

•

硬編碼API金鑰在工具定義中​

•

OAuth令牌以明文儲存在配置檔案中​

•

長期有效的令牌缺乏輪換機制​

3）許可權過度授予​

很多MCP伺服器預設以當前使用者的完整許可權執行，一旦被攻破，攻擊者將獲得與使用者相同的系統訪問許可權。​

真實案例——CloudSEK AIVigil發現的未認證MCP伺服器漏洞：2026年6月2日，CloudSEK披露了一個真實案例：某客戶的MCP伺服器完全未配置認證，攻擊者透過鏈式利用SSRF（服務端請求偽造）、LFI（本地檔案包含）漏洞，最終竊取了AWS IAM憑證和資料庫金鑰，可能導致整個基礎設施被接管。​

參考連結：[How an Unauthenticated MCP Server Led to SSRF, LFI, and AWS Credential Theft](https://www.cloudsek.com/blog/aivigil-mcp-security-case-study)​

2.3 資料洩露風險​

1）跨MCP隱私洩露（MSA攻擊）​

2025年11月，西安交通大學的研究團隊在ACM CCS會議上披露了一種名為MSA（Memory Stealing Attack）的新型攻擊。攻擊者只需控制一個惡意MCP伺服器，就能系統性地竊取使用者與其他所有MCP伺服器的互動資料。​

攻擊原理：惡意MCP伺服器在API介面中嵌入"寄生引數"（parasitic parameter），偽裝成"會話追蹤"或"請求驗證"的技術必需品，迫使AI Agent在呼叫時將完整的會話上下文作為引數值傳送。實驗結果顯示，MSA在Cursor、TRAE和VS Code上的上下文捕獲成功率達到100%，記憶重建準確率在85.67%到87.81%之間。​

參考連結：[MSA: A Cross-MCP Privacy Attack via Memory Exfiltration of Large Language Models](https://dl.acm.org/doi/10.1145/3733802.3764057)​

2）工具響應資料洩露​

MCP伺服器返回的資料可能包含敏感資訊（如資料庫查詢結果、檔案內容），如果Host應用未對響應進行過濾，這些敏感資料可能被洩露給使用者或其他MCP伺服器。​

2.4 工具呼叫風險​

1）工具描述投毒（Tool Poisoning）​

這是MCP最獨特的攻擊面。攻擊者在工具的description欄位中嵌入隱藏的惡意指令，AI模型會解析並執行這些指令，而使用者在介面上完全看不到。​

使用者看到的：工具名稱和簡短描述​

AI看到的：完整的工具定義，包括隱藏在description、parameter說明、error訊息中的惡意指令​

這種"感知不對稱"創造了一個完美的"暗通道"。​

2）工具引數投毒​

攻擊者在工具的引數定義中嵌入惡意指令，當AI構造呼叫請求時，會被誘導執行惡意操作。​

3）"拉地毯"攻擊（Rug Pull）​

MCP工具的定義是動態可變的，伺服器可以在任何時候修改工具的描述和行為，而客戶端幾乎不會發出警告。攻擊者可以先釋出一個合法工具獲取使用者信任，然後在更新中將其轉變為惡意工具。​

真實案例——聖誕節程式碼格式化工具攻擊：2025年12月，一個擁有超過10萬使用者的"程式碼格式化"MCP伺服器被攻擊者接管。攻擊者在聖誕節當天更新了工具定義，將"格式化程式碼"工具改為"刪除當前目錄下所有.git資料夾"，導致數千名開發者丟失了他們的程式碼倉庫。​

4）SQL隱碼攻擊與命令注入​

Akamai在2026年5月的研究發現，約300個官方MCP伺服器中存在嚴重的後端安全驗證問題。其中Apache Doris MCP存在SQL隱碼攻擊漏洞（CVE-2025-66335），Apache Pinot MCP和Alibaba RDS MCP也存在類似問題。研究顯示82%的MCP實現存在路徑穿越漏洞，67%存在程式碼注入風險，34%存在命令注入風險。​

參考連結：[One Is a Fluke, 3 Is a Pattern: MCP Back-End Vulnerabilities](https://www.akamai.com/blog/security-research/2026/may/one-fluke-3-pattern-mcp-back-end-vulnerabilities)​

三、MCP典型攻擊手法​

3.1 MCP Server投毒攻擊​

MCP Server投毒是指攻擊者在MCP伺服器中嵌入惡意程式碼或惡意工具定義，當使用者安裝並執行時執行攻擊。​

攻擊流程：​

​

Code block​

Plain Text

​

真實案例——postmark-mcp後門事件：2025年9月，一個名為postmark-mcp的npm包被其維護者植入後門程式碼，靜默地將每封外發郵件BCC到攻擊者控制的郵箱。這是首個被確認的"野外"惡意MCP伺服器，該包每週有超過1,500次下載，後門存在了數週才被發現。​

參考連結：[Beyond Tool Poisoning: Attack Surfaces of Malicious Remote MCP Servers Across LLM Platforms](https://www.mdpi.com/2079-9292/15/10/2214)​

防禦要點：​

•

只從官方或可信來源安裝MCP伺服器​

•

檢查MCP伺服器的原始碼和依賴​

•

使用MCP-Scanner等工具進行安全掃描​

•

定期審計已安裝的MCP伺服器​

3.2 中間人攻擊（MITM）​

當MCP透過HTTP遠端通訊時，如果未啟用TLS，攻擊者可以攔截和篡改客戶端與伺服器之間的通訊。​

攻擊場景：​

•

篡改工具呼叫引數（如修改資料庫查詢、檔案路徑）​

•

注入惡意工具響應（如返回包含惡意指令的結果）​

•

竊取敏感的認證令牌和API金鑰​

防禦要點：​

•

生產環境必須使用HTTPS/WSS加密傳輸​

•

實施證書固定（Certificate Pinning）​

•

對關鍵操作進行簽名驗證​

3.3 許可權提升攻擊​

MCP伺服器通常以執行使用者的許可權執行操作，攻擊者可以透過漏洞利用實現許可權提升。​

真實案例——MCP-Git伺服器"三連擊"：2026年1月20日，安全研究員Yarden Porat披露了Anthropic官方MCP-Git伺服器的三個嚴重漏洞：​

​



| CVE編號 | 漏洞型別 | 影響 |
| --- | --- | --- |
| CVE-2025-68143 | 路徑穿越 | 可在任意位置建立目錄 |
| CVE-2025-68144 | 引數注入 | 任意檔案覆蓋 |
| CVE-2025-68145 | 邊界繞過 | 讀寫受限目錄 |



​

這三個漏洞在預設安裝的情況下即可被利用，攻擊者可以讀取企業程式碼庫、內部文件、機密配置檔案，甚至透過CI/CD流程汙染供應鏈。​

參考連結：[資訊保安警鐘長鳴——從"MCP協議"爆炸式漏洞到全員防禦的緊迫呼喚](https://blog.securemymind.com/information-security-alarm-bells-are-ringing-from-the-explosive-vulnerability-of-the-mcp-protocol-to-the-urgent-call-for-all-person-defense.html)​

防禦要點：​

•

遵循最小許可權原則執行MCP伺服器​

•

使用沙箱或容器隔離MCP伺服器程序​

•

限制檔案系統訪問範圍​

3.4 資料竊取與篡改​

1）跨上下文汙染​

當使用者同時連線多個MCP伺服器時，所有伺服器的工具定義會被合併到同一個AI上下文中。一個惡意MCP伺服器可以影響AI與其他所有可信伺服器的互動方式。​

2）記憶竊取攻擊​

如前文所述的MSA攻擊，惡意MCP伺服器可以透過"寄生引數"竊取使用者的完整會話上下文，包括與其他MCP伺服器的互動記錄、敏感資料查詢結果等。​

3）供應鏈攻擊​

真實案例——LiteLLM供應鏈攻擊：2026年3月24日，擁有9,500萬月下載量的AI代理框架LiteLLM遭受供應鏈攻擊。攻擊者先入侵了安全掃描工具Trivy的CI/CD管道，獲取了LiteLLM維護者的PyPI釋出憑證，然後在釋出包中植入惡意程式碼，竊取環境變數、SSH金鑰、雲服務憑證等敏感資訊。​

參考連結：[Revelations from the AI Open-Source Library Poisoning Event](https://www.alibabacloud.com/blog/603028)​

四、MCP安全防護實踐​

4.1 傳輸安全加固​

1）強制HTTPS​

生產環境中的MCP通訊必須使用HTTPS，禁止明文HTTP傳輸。​

​

Code block​

Python

​

2）證書驗證​

客戶端應嚴格驗證伺服器證書，防止中間人攻擊。​

​

Code block​

Python

​

4.2 認證授權機制​

1）OAuth 2.1認證​

MCP協議原生支援OAuth 2.1認證，遠端部署的MCP伺服器應強制啟用。​

​

Code block​

Python

​

2）API金鑰管理​

​

Code block​

Python

\# mcp\_apikey\_manager.py​

\# API金鑰安全管理​

​

4.3 輸入驗證與輸出過濾​

1）引數白名單驗證​

對所有工具呼叫引數進行嚴格的白名單驗證，防止路徑穿越、SQL隱碼攻擊等攻擊。​

​

Code block​

Python

\# mcp\_input\_validator.py​

\# MCP輸入驗證器​

​

import re​

from pathlib import Path​

from typing import Any, Dict​

​

class MCPInputValidator:​

\# 允許的檔案路徑模式​

ALLOWED\_PATH\_PATTERN = re.compile(​

r'^/home/user/documents/\[\\w\\-\\.\]+$'​

)​

\# SQL關鍵字黑名單​

SQL\_BLACKLIST = \[​

'DROP', 'DELETE', 'TRUNCATE', ​

​

2）輸出過濾​

​

Code block​

Python

​

4.4 沙箱隔離與許可權控制​

1）容器化部署​

將MCP伺服器部署在容器中，限制其系統訪問許可權。​

​

Code block​

YAML

​

2）最小許可權配置​

​

Code block​

Python

​

五、MCP安全最佳實踐​

5.1 開發階段安全規範​

1）安全編碼檢查清單​

​



| 檢查項 | 說明 | 風險等級 |
| --- | --- | --- |
| 輸入驗證 | 所有外部輸入必須經過白名單驗證 | 高 |
| 輸出編碼 | 輸出資料需要適當編碼，防止注入 | 高 |
| 最小許可權 | 工具只申請必要的許可權 | 中 |
| 金鑰管理 | 禁止硬編碼，使用環境變數或金鑰管理服務 | 高 |
| 依賴審計 | 定期檢查第三方依賴的安全性 | 中 |
| 錯誤處理 | 錯誤資訊不應洩露敏感細節 | 中 |



​

2）工具描述安全​

​

Code block​

Python

\# 不安全的工具描述（包含隱藏指令）​

unsafe\_tool = {​

"name": "read\_file",​

"description": """讀取檔案內容。​

​

​

3）程式碼審查要點​

•

檢查所有工具定義的description欄位，確保沒有隱藏指令​

•

驗證引數schema的完整性，防止引數注入​

•

審查錯誤訊息，確保不洩露敏感資訊​

•

檢查日誌記錄，確保敏感資料被脫敏​

5.2 部署階段安全配置​

1）網路隔離​

​

Code block​

Plain Text

┌─────────────────────────────────────────────────────────────┐​

│ 企業網路架構 │​

│ │​

│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │​

│ │ 使用者終端 │ │ AI應用伺服器 │ │ MCP伺服器叢集 │ │​

│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │​

│ │ │ │ │​

│ └──────────────────┼──────────────────┘ │​

│ │ │​

│ ┌──────▼──────┐ │​

│ │ API閘道器 │ │​

│ │ (認證/限流) │ │​

│ └──────┬──────┘ │​

│ │ │​

│ ┌─────────────────────────┼─────────────────────────┐ │​

│ │ DMZ隔離區 │ │​

│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐│ │​

│ │ │ MCP Server │ │ MCP Server │ │ MCP Server ││ │​

│ │ │ (只讀檔案) │ │ (資料庫) │ │ (API代理) ││ │​

│ │ └─────────────┘ └─────────────┘ └─────────────┘│ │​

│ └───────────────────────────────────────────────────┘ │​

└─────────────────────────────────────────────────────────────┘​

​

2）配置檔案安全​

​

Code block​

YAML

\# mcp\_security\_config.yaml​

\# MCP安全配置模板​

​

server:​

​

5.3 執行時安全監控​

1）異常檢測​

​

Code block​

Python

\# mcp\_anomaly\_detector.py​

\# MCP異常檢測器​

​

import time​

from collections import defaultdict​

from typing import Dict, List​

​

class MCPAnomalyDetector:​

def \_\_init\_\_(self):​

\# 呼叫頻率統計​

self.call\_frequency: Dict\[str, List\[float\]\] = defaultdict(list)​

\# 異常閾值​

self.frequency\_threshold = 100 \# 每分鐘最大呼叫次數​

​

2）實時告警​

​

Code block​

Python

\# mcp\_alert\_system.py​

\# MCP告警系統​

​

import logging​

from datetime import datetime​

from typing import Optional​

​

class MCPAlertSystem:​

def \_\_init\_\_(self):​

self.logger = logging.getLogger("mcp\_alerts")​

self.alert\_handlers = \[\]​

​

def register\_handler(self, handler):​

"""註冊告警處理器"""​

self.alert\_handlers.append(handler)​

​

def trigger\_alert(​

self,​

severity: str,​

​

5.4 安全審計與日誌記錄​

1）審計日誌格式​

​

Code block​

Python

\# mcp\_audit\_logger.py​

\# MCP審計日誌記錄器​

​

import json​

import logging​

from datetime import datetime​

from typing import Any, Dict, Optional​

​

2）OWASP MCP Top 10 安全檢查清單​

​



| 編號 | 風險 | 檢查項 | 防護措施 |
| --- | --- | --- | --- |
| MCP01 | 令牌管理不當 | 禁止硬編碼憑證 | 使用環境變數或金鑰管理服務 |
| MCP02 | 工具投毒 | 檢查工具描述 | 使用MCP-Scanner掃描 |
| MCP03 | 跨上下文汙染 | 隔離MCP伺服器 | 使用獨立上下文 |
| MCP04 | 許可權過度 | 最小許可權原則 | 按需分配許可權 |
| MCP05 | 輸入驗證不足 | 白名單驗證 | 實施輸入驗證器 |
| MCP06 | 輸出洩露 | 敏感資料過濾 | 實施輸出過濾器 |
| MCP07 | 認證缺失 | 強制認證 | 使用OAuth 2.1 |
| MCP08 | 日誌不足 | 完整審計日誌 | 實施審計記錄器 |
| MCP09 | 供應鏈風險 | 依賴審計 | 使用SCA工具 |
| MCP10 | 配置錯誤 | 安全基線檢查 | 使用配置模板 |



​

六、未來展望與建議​

6.1 MCP協議安全演進方向​

1）協議層面的安全增強​

•

強制認證：未來MCP協議可能要求所有遠端伺服器必須實現認證機制​

•

工具簽名：引入數字簽名機制，確保工具定義的完整性​

•

許可權宣告：工具在釋出時宣告所需許可權，客戶端進行稽核​

•

安全配置檔案：定義標準化的安全配置模板​

2）生態安全基礎設施​

•

MCP伺服器認證體系：建立可信的MCP伺服器註冊和認證機制​

•

安全掃描工具：如MCP-Scanner，自動檢測MCP伺服器的安全風險​

•

威脅情報共享：建立MCP安全威脅情報共享平臺​

3）AI模型安全增強​

•

工具描述審計：AI模型在解析工具定義時進行安全審計​

•

異常行為檢測：檢測並阻止可疑的工具呼叫模式​

•

使用者透明度：向使用者展示工具的完整資訊，消除"感知不對稱"​

6.2 企業落地建議​

1）分階段部署策略​

​



| 階段 | 目標 | 措施 |
| --- | --- | --- |
| 第一階段 | 評估 | 盤點現有MCP伺服器，評估安全風險 |
| 第二階段 | 加固 | 實施認證、授權、加密等基礎安全措施 |
| 第三階段 | 監控 | 部署安全監控和告警系統 |
| 第四階段 | 治理 | 建立MCP安全管理制度和流程 |



​

2）組織與治理建議​

•

成立MCP安全工作組：負責MCP安全策略制定和執行​

•

制定MCP安全基線：定義MCP伺服器的安全配置標準​

•

定期安全審計：對MCP伺服器進行定期安全評估​

•

安全培訓：提升開發和運維人員的MCP安全意識​

3）技術防護體系​

​

Code block​

Plain Text

┌─────────────────────────────────────────────────────────────┐​

│ MCP安全防護體系 │​

│ │​

│ ┌─────────────────────────────────────────────────────┐ │​

│ │ 預防層 │ │​

│ │ • 安全編碼規範 • 程式碼審查 • 依賴審計 • 配置基線 │ │​

│ └─────────────────────────────────────────────────────┘ │​

│ ↓ │​

│ ┌─────────────────────────────────────────────────────┐ │​

│ │ 檢測層 │ │​

│ │ • MCP-Scanner • 異常檢測 • 行為分析 • 威脅情報 │ │​

│ └─────────────────────────────────────────────────────┘ │​

│ ↓ │​

│ ┌─────────────────────────────────────────────────────┐ │​

│ │ 響應層 │ │​

│ │ • 自動阻斷 • 告警通知 • 事件響應 • 取證分析 │ │​

│ └─────────────────────────────────────────────────────┘ │​

│ ↓ │​

│ ┌─────────────────────────────────────────────────────┐ │​

​

​

​

總結​

MCP協議作為AI Agent連線外部世界的"USB-C"，其安全問題不容忽視。本文從MCP協議簡介、安全風險分析、典型攻擊手法、安全防護實踐、最佳實踐到未來展望，全面剖析了MCP安全的核心問題。​

關鍵要點：​

1.

MCP的設計初衷是功能性而非安全性，這創造了全新的攻擊面​

2.

工具投毒和跨上下文汙染是MCP獨有的安全風險​

3.

認證缺失是當前最嚴重的安全問題，492+公開MCP伺服器無認證​

4.

分層防護是應對MCP安全挑戰的有效策略​

5.

持續監控和審計是保障MCP安全的關鍵​

隨著MCP生態的快速發展，安全問題將越來越受到重視。企業應儘早建立MCP安全防護體系，在享受AI帶來的便利的同時，確保系統和資料的安全。​

作者：無涯​