AIDEFEND in Action AIA-0108 實證研究 發布於 AIA: 2026年10月26日

MCP Python SDK:任務處理未檢查擁有者,其他工作階段也能讀取或取消

MCP Python SDK 用來連接 AI 應用與工具,也提供實驗性的長時間任務功能。當多個用戶端共用的伺服器啟用受影響的預設任務處理器時,另一個用戶端可以列出任務、讀取結果,甚至取消別人的工作,因為處理器沒有檢查任務屬於哪個工作階段。這個漏洞的公開識別編號是 CVE-2026-52870。1.27.2 版修補預設產生的任務 ID;自行指定 ID 或直接寫入 TaskStore 的路徑,仍須另外確認擁有權檢查。

Permission BypassSession IsolationMCP Security
2 項對應的 AIDEFEND 防禦手法

威脅分析

  • 定位任務不等於取得授權:預設處理器只使用傳入的任務 ID,沒有檢查建立任務的工作階段。列出、讀取與取消是不同操作,每一項都必須各自驗證擁有權。
  • 資料讀取與工作取消是替代結果:另一個用戶端可以讀取任務內容,也可以直接取消工作。因此流程在發現 ID 後分成兩條路徑;讀取成功不是取消的前提。來源沒有指明特定 LLM、私人文件類型或正式環境受害者。
  • 修補有明確範圍:1.27.2 會在 run_task 預設產生的 ID 中加入工作階段標記,並篩選預設處理器的操作。自行指定 ID 或直接寫入 TaskStore,不會只因升級就自動具備正確的擁有權限制。

適用的 2 項 AIDEFEND 防禦手法

AID-H-003.010
Deployed AI Software Vulnerability Remediation Lifecycle
極高
將受影響伺服器更新到 SDK 1.27.2 或受支援的更新修補版,確認每個工作程序實際載入的套件。用兩個獨立用戶端測試 list/get/result/cancel,並涵蓋自行指定 ID 與直接寫入 TaskStore 的路徑。公開修補會限制預設產生的 ID;自訂路徑若無法驗證擁有權,就要替換處理器或停用實驗性 Tasks。只有版本號正確,還不能結案。
AID-H-034.007
MCP Task & Subscription Lifecycle Isolation
中
維護自訂任務處理器的團隊,應把持久化任務綁定到已驗證的主體、用戶端與租戶,並在每次讀取或取消前各自檢查擁有權。受影響的舊版 list/get/result/cancel 方法與自訂 ID,需要另行整合並測試。目前 G001 描述的是 2026-07-28 新版 Tasks 擴充,部分舊方法已移除,範例不能直接拿來修補這個 SDK。此處對應的是實際完成並驗證的任務擁有權檢查;部署前仍需要協定遷移或舊版整合元件。

身為資安防禦者,我們應該這麼做

  • 盤點哪些伺服器實際啟用了實驗性 Tasks,完成更新;不需要這項功能的部署維持停用。
  • 以兩個真正獨立的用戶端工作階段,測試清單、猜測或複製的 ID、get、result、訊息與取消操作。更新前後都要測,並涵蓋自訂 ID 與直接寫入儲存區的情況。
  • 自訂任務服務應在每個處理器,依已驗證的身分檢查任務擁有權,或經相容性測試後遷移到新版 Tasks 擴充。不能把 ID 很難猜,當成整套授權機制。

結論

AIDEFEND  將 SDK 修補驗證,與自訂服務必須落實的任務生命週期授權分開。每一次讀取與取消都綁定到真正的擁有者,比在原本就支援多個用戶端的伺服器前面再加一個登入檢查,更能處理本案缺少的防線。

最後更新: