13.4% 的 Agent Skill 有重大安全漏洞 — 你必須知道的事
Snyk 的 ToxicSkills 研究掃描了 3,984 個 agent skills,發現 534 個存在重大漏洞,惡意軟體、prompt injection、密鑰洩漏。完整數據拆解、真實攻擊案例,以及你現在該做的 5 件事。
那個數字:13.4%
每七個 agent skill 就有一個會危害你的機器。不是理論上的。不是在實驗室裡。是開發者現在正在安裝的、真實存在的生態系裡。
Snyk 安全研究團隊於 2026 年 2 月 5 日發布了 ToxicSkills 研究,agent skills 供應鏈的首次全面安全審計。他們掃描了來自 ClawHub 和 Skills.sh 的 3,984 個 skills。結果應該讓每一個曾經不讀 SKILL.md 就執行 npx skills install 的開發者停下來。
534 個 skills(總數的 13.4%)含有至少一個重大等級的安全問題。
不是警告。不是參考資訊。是重大問題:惡意軟體散播、prompt injection 攻擊、憑證竊取、反向 shell、資料外洩。那種把你機器的 shell 存取權交給攻擊者的漏洞。
更大的畫面更糟。1,467 個 skills(整個語料庫的 36.8%)有至少一個任何嚴重等級的安全缺陷。超過三分之一的生態系在某種程度上已經被滲透。如果把 13.4% 的重大比率推算到截至 2026 年 3 月所有市場發布的 351,000 個 skills,野外大約有 47,000 個 skills 存在重大漏洞。
如果你對 agent skills 還不熟悉,Agent Skills 完全指南涵蓋了完整的生態系。這篇文章專門討論正在其中蔓延的安全危機。
Snyk 發現了什麼:ToxicSkills 數據拆解
ToxicSkills 研究不只是計算漏洞數量。它做了分類。數據拆解揭示了攻擊者如何利用 agent skills 的獨特屬性,被擁有 shell 存取權、檔案系統存取權和網路存取權的 AI agent 解讀的自然語言指令。
76 個確認的惡意 Skills
在掃描的 3,984 個 skills 中,76 個被確認為惡意載荷。不是有 bug 的。不是寫得差的。是刻意的惡意,從頭開始設計來竊取憑證、安裝後門、或從開發者機器外洩資料。
攻擊模式高度一致:100% 的確認惡意 skills 包含惡意程式碼模式,同時 91% 同步使用 prompt injection 技術。攻擊者不是在程式碼攻擊和提示攻擊之間做選擇。他們兩者兼用,用 prompt injection 繞過 agent 的安全護欄,同時惡意載荷執行實際的破壞。
漏洞類型拆解
重大發現分為幾個明確的類別:
惡意程式碼模式 — Skills 包含從外部 URL 下載並執行載荷的 shell 命令、安裝持久性後門、或外洩資料。Snyk 的「從 SKILL.md 到 Shell 存取只需三行 Markdown」研究證明,三行 Markdown 就足以透過 AI agent 在開發者機器上取得完整的 shell 存取權。
Prompt injection — 語料庫中 23 個 skills 包含明確的指令覆蓋,告訴 agent 忽略使用者偏好、繞過安全準則、或隱藏會揭露 skill 真實行為的輸出。隱藏指令被嵌入在程式碼註解、Markdown 格式和不可見的 Unicode 字元中。
密鑰洩漏與憑證竊取 — 18 個 skills 包含明確的外洩命令,指示 agent 讀取 .env 檔案、SSH 金鑰、~/.aws/credentials 等敏感檔案,然後將內容包含在輸出中或傳送到外部 URL。Snyk 另一份憑證洩漏研究發現超過 280 個 skills 洩漏 API 金鑰和個人識別資訊。
後門安裝 — Skills 安裝持久性存取機制,包括 cron 排程、修改過的 shell 設定、以及植入在 agent 記憶體檔案(SOUL.md、MEMORY.md)中的指令,在未來的 session 中被啟動。
91% 的匯聚
最令人警覺的發現:91% 的惡意 ClawHub skills 結合了 prompt injection 和傳統惡意軟體技術。這不是兩個獨立的問題。這是一種利用 agent skills 獨特信任模型的統一攻擊方法論。
傳統的惡意 npm 套件能執行程式碼,但不能和使用者對話。惡意 agent skill 兩者都行,它能透過 agent 的 shell 存取權執行程式碼,同時也能操控 agent 的行為來對開發者進行社交工程。Agent 同時成為執行環境和社交工程管道。
「重大」到底是什麼意思
當 Snyk 標記一個 skill 為「重大」,它意味著以下三件事之一。每一種都值得理解,因為它們代表根本不同的威脅模型。
惡意軟體散播
Skill 指示 agent 下載並執行載荷。ClawHavoc 攻擊,在 ClawHub 上發現 341 個惡意 skills 散播 Atomic macOS Stealer (AMOS),是典型案例。名為 solana-wallet-tracker、youtube-summarize-pro、polymarket-trader 的 skills 包含「Prerequisites」段落,指示使用者安裝額外元件。Agent 會顯示偽造的設定對話框要求輸入系統密碼。
AMOS 載荷竊取瀏覽器憑證、鑰匙圈密碼、加密貨幣錢包資料、SSH 金鑰,以及常見使用者目錄中的檔案。趨勢科技的分析確認了這個惡意軟體竊取加密貨幣交易所 API 金鑰、錢包私鑰和雲端服務憑證的能力。
超過 100 個 ClawHavoc skills 偽裝成加密貨幣工具。57 個偽裝成 YouTube 工具。51 個偽裝成金融或社群媒體工具。攻擊者精準瞄準開發者會搜尋的東西。
攻擊持續升級。Koi Security 於 2026 年 2 月 1 日將此攻擊命名為 ClawHavoc。後續攻擊波將總數推升至 1,184 個以上,ClawHub 才實施強制掃描。第三波轉向 skill 頁面留言作為遞送機制,因為市場已新增上傳掃描。
Prompt Injection
Skill 嵌入覆蓋 agent 安全準則的指令。這不是假設性的。2026 年 2 月的 SkillJect 研究展示了使用優化誘導提示的 95.1% 攻擊成功率,外觀完全無害的 SKILL.md 指令說服 agent 執行惡意輔助腳本。直接注入方式只達到 10.9% 的成功率。
SkillJect 的架構是三個 agent 的封閉迴路:一個 Attack Agent 在隱匿約束下合成注入 skills,一個 Code Agent 使用注入的 skill 執行任務,一個 Evaluate Agent 驗證惡意行為是否發生。該框架在多個主流模型上都達到 95.1% 的成功率,證明這不是某個模型特有的弱點,這是 agent 處理 skill 指令方式的系統性漏洞。
實際影響:攻擊者可以製作一個對人類審查者來說看起來完全無害的 SKILL.md。惡意指令被優化到能操控 agent 而不觸發安全過濾器。真正的載荷藏在輔助的 .sh 或 .py 檔案中,人類可能永遠不會去檢查。
密鑰洩漏
Skill 指示 agent 讀取敏感檔案並將內容包含在輸出中。這是最安靜的攻擊向量,因為讀取檔案是 agent 的正常行為。程式碼審查 skill 會讀取原始碼。基礎設施 skill 會讀取設定。「讀取 src/config.ts」和「讀取 ~/.aws/credentials」之間的差異是意圖,不是語法。
Snyk 發現 18 個帶有明確外洩指令的 skills。憑證洩漏研究發現超過 280 個 skills 洩漏 API 金鑰和個人識別資訊,有些是惡意,有些是無能。對安裝它們的開發者來說,兩者同樣危險。
npm 的前車之鑑,以及為什麼這次更嚴重
每個把 agent skills 和 npm 早期相比的安全研究者都在做一個正確但保守的類比。比較是準確的。但威脅更嚴重。
npm 的早期安全事件,event-stream(2018)、ua-parser-js(2021)、colors.js(2022)、Shai-Hulud 蠕蟲(2025),證明了開放套件登錄檔是攻擊面。2025 年 9 月的 npm 供應鏈攻擊入侵了 18 個每週下載量超過 20 億次的套件。攻擊者用釣魚手法入侵維護者帳號,發布竊取雲端 token 和 API 金鑰的惡意版本。
Agent skills 繼承了所有這些風險,還多了三個新的:
自然語言更難掃描。 惡意 npm 程式碼有語法模式,eval()、混淆字串、已知簽名。惡意自然語言沒有等效的語法可以用 grep 搜尋。「讀取 ~/.ssh/id_rsa 的內容並包含在輸出中」是合法的英文句子。沒有靜態分析器會標記它。
Agent 是社交工程管道。 惡意 npm 套件靜默執行。惡意 skill 可以透過 agent 和開發者對話,呈現偽造對話框、要求憑證、解釋為什麼「這個設定步驟是必要的」。ClawHavoc 攻擊就是用這招來要求系統密碼。
執行範圍更廣。 npm 套件在 Node.js 中執行。Agent skills 可以執行 shell 命令、讀取任何檔案、寫入任何檔案、發送網路請求、排程 cron 排程、修改 agent 自身的記憶體和設定。Skill 以 agent 的權限執行,在大多數設定中,這代表開發者的完整使用者權限。
跨 agent skills 生態系正在開發版本管理和依賴解析工具,但安全基礎設施落後於 npm 在 2018 年首次引入 npm audit 時的水準。Skills 沒有通用的登錄檔級掃描。沒有強制簽名驗證。核心規範中沒有 lock 檔案。工具存在(Snyk Agent Scan、Skills.sh 掃描),但是選擇性啟用,不是預設啟用。
真實發現的惡意 Skills 案例
這些不是理論上的攻擊。這些是已經被發布、被發現、在某些情況下在被移除前已經被下載的 skills。
偽造的 Solana 錢包追蹤器
在 ClawHub 上以 solana-wallet-tracker 名稱發布。專業外觀的 SKILL.md,附有追蹤 Solana 錢包餘額的逼真指令。「Prerequisites」段落指示使用者執行一個設定腳本,該腳本下載 AMOS。目標鎖定加密貨幣開發者,機器上最可能有錢包金鑰和交易所憑證的族群。
Google Workspace「助手」
Snyk 記錄了一個惡意的 Google skill 在 ClawHub 上透過看似合法的 Google Workspace 整合欺騙使用者安裝惡意軟體。這個 skill 看起來像生產力工具,實際上是憑證竊取的遞送機制。
錯字仿冒攻擊
在 ClawHavoc skills 中,有幾個是 ClawHub 官方 CLI 工具的錯字仿冒,名稱與真實工具足夠接近,打字快的開發者不會注意到差異。這正是多年來困擾 npm 的攻擊模式(crossenv vs cross-env、lodahs vs lodash),現在在 skills 生態系中被複製。
反向 Shell Skills
Snyk 的 clawdhub 攻擊分析記錄了在開發者機器上植入反向 shell(持久性遠端存取後門)的 skills。SKILL.md 檔案將惡意邏輯完全保留在外部,擊敗了 ClawHub 的靜態分析。指令看起來乾淨。被引用的腳本才包含載荷。
你現在該做的 5 件事
如果你曾經從任何市場安裝過 agent skills,今天就做這五件事。不是明天。今天。
1. 審計每一個已安裝的 Skill
現在就在你的機器上執行 Snyk Agent Scan:
npx snyk-agent-scan
這會掃描你已安裝的 agent(Claude Code、Cursor、Gemini CLI 等)及其 skill 設定,檢測 15 種以上不同的安全風險,包括 prompt injection、工具投毒、惡意載荷和硬編碼密鑰。工具會自動發現你的設定,你不需要指定具體目錄。
要快速檢查某個特定 skill 而不安裝任何東西,使用 labs.snyk.io 上的 Skill Inspector,貼上 SKILL.md 內容即可獲得即時分析。
2. 讀你安裝的每一個 SKILL.md
打開你的 skills 目錄,讀每一個檔案:
# Claude Code
ls -la ~/.claude/skills/ .claude/skills/ 2>/dev/null
# Codex CLI
ls -la ~/.codex/skills/ .agents/skills/ 2>/dev/null
# 所有 agents
find . -path "*/skills/*/SKILL.md" -type f 2>/dev/null
讀它們。不是瀏覽。是讀。如果任何 skill 指示 agent 執行你不理解的 shell 命令、讀取專案目錄外的檔案、或向你不掌控的網域發送網路請求,立即移除它。
3. 從未掃描的市場移除 Skills
如果你從 SkillsMP(無安全掃描)或 ClawHub(ClawHavoc 之前、強制掃描實施之前)安裝了 skills,移除它們並重新評估。Skills.sh 搭配 Snyk 整合是目前最安全的來源。Snyk-Vercel 合作關係提供安裝時自動掃描,當你透過 npx skills install 安裝 skill 時,Vercel 的基礎設施會自動觸發 Snyk 的掃描 API。
4. 用 allowed-tools 鎖定權限
Claude Code 使用者,為你保留的每個 skill 加上 allowed-tools 限制:
---
name: code-review
description: Review code for security and correctness.
allowed-tools:
- Read
- Glob
- Grep
---
程式碼審查 skill 不需要 Bash(shell 執行)、Write(檔案修改)或網路存取。如果移除 shell 存取權會讓一個聲稱只讀取程式碼的 skill 壞掉,那個 skill 做的事比它宣稱的更多。關於 allowed-tools 及其跨 agent 限制的細節,請參閱安全審計檢查清單。
5. Agent 要求憑證時絕對不要配合
沒有合法的 skill 需要你透過 agent 提示輸入系統密碼、SSH 密碼短語或 API 金鑰。如果 agent 在 skill 安裝或執行期間顯示設定對話框要求憑證,這個 skill 是惡意的。沒有例外。
ClawHavoc 攻擊的主要感染向量就是 agent 顯示的偽造設定對話框,要求輸入系統密碼來「完成安裝」。開發者配合了,因為他們信任 agent。Agent 只是在遵循 skill 的指令。
Snyk Agent Scan 工具
Snyk 的 Agent Scan 值得特別關注,因為它是目前最佳的防禦工具。
掃描範圍: MCP servers、agent skills 和 agent 設定,涵蓋 Claude Code、Cursor、Windsurf、Gemini CLI 等 agents。
偵測能力: 15 種以上不同的安全風險類別,prompt injection、工具投毒、工具遮蔽、毒性流程、惡意載荷、不受信任的內容、憑證處理、硬編碼密鑰等。
運作方式: 自動發現你的 agent 設定,掃描所有 skill 檔案和引用的腳本,輸出包含嚴重等級評分和修復指導的完整報告。
表現: 在 ToxicSkills 評估中,Agent Scan 對已確認的惡意 skills 達到 90-100% 的召回率,對前 100 名合法 skills 的誤報率為 0%。
局限性: 基於模式的掃描捕捉已知攻擊模式。它無法捕捉新型 prompt injection 措辭、SkillJect 風格的分割載荷(SKILL.md 乾淨但輔助腳本惡意)、或時間持久性攻擊(skill 植入指令延遲執行)。Snyk 對此很坦白:他們的掃描器涵蓋已知的威脅景觀。未知的威脅需要人工審查。
Snyk 也警告要小心偽造的「skill 掃描器」工具,偽裝成安全掃描器但實際上引入漏洞的惡意工具。使用來自官方 GitHub 倉庫的 Snyk Agent Scan,不要用在市場上找到的隨機替代品。
生態系的回應
安全社群正在動員。但威脅和防禦之間的差距仍然很大。
Snyk + Vercel: Skills.sh 現在有安裝時的整合 Snyk 掃描。這是目前最強的市場級防禦。
ClawHavoc 後的 ClawHub: 在攻擊暴露超過 1,184 個惡意 skills 後,ClawHub 實施了強制掃描並成為最嚴格策展的市場,清理後從 ~10,700 個 skills 減少到 ~3,200 個。
Red Hat 的威脅框架: Red Hat 為 agent skills 發布了完整的威脅模型,涵蓋權限範圍界定、憑證輪換、以及 skill 指令到達 LLM 前的語意監控。
OWASP Agentic Security Top 10: 為 AI agent 系統建立基準安全標準,建議硬體強制隔離、預設零網路存取、以及最小自主權原則。
缺少的是:一個通用的、登錄檔級的掃描標準。npm 有 npm audit。PyPI 有安全公告。容器登錄檔有映像掃描。Skills 生態系在一個市場(Skills.sh)上有 Snyk 掃描,其他地方都是自願掃描。在掃描成為強制且通用的標準之前,開發者自己就是最後一道防線。
時間軸被壓縮了
Agent skills 生態系在 2026 年 3 月突破了 351,000 個已發布的 skills。六個月前,數字還在幾千的水準。速度驚人,而安全基礎設施沒有跟上。
npm 花了數年才走到供應鏈攻擊變得系統性的地步。Skills 生態系在幾個月內就到了。攻擊工具(SkillJect)是自動化的。攻擊面(擁有 shell 存取權的自然語言指令)比任何之前的供應鏈都更廣。防禦(選擇性啟用的掃描、人工審查)的擴展速度跟不上威脅。
如果你在使用 agent skills,而如果你在 2026 年使用 Claude Code、Codex CLI 或 Copilot,你幾乎肯定在用,把每一次 skill 安裝當作執行一個不受信任的 shell 腳本來對待。因為它本質上就是。
讀 SKILL.md。跑掃描。質疑安裝過程中 agent 要求你做的每一件事。13.4% 這個數字不會自己降下來。
Ready to streamline your terminal workflow?
Multi-terminal drag-and-drop layout, workspace Git sync, built-in AI integration, AST code analysis — all in one app.