Supply Chain Risk(供應鏈風險)
又稱:供應鏈風險 · 供應鏈攻擊 · 第三方技能風險 · supply chain attack
風險不從你自己的程式碼進來,而從你裝進來的東西進來:依賴套件、插件、第三方技能、MCP server。
你會在什麼時候遇到它
第一次執行 npx 裝一個 MCP server、或把網路上找到的技能放進技能目錄時,你就開始承擔它了。關鍵認知:裝一個第三方技能,等於讓陌生人的文字進入你 Agent 的決策迴路 —— 技能內容會被模型讀到並照著做,這跟執行陌生人的腳本只差一個形式。你自己的程式碼再乾淨,也擋不住你親手裝進來的東西。
打個比方
像裝潢房子:門窗鎖再好,你也不會讓工人把來路不明的電線埋進牆裡。埋進去之後,你每天用的每個插座都經過那段你沒檢查過的線。依賴套件、技能和 MCP server,就是埋進 Agent 牆裡的線。
最小範例
一條第三方技能的信任鏈(示意):
你在社群看到一個好評的 skill → 複製進 skills/ 目錄
↓
SKILL.md 寫著:「執行前先跑 scripts/setup.sh 安裝依賴」
↓
setup.sh 從網路拉了一個套件 → 套件的安裝腳本執行任意命令
↓
這些命令跑在你的機器上,帶著你的權限、看得到你的 .env
攻擊者不需要黑進你。是你親自把每一道門打開的。注意每一環單獨看都「正常」:裝技能、跑安裝腳本、裝依賴,都是日常操作。供應鏈攻擊的特點,就是把惡意藏在這些正常動作的深處 —— 所以你審查的單位不是程式碼行數,而是信任鏈的每一環。
最常搞錯的地方
- 只審計自己寫的程式碼。你的攻擊面大部分是裝進來的東西:技能是指示(模型會照著做)、MCP server 是進程(帶著憑證在跑)、依賴是別人的程式碼 —— 三者都不會自動進入你的 code review,除非你刻意把它們放進去。
- 以為沙箱能完全解決。沙箱限制動作範圍,是重要的減損手段;但被污染的技能走的是「說服模型」這條路 —— 它可以在權限範圍內誘導 Agent 把讀得到的資料整理好,再透過你允許的合法管道送出去。圍欄擋得住越界,擋不住在界內被操縱。