新發布SkillSec:把 Skills 安全從惡意檢測,升維到能力審計SkillSec瞭解更多 →
安全研究

從 npm 蠕蟲到 MCP 投毒:AI Agent 供應鏈攻擊的演化與防線

安勢研究院·2026.07.06·2 分鐘閲讀

軟件供應鏈投毒不是新故事:2018 年 event-stream 被植入竊取加密貨幣錢包的後門;2021 年周下載量近 800 萬的 ua-parser-js 遭劫持分發挖礦與竊密程序;2024 年的 xz/liblzma 後門(CVE-2024-3094)更是讓攻擊者花三年時間潛伏社區、差一步就進入全球主流 Linux 發行版。2025 年 9 月,自我複製的 npm 蠕蟲 「Shai-Hulud」 感染數百個包,用被竊的維護者憑證自動向下游繼續投毒——攻擊已經從「手工作坊」進化到「自動化流水線」。

攻擊面正在向 Agent 生態遷移

當企業開始大規模使用 AI Agent,一個新的、監管幾乎空白的分發渠道出現了:MCP 服務器與 Agent Skill。它們像插件一樣被安裝,卻擁有比傳統依賴大得多的權限——讀寫文件、調用內部 API、發送郵件、操作瀏覽器。

真實事件已經發生。2025 年 9 月曝光的 postmark-mcp 事件中,一個在 npm 上發佈的 MCP 服務器在若干個版本里表現完全正常,隨後的更新悄悄加入一行代碼:把用户發出的每封郵件密送到攻擊者的郵箱。安全研究機構還演示了「工具投毒」(tool poisoning):把惡意指令藏在 MCP 工具描述裏,誘導模型在用户不知情時讀取並外傳 SSH 私鑰;mcp-remote 的遠程命令執行漏洞(CVE-2025-6514,CVSS 9.6)則證明連接一個不可信 MCP 服務器本身就可能導致主機淪陷。

為什麼「惡意檢測」不夠用

傳統安全工具面對這些威脅有一個結構性盲區:Skill 的危險往往不來自惡意代碼,而來自它被授予的能力組合

  • 説明書即攻擊面:Skill 的行為很大程度由自然語言描述(如 SKILL.md)驅動,提示注入可以藏在文檔裏,靜態掃描器根本不看這些文件。
  • 善意也危險:一個功能正常的「郵件摘要」 Skill,同時擁有讀郵件和訪問外部 API 的能力,就構成了現成的數據外傳通道——它沒有一行「惡意代碼」。
  • 組合攻擊鏈:單個 Skill 無害,多個 Skill 的能力疊加(讀文件 + 網絡訪問 + 定時任務)可能拼出完整的滲透路徑。

所以正確的問題不是「它是不是惡意的」,而是「它被啓用後,Agent 將獲得哪些需要審批的能力」。這正是能力審計與惡意檢測的分水嶺。

企業的三道防線

第一道:准入卡點。任何 MCP 服務器、Skill 在進入企業環境前必須過審計,輸出明確的 block / need_review / pass 判定,而不是裝完再説。安勢 SkillSec 把這套方法產品化:7 大風險域、30+ 結構化能力標籤、E1–E5 證據分級,證據鏈精確到 SKILL.md 行號。

第二道:版本持續監控。postmark-mcp 的教訓是「上架時乾淨」不等於「永遠乾淨」,每次版本更新都應重新過審,重點盯行為差異。

第三道:運行時最小權限。按能力標籤配置 Agent 的實際授權,把「可以做」收斂到「需要做」,讓即使漏網的投毒也難以變現。

MCP 與 Skill:兩種信任模型,兩套審計要點

雖然常被並列討論,兩者的風險結構並不相同。MCP 服務器是運行時服務——動態、可遠程、隨時可被更新,審計重點是端點行為與工具描述的漂移:昨天審計通過的服務器,今天一次靜默更新就可能改變行為,postmark-mcp 正是這條路徑。Skill 是能力包——説明書(SKILL.md)加腳本的靜態組合,最大的風險是「聲明與實現的背離」:文檔説只讀,腳本卻在寫;文檔説本地處理,代碼卻在外聯。審計必須同時讀自然語言與代碼,並核對兩者是否一致,這也是為什麼傳統只看代碼的掃描器在這個生態裏天然失明。

標準層面的共識正在形成:OWASP 已將供應鏈風險列入面向 LLM 與 Agentic 應用的風險清單,企業側則完全可以把既有的「軟件准入」治理框架向 Agent 生態延伸——同樣的資產台賬、同樣的准入評審、同樣的版本變更管控,只是審計對象從依賴包擴展到了 MCP 與 Skill。工具在變,治理的第一性原理沒變:任何進入生產環境的第三方能力,都必須先回答「它能做什麼」。

供應鏈攻擊的歷史規律是:分發渠道在哪裏,投毒就會跟到哪裏。npm 用了七年才建立起相對成熟的防禦共識,Agent 生態沒有七年可等——它的權限太大、增長太快。把審計放在啓用之前,是現在就能做的事。

MCP 安全Skill 安全供應鏈投毒AI AgentSkillSec

相關閲讀

技術解讀

SBOM 不止是合規清單:從「我用了什麼」到「我能承受什麼」

很多團隊把 SBOM 當成一份交差用的清單。但真正有價值的 SBOM,是能驅動決策的:哪些漏洞可被利用、哪條依賴該先修、哪個許可證會帶來風險。