在 AI 程式碼助手(如 Claude Code、OpenAI Codex 等)普及的今天,許多開發者開始使用所謂的 Skills(技能插件)。這些 Skills 本質上是小型套件,通常包含 Markdown 說明文件與若干腳本,旨在讓 AI Agent 快速獲取新能力。然而,由於這些插件通常來自缺乏審核的公開市場,且執行時擁有與使用者相同的權限(可讀取檔案、操作終端機、存取密碼),這為惡意軟體提供了絕佳的入侵路徑。
目前的業界防禦主要依賴靜態掃描器(Static Scanners),即在安裝前檢查檔案內容是否包含危險特徵。但香港科技大學的研究團隊提出了一套名為 SkillCloak 的技術,證明這種「看外表」的防禦方式極其脆弱。
SkillCloak 的繞過技巧
SkillCloak 的核心目標是將惡意代碼「偽裝」成正常檔案,讓掃描器無法識別,但 AI Agent 在執行時仍能正確觸發。其手段分為兩種等級:
輕量級重寫:這種方式利用掃描器的特徵匹配漏洞。例如,將關鍵指令中的某個字元替換為視覺上相似但編碼不同的異國字母,或者將被標記為危險的指令拆分到多行。對人類或執行環境來說,指令依然有效,但對於依賴特定字串匹配的掃描器而言,該特徵已消失。
重量級打包(Self-Extracting Packing):這是最強大的手段。攻擊者將真正的惡意載荷(Payload)隱藏在掃描器通常會跳過的目錄中(例如 .git/ 或 build/),並在外部放置一個看似無害的解碼器。當 AI Agent 啟動該技能時,解碼器才會在運行時(Runtime)將惡意代碼還原並執行。由於掃描器為了效能與降低誤報會忽略這些系統目錄,導致惡意代碼能以超過 90% 的成功率溜過檢查。
從靜態檢查轉向行為監控
研究指出,只要是基於「外觀」的檢查,永遠無法完全防禦經過混淆的代碼。因此,研究團隊開發了 SkillDetonate,將防禦邏輯從「它看起來像什麼」轉移到「它實際上在做什麼」。
SkillDetonate 採用沙箱(Sandbox)機制,在受控環境中執行插件,並在作業系統層級監控其行為,例如它讀取了哪些敏感檔案、嘗試向哪個外部 IP 發送數據。即使代碼經過 Base64 編碼或加密,只要它在執行時觸發了非法的文件讀寫或網路傳輸,行為監控就能將其攔截。
實務影響與工程建議
這項研究提醒我們,許多開發者習慣信任標記為「已通過掃描」的插件,但在 AI Agent 的生態系中,這僅是基礎的衛生檢查,而非安全保證。
對於使用 AI Coding Agent 的工程團隊,建議採取以下防禦策略:
第一,警覺異常的檔案特徵。如果一個簡單的插件包含巨大的垃圾檔案(用於突破掃描器的檔案大小上限),或者在 .git 等隱藏目錄中存放高熵(High-entropy,即看似隨機且加密)的二進位檔案,應將其視為高風險。
第二,實施最小權限原則。不要在存放公司金鑰、生產環境密碼或核心機密的機器上運行未經審核的 AI Agent。限制 Agent 的終端機權限,避免其能直接執行高風險的系統指令。
第三,建立運行時驗證機制。如果可能,在插件掃描通過後記錄其雜湊值(Hash),並在每次執行前重新驗證,以防止插件在安裝後透過動態下載(如 DNS 記錄獲取指令)來變更行為。
總結來說,面對 AI Agent 的供應鏈攻擊,我們必須意識到靜態掃描的侷限性。真正的安全防線應該建立在對運行時行為的持續監控,以及對權限的嚴格管控之上。
來源:thehackernews.com
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。