36.82% 聽起來很高,但這個數字裡「安全缺陷」跟「惡意程式碼」是同一件事嗎?
不是,這是兩個不同層級的問題,混在一起理解容易低估風險的嚴重度。36.82%(1,467 個)是「含有至少一項安全缺陷」的技能,這個類別涵蓋範圍較廣,包括設計疏忽、權限要求過寬、認證處理不當等,不代表每一個都是故意的惡意行為。真正被確認為「明確含有惡意程式碼」的是 76 個,這是經過人工審查確認、不是單靠自動化掃描判定的更嚴格分類。
換句話說,就算排除掉所有善意但設計不夠嚴謹的技能,市集裡依然存在確定數量的惡意行為者在主動發布陷阱——這代表光是「提高警覺」是不夠的,需要有具體的檢查動作。
為什麼 prompt injection 跟傳統惡意程式碼要一起用,單獨用其中一種不行嗎?
單靠傳統惡意程式碼(例如直接寫一段竊取密碼的腳本),問題是 agent 本身通常有基本的安全判斷機制,可能會在執行前標記出異常行為並要求使用者確認或直接拒絠。單靠 prompt injection(誘導 agent 做不該做的事),如果沒有搭配實際的惡意腳本,充其量只能讓 agent 做出一次性的錯誤判斷,難以形成持續性的資料外洩或系統破壞。
兩者結合起來,形成的攻擊鏈是:prompt injection 先繞過 agent 的安全判斷,讓它「不覺得接下來的行為有問題」,然後惡意腳本才真正執行竊取或破壞的動作。Snyk 報告裡確認的惡意技能中,100% 都有這種組合——代表這已經是成熟的標準攻擊手法,不是單一案例。
ClawHavoc 案例裡那個技能偽裝成「效能優化工具」,一般使用者有辦法在安裝前看出問題嗎?
老實說,光憑技能描述文字很難看出來——「進階快取與壓縮」這類描述本身完全合理,真正的效能優化工具也會這樣寫自己的介紹,文字內容本身不構成判斷依據。
比較可靠的判斷方式是去看「描述的功能」跟「要求的權限」是否匹配:一個效能優化工具合理需要的權限範圍是什麼?如果它同時要求訊息傳送能力或環境變數存取,這個落差本身就是訊號,即使描述文字寫得再專業、再無害。另外,作者帳號的歷史(這個案例裡 zaycv 這個帳號本身的背景)也是報告建議的查核項目之一——7,743 次下載代表大多數人確實沒有做這個查核。
我已經裝了一些來源不是很確定的 agent Skill,現在該做什麼,有沒有優先順序?
優先順序建議這樣排:第一步,盤點目前所有已安裝技能實際要求的權限範圍,找出「功能描述」跟「權限需求」明顯不成比例的項目,這些是最高風險項。第二步,對找出的高風險項目,先停用而不是急著判斷它是不是惡意——停用的成本遠低於誤判後繼續使用的風險。第三步,針對任何曾經授權訊息傳送、檔案讀寫或認證存取的技能,考慮輪換相關的密碼與 API 金鑰,這一步不需要等到確認它是惡意的才做,因為多數惡意技能本來就設計成安裝與初期使用時不會有異常表現。
如果你有能力使用掃描工具(報告裡提到 mcp-scan 這類工具),把它排入習慣性的定期檢查,而不是只在出事後才想起來用。
很多人第一次用 agent Skill 市集(例如 ClawHub 這類給 AI agent 安裝擴充功能的平台)時,心態跟逛手機 App Store 差不多——覺得既然能上架,應該就經過某種審核,裝下去頂多是不好用,不至於有安全問題。安全公司 Snyk 在 2026 年 2 月對 ClawHub 與 skills.sh 上的 3,984 個技能做的「ToxicSkills」研究,剛好打破這個假設:36.82%(1,467 個)的技能至少含有一項安全缺陷,其中 13.4%(534 個)屬於嚴重等級,另外還有 76 個技能被確認含有明確的惡意程式碼。
問題的根源在於 ClawHub 這類平台的發布門檻極低——Snyk 的報告直接寫明:「發布一個新 agent skill 到 ClawHub 需要什麼?一個 SKILL.md 的 Markdown 檔案,和一個剛好滿一週的 GitHub 帳號。沒有程式碼簽署,沒有安全審查,預設沒有沙盒隔離。」這跟你熟悉的手機 App Store 完全是兩種治理模式——後者至少有審核流程與開發者身分驗證,前者本質上是「任何人都能上架」。
而這些技能一旦被 agent 安裝,拿到的權限範圍並不小:shell 存取、檔案系統讀寫、環境變數裡的認證憑證存取、甚至訊息傳送能力(電子郵件、Slack、WhatsApp)。這代表一個表面上只是「幫你格式化輸出」或「加速快取」的小工具,實際上可能擁有讀取你帳密、代你發訊息的能力——而你在安裝前,通常沒有管道去確認它有沒有濫用這些權限。
Snyk 的報告整理出幾種真實觀察到的攻擊模式,理解這些手法的具體樣貌,比記住「要小心」這句話有用得多:
混淆式資料外洩。 攻擊者不會把「竊取你的密碼」寫得明明白白,而是用 base64 編碼把惡意指令包裝起來,例如一段解碼後等同於「把認證資訊打包傳送到攻擊者伺服器」的指令,表面上看起來只是一串隨機字元,一般使用者肉眼完全看不出問題。
外部惡意軟體分發,搭配反掃描技巧。 部分技能在安裝說明裡夾帶外部下載連結,並用密碼保護的 ZIP 檔案包裝惡意內容——這個設計的目的很直接:防止自動化掃描工具檢查壓縮檔內容,等於是故意繞過第一層防線。
Prompt injection 與傳統惡意程式碼的組合攻擊。 這是最值得注意的一點:Snyk 確認的惡意技能裡,100% 含有傳統惡意程式碼模式,但同時有 91% 同步使用 prompt injection 技巧。攻擊鏈的運作方式是:技能先用隱藏的 prompt injection 繞過 agent 原本的安全判斷機制,接著技能指令才執行真正的惡意腳本——換句話說,prompt injection 在這裡的角色不是攻擊本身,是幫惡意程式碼「關掉警報」的前置動作。這也是為什麼只檢測「程式碼有沒有問題」是不夠的,因為繞過安全機制這一步,發生在程式碼執行之前。
報告記錄了一個名為「ClawHavoc」的攻擊活動:威脅行為者「zaycv」把惡意技能包裝成效能優化工具,用「進階快取與壓縮」這類聽起來專業、無害的描述做社交工程,吸引使用者安裝——這個技能在被下架前,已經累積 7,743 次下載。這個數字值得停下來想一下:不是因為沒人用,才讓它存活這麎久,而是因為「看起來像個正常的效能工具」這件事本身,就足以讓數千人放下戒心。
如果你已經在用任何 agent skill 市集,有幾件事值得現在就做,而不是等出事才處理。安裝前,先查該技能作者的 GitHub 帳號有多久歷史、有沒有其他已被驗證的作品,一個剛滿一週的帳號不代表一定有問題,但確實是報告裡明確點出的風險訊號之一。安裝後,優先盤點這個技能實際要求了哪些權限——如果一個號稱「格式化輸出」的小工具要求了訊息傳送或環境變數存取,這個落差本身就該讓你暫停。更務實的做法是定期用掃描工具(例如報告提到的 mcp-scan)檢查已安裝的技能清單,而不是假設「裝的時候沒出事,以後就不會有事」——報告裡提到的惡意技能很多本來就設計成安裝當下不會有異常,風險是在你之後某次正常使用時才被觸發。如果你曾經安裝過來源不明、或作者資訊薩不完整的技能,現在就該檢視是否該撤換相關帳密的認證憑證,而不是等到真正被盜用才處理。