# 策展 · X (Twitter) 🔥

> 作者：Greg Pstrucha (@grichadev) · 平台：X (Twitter) · 日期：2026-03-25

> 原始來源：https://x.com/grichadev/status/2036472210152718504

## 中文摘要

技能（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 旗標跳過權限提示時，仍無法完全防禦這些攻擊。

## 標籤

Skills, Agent, 資安, Anthropic
