← 返回首頁
Greg Pstrucha
Greg Pstrucha
@grichadev
188🔁 28
𝕏 (Twitter)🔥🔥🔥
AI 中文摘要Claude 生成

技能市場的安全隱患

技能(Skills)作為 Agent 功能擴展的流行方式,已成為一個嚴重的安全攻擊面向。作者 Greg Pstrucha 通過系統實驗發現,惡意技能能夠透過多種隱蔽方式植入指令來欺騙人工智慧 Agent,而現有掃描工具未能有效檢測這些威脅。

隱匿式指令注入的多種手法

作者測試了多種將惡意指令隱藏在技能文件中的方法,包括:

  • Trojan bash 腳本 — 將惡意程式碼隱藏在表面上無害的幫助腳本中,測試結果顯示在所有模型上皆達到 100% 成功率(70/70)
  • 惡意 NPM 套件 — 透過 postinstall hook 執行任意程式,成功率 36%,其中 Opus 和 Gemini 3.1 Pro 達到 100%,GPT-5-nano 和 GPT-5.4 達到 80%
  • PNG 元資料注入 — 將指令嵌入圖片元資料讓 Agent 讀取,成功率 30%,Opus 和 GPT-5.4 達到 100%
  • curl | bash 指令 — 直接要求抓取並執行遠端腳本,成功率僅 7%,僅 Gemini 3.1 Pro 上當(3/3 次)
  • 提示詞注入 — Unicode 標籤、HTML 註解、明文指令,成功率 0%,所有模型都檢測到此手法

值得注意的是,普通文本提示詞注入已被模型普遍防禦,但透過結合多層隱蔽機制的攻擊則效果顯著。

系統層級的執行漏洞

Claude Code 的「harness 功能」允許技能指定在載入時執行的指令,這些指令的輸出會被展開至技能本身。攻擊者若能讓惡意技能通過審查,該功能將在不經驗證的情況下盲目執行任意指令,風險遠高於單純的上下文中毒——Agent 仍可能拒絕執行可疑指令,但 harness 指令則直接執行,無需 AI 決策介入。此外,Claude Code 技能的 frontmatter 中定義的 hooks 也提供了另一種注入惡意指令的途徑。

生態鏈的隱形攻擊

pytest 測試框架提供了一個非明顯的攻擊向量。攻擊者可將惡意程式碼隱藏在 conftest.py 中,利用 pytest 的自動探測機制在測試套件執行時自動運行,無需在技能本身嵌入明顯的惡意指令。這種「站在旁邊看系統自我摧毀」的攻擊方式特別難以追蹤。

持久性後門與憑證洩露

符號連結(symlinks)可用於指向 SSH 金鑰等敏感檔案。作者測試了用相對路徑指向 ~/.ssh/id_rsa 的符號連結偽裝成示例文件的方法,結果發現多數模型至少被欺騙過一次,部分模型(如 Sonnet、Gemini、Kimi)則持續中招。記憶體中毒則更具威脅性——攻擊者可修改全局範圍的 ~/.claude/CLAUDE.md 或記憶體文件,即使刪除惡意技能,被污染的上下文仍會持續影響所有後續工作階段,形成難以察覺的持久後門。

現有防禦的局限

實驗結果表明所有模型都存在漏洞。作者測試的已知掃描工具未能有效檢測多數攻擊手法,因此人工審查不足以確保安全。作者主張只從絕對信任的來源載入技能,不允許 Agent 自行探索和載入新技能(如 find-skills 機制)。Sentry 等組織開發的自製技能掃描工具雖有改善,但即便如此,使用 --dangerously-skip-permissions 旗標跳過權限提示時,仍無法完全防禦這些攻擊。