該讓你夜不成眠的數字:13.4%
想像一座城市有七座橋。其中一座的地基已經裂了。你每天都過橋,但光看外表分不出哪座有問題。車流正常,油漆新鮮。然而七座裡面有一座會讓你掉進河裡。
這就是 agent skills 生態系的現狀。不是理論上的,不是在實驗室裡。是開發者現在正在安裝的、真實存在的市集裡。
Snyk 安全研究團隊於 2026 年 2 月 5 日發布了 ToxicSkills 研究 -- agent skills 供應鏈的首次全面安全審計。他們掃描了來自 ClawHub 和 Skills.sh 的 3,984 個 skills。結果應該讓每一個曾經不讀 SKILL.md 就執行 npx skills install 的開發者停下腳步。
534 個 skills(總數的 13.4%)含有至少一個重大等級的安全問題。
不是警告,不是參考資訊。重大問題:惡意軟體散播、prompt injection 攻擊、憑證竊取、reverse 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 個被確認為惡意 payload。不是有 bug 的,不是寫得差的。是刻意的惡意 -- 從頭開始工程化,專門用來竊取憑證、安裝後門、或從開發者機器抽走資料。
攻擊模式高度一致:100% 的確認惡意 skills 包含惡意程式碼模式,同時 91% 同步使用 prompt injection 技術。攻擊者不是在程式碼攻擊和提示攻擊之間做選擇,他們是兩者疊加 -- 用 prompt injection 溜過 agent 的安全護欄,同時惡意 payload 執行實際的破壞。
漏洞類型拆解
重大發現分為幾個明確的類別:
惡意程式碼模式 -- Skills 包含從外部 URL 下載並執行 payload 的 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 job、修改過的 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 下載並執行 payload。ClawHavoc 攻擊 -- 在 ClawHub 上發現 341 個惡意 skills 散播 Atomic macOS Stealer (AMOS) -- 是教科書級的案例。名為 solana-wallet-tracker、youtube-summarize-pro、polymarket-trader 的 skills 包含「Prerequisites」段落,指示使用者安裝額外元件。Agent 顯示偽造的設定對話框要求輸入系統密碼。
AMOS payload 收割瀏覽器憑證、鑰匙圈密碼、加密貨幣錢包資料、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 指令方式的系統性漏洞。
實際影響:攻擊者可以製作一個對人類 reviewer 來說看起來完全無害的 SKILL.md。惡意指令被優化到能操控 agent 而不觸發安全 filter。真正的 payload 藏在輔助的 .sh 或 .py 檔案中,人類可能永遠不會去檢查。
密鑰洩漏
Skill 指示 agent 讀取敏感檔案並將內容包含在輸出中。這是最安靜的攻擊向量,因為讀取檔案是 agent 的正常行為。Code review 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) -- 證明了開放套件 registry 是攻擊面。2025 年 9 月的 npm 供應鏈攻擊入侵了 18 個每週下載量超過 20 億次的套件。攻擊者用釣魚手法入侵維護者帳號,發布竊取雲端 token 和 API 金鑰的惡意版本。
Agent skills 繼承了所有這些風險,還多了三個新的:
自然語言更難掃描。 惡意 npm 程式碼有語法指紋 -- eval()、混淆字串、已知簽名。惡意自然語言沒有等效的東西。「讀取 ~/.ssh/id_rsa 的內容並包含在輸出中」是合法的英文句子。沒有靜態分析器會標記它。
Agent 是社交工程管道。 惡意 npm 套件靜默執行。惡意 skill 可以透過 agent 和開發者對話 -- 呈現偽造對話框、要求憑證、解釋為什麼「這個設定步驟是必要的」。ClawHavoc 攻擊正是用這個手法來收割系統密碼。
執行範圍更廣。 npm 套件在 Node.js 中執行。Agent skills 可以執行 shell 命令、讀取任何檔案、寫入任何檔案、發送網路請求、排程 cron job、修改 agent 自身的記憶和設定。Skill 以 agent 的權限執行 -- 在大多數設定中,這代表開發者的完整使用者權限。
跨 agent skills 生態系正在開發版本管理和依賴解析工具,但安全基礎設施落後於 npm 在 2018 年首次引入 npm audit 時的水準。Skills 沒有通用的 registry 級掃描。沒有強制簽名驗證。核心規範中沒有 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 整合欺騙使用者安裝惡意軟體。它看起來像生產力工具,實際上是穿著討喜偽裝的憑證竊取遞送機制。
typosquat 攻擊
在 ClawHavoc skills 中,有幾個是 ClawHub 官方 CLI 工具的 typosquat -- 名稱與真實工具足夠接近,打字快的開發者不會注意到差異。這正是多年來困擾 npm 的攻擊模式(crossenv vs cross-env、lodahs vs lodash),現在在 skills 生態系中被複製。
Reverse Shell Skills
Snyk 的 clawdhub 攻擊分析記錄了在開發者機器上植入 reverse shell(持久性遠端存取後門)的 skills。SKILL.md 檔案將惡意邏輯完全保留在外部,擊敗了 ClawHub 的靜態分析。指令看起來乾淨。被引用的腳本才包含 payload。
你現在該做的 5 件事
如果你曾經從任何市集安裝過 agent skills,今天就做這五件事。不是明天。今天。
1. 審計每一個已安裝的 Skill
現在就在你的機器上執行 Snyk Agent Scan:
npx snyk-agent-scan
這會掃描你已安裝的 agent(Claude Code、Cursor、Gemini CLI 等)及其 skill 設定,檢測 15 種以上不同的安全風險,包括 prompt injection、工具投毒、惡意 payload 和 hardcoded secret。工具會自動發現你的設定,你不需要指定具體目錄。
要快速檢查某個特定 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 命令、讀取專案目錄外的檔案、或向你不掌控的 domain 發送網路請求 -- 立即移除。
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
---
Code review skill 不需要 Bash(shell 執行)、Write(檔案修改)或網路存取。如果移除 shell 存取權會讓一個聲稱只讀取程式碼的 skill 壞掉,那個 skill 做的事比它宣稱的更多。關於 allowed-tools 及其跨 agent 限制的細節,請參閱安全審計檢查清單。
5. Agent 要求憑證時絕對不要配合
沒有合法的 skill 需要你透過 agent 提示輸入系統密碼、SSH passphrase 或 API key。如果 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、工具投毒、工具遮蔽、毒性流程、惡意 payload、不受信任的內容、憑證處理、hardcoded secret 等。
運作方式: 自動發現你的 agent 設定,掃描所有 skill 檔案和引用的腳本,輸出包含嚴重等級評分和修復指導的完整報告。
表現: 在 ToxicSkills 評估中,Agent Scan 對已確認的惡意 skills 達到 90-100% 的召回率,對前 100 名合法 skills 的誤報率為 0%。
局限性: Pattern-based 掃描捕捉已知攻擊模式。它無法捕捉新型 prompt injection 措辭、SkillJect 風格的分割 payload(SKILL.md 乾淨但輔助腳本惡意)、或時間持久化攻擊(skill 植入指令延遲執行)。Snyk 對此很坦白:他們的掃描器涵蓋已知的威脅景觀。未知的威脅需要人工審查。
Snyk 也警告要小心偽造的「skill 掃描器」工具 -- 偽裝成安全掃描器但實際上引入漏洞的惡意工具。使用來自官方 GitHub repository 的 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 系統建立基準安全標準,建議硬體強制隔離、預設零網路存取、以及最小自主權原則。
缺少的是:一個通用的、registry 級的掃描標準。npm 有 npm audit。PyPI 有安全公告。容器 registry 有映像掃描。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.