保護你的 MCP 系統:11 種常見風險與防範方法
本指南說明 MCP 安全,涵蓋 MCP 系統面臨的 11 種常見風險(從間接提示詞注入到本機伺服器遭入侵),以及有助於防範各項風險的實用步驟。

MCP 風險大致可分為三類:LLM 操弄、資料與存取安全,以及基礎架構漏洞。
由於 MCP 伺服器通常能存取大量內部系統,潛在的安全風險相當高。不過,風險實際發生的可能性在很大程度上取決於設定方式。
個人與企業可以採取許多措施來確保系統受到保護,而防護規範應始終與所連接的 MCP 伺服器可能暴露的功能和資料相稱。
什麼是 MCP 與 MCP 安全?
Model Context Protocol(MCP)是由 Anthropic 建立的開放標準,用於將以 LLM 為基礎的應用程式(或主機)連接至外部系統。
MCP 系統有三個核心元件:主機、用戶端和伺服器。主機通常是 AI 助理,會透過用戶端連接至外部 MCP 伺服器,接著便能傳送請求,以執行外部功能(工具),或擷取要加入 LLM 上下文視窗的資料(資源)或提示詞。
MCP 安全是指保護 MCP 系統中各項連線與元件的防護規範。MCP 面臨數項獨有的關鍵挑戰,例如 AI 應用程式通常具備代理式能力,而且惡意指令可能被嵌入訊息中。
一些並非 MCP 特有的既有問題,例如提示詞注入、薄弱的身分驗證,以及不安全的第三方整合,同樣會造成問題。如同任何電腦系統,MCP 仰賴程序性規範(例如只使用受信任的伺服器)與技術控管(例如 API 閘道)相互搭配來提供保護。
MCP 威脅有多嚴重?
MCP 已迅速成為熱門的 LLM 技術,許多組織與面向消費者的應用程式都在使用。由於 MCP 伺服器是以程式碼撰寫的程式,因此和任何其他應用程式一樣存在漏洞。
不過,當組織在受控的部署環境中使用 MCP 時,通常是安全的。以受信任的伺服器和經過驗證的權限建構系統,與將自主 AI 代理程式連接到十幾個未經審查的伺服器,兩者之間有著天壤之別。
威脅 #1:間接提示詞注入
攻擊者可以將針對 LLM 的指令藏在 MCP 伺服器傳回的文件、網頁或工具輸出中。如果主機將這些內容加入上下文視窗,LLM 就有可能將其誤認為真正的指令。
更麻煩的是,這些指令表面上看起來可能很合理。例如,擷取到的支援工單可能會要求 LLM 在產生回答之前,先匯出敏感的客戶記錄。
如何防範間接提示詞注入
提示詞注入通常應在主機層級處理。外部內容應標示為不受信任,而涉及敏感資訊的請求應由參與流程的人員在充分知情下核准。進行安全測試也很有幫助,例如呼叫惡意文件或資料,觀察主機與 LLM 如何回應。
威脅 #2:工具投毒與抽地毯攻擊
在工具投毒攻擊中,惡意程式碼會被加入 MCP 工具的描述或結構描述(schema)中。這可能在探索階段(也就是 MCP 首次公開可用工具時)影響 LLM。
抽地毯(rug pull)攻擊是一種特殊的工具投毒,會變更已核准的中繼資料。這種形式的工具投毒可能會改變模型使用受信任工具的方式,而非直接呼叫惡意工具。
如何防範工具投毒與抽地毯攻擊
主機應在使用每項工具之前檢查其完整定義,並與已核准的受信任工具清單比對,藉此偵測任何變更。參數檢查有助於找出可能具危險性的功能並加以標記。
威脅 #3:權限過大
使用者經常授予 MCP 伺服器以及(透過主機)連接的 LLM 超出任務所需的權限,例如在唯讀權限就已足夠時授予寫入權限,或授予內部檔案系統(例如 Google Drive)的完整存取權。
這種大幅的權限蔓延可能會擴大其他漏洞(例如惡意工具呼叫)的影響範圍。在企業中,隨著使用者在日常使用 AI 工具的工作過程中不斷授予權限,權限經常會逐漸「累加」(權限累積)。
如何防範權限過大
防範此問題最直接的方法,是限制權限與 OAuth 範圍(讀取、寫入、完整存取等)。使用者核准(尤其是針對敏感操作)是其中重要的一環,但權限也應在系統層級(作業系統、MCP 主機與伺服器)加以控管。
威脅 #4:薄弱的身分驗證與授權
身分驗證用於確認連線至 MCP 伺服器的使用者或應用程式身分。授權則規定他們可以存取哪些工具與資源。
設定不當的 MCP 伺服器可能會在未正確驗證使用者身分或未落實存取限制的情況下,接受請求或權杖。此外,如果驗證機制薄弱,不肖人士可能利用竊取的憑證取得存取權。
如何防範薄弱的身分驗證與授權
針對遠端 MCP 伺服器採用以 OAuth 為基礎的身分驗證、短效權杖,以及角色型存取控制(RBAS),都是有助於緩解授權薄弱問題的措施。角色型存取之所以有用,是因為即使伺服器本身具有存取權,它也能防止使用者存取超出其權限範圍的資料與工具。
威脅 #5:憑證外洩與濫用
MCP 伺服器經常使用 API 金鑰與 OAuth 存取權杖等憑證來連接外部服務。如果這些憑證遭到暴露或濫用,攻擊者便能存取敏感資料與功能。
其中一個例子是權杖傳遞(token passthrough):MCP 伺服器將存取權杖轉送給另一項服務,卻未驗證該權杖是否確實是要給接收服務使用的。如果接收服務的防護不足,就可能因此導致外洩。
如何防範憑證外洩與濫用
短效且範圍有限的權杖,以及憑證輪替,都能有效限制外洩資料遭惡意人士利用的程度。API 金鑰與憑證應始終使用機密管理工具安全地儲存。
威脅 #6:混淆代理人攻擊
當攻擊者誘騙受信任的應用程式利用其權限,執行未經合法使用者授權的動作時,就會發生混淆代理人攻擊。在這種情況下,MCP 伺服器就是那個代理人。
攻擊者會利用 MCP 伺服器的漏洞(例如薄弱的 OAuth 驗證)來執行惡意程序,例如工具呼叫或資料擷取。
如何防範混淆代理人攻擊
授權驗證會確認每次工具呼叫都屬於特定使用者,有助於限制混淆代理人攻擊。此外,資料匯出等敏感動作應要求明確授權。
威脅 #7:惡意伺服器與遭入侵的相依套件
MCP 伺服器可能含有惡意程式碼(它們本質上是外部程式),或依賴遭入侵的相依套件,例如第三方程式庫。這是軟體供應鏈問題,而非 MCP 獨有的問題。
其中一種簡單的發生方式,是攻擊者散布看似合法的整合工具。一旦完成設定,它就可能竊取並重複使用憑證、存取敏感資料,以及執行未經授權的操作。
如何防範惡意伺服器與遭入侵的相依套件
只從受信任且經過審查的來源安裝 MCP 伺服器。如果可以,請檢閱其程式碼,並務必檢查所有外部相依套件。確保伺服器定期更新並修補。
威脅 #8:伺服器端請求偽造(SSRF)
伺服器端請求偽造(SSRF)是指攻擊者誘騙 MCP 伺服器向使用者無意存取的內部位址傳送網路請求。
當 MCP 伺服器公開可從 URL 擷取資訊的工具時,就可能發生這種情況。如果攻擊者能影響 URL 參數,就能將其改成想要的網路位址,例如內部 API 或雲端服務。這可能導致敏感資料遭到擷取,甚至可能被他人存取
如何防範伺服器端請求偽造(SSRF)
MCP 伺服器應始終驗證 URL、封鎖對受限內部網路位址的存取,並防止對外的網路存取。重新導向也應遵循此規範。
威脅 #9:工作階段劫持
工作階段劫持是指攻擊者奪取 MCP 用戶端與伺服器之間有效連線的控制權。
例如,攻擊者可能從安全防護不佳的 MCP 應用程式(例如主機或伺服器)竊取工作階段識別碼。如果 MCP 伺服器接受此識別碼,攻擊者就可能以使用者的合法權限呼叫工具。
如何防範
在 MCP 系統的所有應用程式中落實嚴格的身分驗證,可降低工作階段劫持的風險。MCP 用戶端與遠端伺服器之間的加密也至關重要,可防止工作階段識別碼遭人識破。
威脅 #10:混淆攻擊
在混淆攻擊(mix-up attack)中,攻擊者會誘騙 MCP 用戶端將授權碼傳送至介於用戶端與 MCP 伺服器之間的惡意授權伺服器。授權伺服器是一種應用程式,會在確認所請求的存取已獲授權後,核發 OAuth 存取權杖。
如果 MCP 主機連接多項服務,而每項服務各自使用不同的授權伺服器,攻擊者就可能控制其中一個授權伺服器(或許是透過註冊惡意服務),並使用戶端將合法伺服器核發的授權碼傳送至惡意伺服器。這種混淆可能讓攻擊者冒充已獲授權的應用程式,進而存取受保護的服務。
如何防範混淆攻擊
MCP 用戶端應在整個 OAuth 流程中驗證授權伺服器的身分。具體來說,用戶端應將伺服器的簽發者識別碼(iss)與預期身分比對,並拒絕不相符的結果。
威脅 #11:本機 MCP 伺服器遭入侵
許多 MCP 伺服器在使用者的本機電腦上執行。使用者可能從第三方安裝伺服器,或自行建置。如果攻擊者能入侵這台本機 MCP 伺服器,就可能取得本機系統大部分的存取權。
攻擊者取得存取權的方式有很多種。他們可能散布偽裝成合法整合工具的惡意伺服器、修改 MCP 主機的設定使其發出惡意指令,或存取在安全控管不足的環境中執行的 MCP 伺服器,例如透過 DNS 重新綁定(DNS rebinding)誘騙瀏覽器向 localhost 服務傳送請求。
如何防範本機 MCP 伺服器遭入侵
使用本機 MCP 伺服器時,沙箱機制與嚴格的同意規範非常重要。MCP 伺服器只能從受信任的供應商安裝,且應透過作業系統權限限制其可存取的目錄。
MCP 漏洞往往是換湯不換藥的舊威脅
MCP 漏洞通常源自既有風險與攻擊手法的新應用。MCP 透過 LLM、MCP 伺服器與外部服務之間的互動,為攻擊者帶來利用這些漏洞的新途徑。
當然,MCP 特有的威脅確實存在。不過值得注意的是,標準安全規範(例如落實嚴格授權、使用受信任的供應商,以及防範提示詞注入)對保護任何 MCP 實作都大有幫助。