所有節目›AI Engineer Europe 2026World's Fair 2026World's Fair 線上軌AI in HealthcareSoftware Factories
Your Insecure MCP Server Won't Survive Production在 YouTube 看這一場

AI Engineer Europe 2026 · 演講 · 2026-04-08 · 25 分

MCP 伺服器上線前的安全課

Your Insecure MCP Server Won't Survive Production · Tun Shwe,Lenses

Lenses 的 Tun Shwe 與 Jeremy 先談 MCP 工具怎麼設計才安全,再拆解從本機走到遠端部署時,OAuth、DCR 與 CIMD 各自解決與留下什麼問題。

權限邊界看原片 ↗

概要

  • 設計不好,安全也不好Tun Shwe 認為設計差和安全差會互相放大,設計沒做對,後面再多 OAuth 也救不了,再借 Jeremiah Lowin 提的 agent 與人的三個差異(探索、重試、context),逐一補上各自的安全風險。
  • 五條安全設計原則縮小攻擊面、在 schema 層限制輸入、把文件當防線、只回傳 agent 需要的資料、縮小爆炸半徑。Tun 說這五條在寫任何一行驗證程式之前就能擋掉 OWASP MCP top 10 裡的風險。
  • 從 stdio 到遠端是一道懸崖本機 stdio 不需要驗證,上線要用 streamable HTTP,OAuth、token 管理、TLS、rate limiting 得一次到位,沒有漸進的過渡。
  • API key 的做法撐不久Jeremy 說今天多數遠端 MCP 伺服器還是用長效、沒有範圍限制的 API key,這種做法仍占 50% 以上。
  • DCR 解決註冊,卻帶來新問題動態註冊讓 client 不必預先登記,但每次連線都會多一筆註冊、任何人都能對註冊端點送請求,伺服器也只能相信 client 自己宣稱的資訊。
  • CIMD 是目前偏好的做法client 把自己的 ID 公開在一個網址上,由授權伺服器去抓。Jeremy 說這是 2025 年 11 月起的偏好做法,企業級還要再加權限、遮罩、記錄與追蹤。

原話

  • “A badly designed MCP server is also a badly secured one.”

    設計差的 MCP 伺服器,安全也差。這句是 Tun 自己的主張

    ▶ 01:49
  • “If you get the design wrong, no amount of OAuth will save you.”

    設計做錯,再多 OAuth 也救不了你。Tun 說的

    ▶ 04:58
  • “you're either behind the wall or you're standing out in the open”

    你不是躲在牆後,就是站在空地上。Tun 在講上線沒有半套

    ▶ 09:36
  • “Anyone can post to that endpoint, the slash register endpoint, including attackers.”

    任何人都能對那個 /register 端點送請求,包括攻擊者。Jeremy 在講 DCR 的缺點

    ▶ 19:26
  • “If you cannot trace what an agent did end-to-end, you cannot govern it.”

    無法端到端追蹤 agent 做了什麼,就談不上治理。Jeremy 說的

    ▶ 23:40

延伸

  • Tun 在談 context 那段說 agent 大約只有 200,000 個 token 可用,沒有再說明這個數字的來源。
  • 壓測那段 Tun 只說是 Stacklok 做的,沒有交代測試條件,筆記只收報出來的數字。
  • Jeremy 最後只提到企業級還需要權限、遮罩、記錄與追蹤,沒有展開各自的實作方式。

章節

點時碼直接跳到原片的那一段。

  1. 開場與 LensesTun 與 Jeremy 自我介紹,Lenses 把自己定位成給 agentic AI 提供即時資料脈絡的資料層,這場拿他們的開源 MCP 伺服器經驗來談。
  2. 設計與安全是同一回事Tun 引用 FastMCP 作者 Jeremiah Lowin 的說法:agent 該有自己的介面,再往前推一步:設計差的 MCP 伺服器,安全也一定差。
  3. 探索、重試、context 的陰影Jeremiah 提出人和 agent 的三個差異,Tun 替每一個補上安全陰影:工具描述可被下毒、每次重試都重送完整對話、有限的 context 被敏感資料塞滿。
  4. 精選工具把所有內容先載進來再決定,找得到特定東西,卻要付出延遲與 context 膨脹,內容被下毒也不會被發現,所以要策展,只露出最少的工具。
  5. 原則一與二把細碎操作收成一個以結果為導向的工具,一個工具只需要一次權限檢查;輸入限制在 schema 層,拒絕自由格式的巢狀內容。
  6. 原則三到五文件寫完整可擠掉鄰近伺服器下毒的空間;回傳只給必要資料;權限以工具與資源為單位,非破壞性工具標 read-only。
  7. 安全懸崖stdio 是單人、無網路、免驗證的圍牆花園;要給整個團隊用就得換 streamable HTTP,也才讓 MCP 變成共用能力。
  8. 沒有半套的上線上線沒有漸進路線,OAuth、token 管理、TLS 與 rate limiting 要一次到位;Tun 引用 Stacklok 對 stdio 做的壓測:20 個同時連線下,22 個請求失敗了 20 個。
  9. OAuth 的規格負擔Jeremy 接手,指出自己實作 MCP 的授權伺服器,要面對超過 10 份規格,接著先看本機 stdio 搭 API key 的流程。
  10. 遠端 API key 的問題key 放在 HTTP 標頭,長效又沒有範圍;直接轉給上游會造成 confused deputy 問題,有時則對應成另一把上游 key,變成一個共用憑證服務很多使用者。
  11. 預先註冊行不通傳統 OAuth 假設 client 事先登記,但 MCP 是不特定數量的 client 連不特定數量的伺服器,所以要有自行註冊的方式。
  12. DCR 完整流程從 401 與資源中繼資料開始,到 /register、PKCE、授權碼換 JWT,最後 MCP 伺服器再做 token exchange 拿到呼叫 API 的 session token。
  13. DCR 的缺點每次連線都新增註冊且不能搬走;註冊端點人人可送,容易被釣魚;伺服器只能相信 client 自稱的資料。
  14. CIMD 的做法client 把 ID 公開成網址,授權伺服器去抓中繼資料,不必再有註冊步驟,也不需要註冊資料庫。
  15. 企業級還差什麼CIMD 是 2025 年 11 月起的偏好做法;企業級還要工具層級的權限、PII 遮罩、呼叫記錄與端到端追蹤。

名詞

Lenses
Tun 與 Jeremy 任職的公司,自稱是給 agentic AI 提供即時資料脈絡的資料層,這場談的開源 MCP 伺服器是他們的
Jeremy
這場的第二位講者,在 Lenses 做 AI 工程,負責 OAuth 流程那一半
Jeremiah Lowin
FastMCP 的作者,主張 agent 需要專屬介面,也提出人與 agent 在探索、重試、context 三方面的差異
OWASP MCP top 10
Tun 用來對照風險的清單,提到工具下毒排第 3,context 注入與過度分享排第 10
Tool poisoning
攻擊者把隱藏指令寫進工具描述,UI 看不到,模型卻會照做
streamable HTTP
讓 MCP 遠端部署、多個 client 共用、可水平擴充的傳輸方式,相對於本機的 stdio
DCR
Dynamic Client Registration,client 連線時自行向授權伺服器註冊並拿到新的 client ID
PKCE
授權碼流程用的 proof key,client 先產生 code verifier 與 code challenge,換 token 時再驗證
Token exchange(RFC 8693)
MCP 伺服器拿使用者的 token 換一個呼叫上游 API 用的 session token
CIMD
Client ID Metadata Document,client 把 ID 公開成網址,授權伺服器直接去抓它的中繼資料

相關影片 同屬「權限邊界」