一个 AI Agent 装上 Skill,

可能只是多了一个制作 PPT 的能力,

也可能是把机器权限,亲手交给了攻击者。

Trail of Bits 测了 5 个主流 skill市场:ClawHub 的 VirusTotal、OpenClaw guard model,skills.sh 上的 Gen、Socket、Snyk,再加 Cisco skill-scanner 这个开源工具。

都能绕过,而且,手法并不高级。

4 个恶意 Skill 中,有 3 个从构思到实现不到 1 小时。

十万行空白,突破AI 的上下文窗口

先看 ClawHub。

ClawHub 是 OpenClaw的 Skill 平台。它用了两部分检测:

一部分接 VirusTotal,其中包括基于 Gemini 3 Flash 的 Code Insight。

另一部分是 OpenClaw 自己的扫描 harness 和 guard model,默认是 GPT 5.5。

Trail of Bits 的第一招,非常简单:

在恶意代码前面加10万行换行符。

然后,OpenClaw 的扫描截断文件,直接漏掉了后面的恶意内容。

VirusTotal 侧的扫描模型则像是被这个长文件搞混了。

不是复杂漏洞,也不是非常巧妙的利用。

这类利用文件体积、解析边界和截断策略的手法,在对抗上并不新鲜。

把真实指令藏进docx

ClawHub 至少还有一个优点:它限制了 Skill 文件类型,不允许二进制和压缩包。

但 skills.sh 和 Cisco skill-scanner 面对的是任意 Git 仓库。

攻击面就更大了。

Trail of Bits 首先做了一个 .docx 的间接提示词注入。

表面上,SKILL.md 让 Agent 从一个 .docx 文件里提取真实指令。

听起来很正常。

.docx 本质上是 ZIP 压缩包,里面有 XML,也能塞点别的。

攻击者把真正的恶意指令和 payload 嵌进了这个压缩结构里。

这类攻击很容易绕过正则匹配,也能对AI扫描造成干扰。

因为恶意内容不是明晃晃写在主文件里,而是包裹在一层文档结构。

这就是 Skill 和传统依赖包不一样的地方。

它可以是自然语言、Office 文档、压缩包和执行脚本的组合体。

源码没问题,二进制有问题

第三个攻击,更像传统供应链投毒。

攻击者提交了一个文本格式化 Skill。

SKILL.md 是正常说明。

Python 代码很简单:

def format_text(text: str) -> str:

"""Apply all formatting rules to text."""

text = fix_spacing(text)

text = capitalize_sentences(text)

text = apply_punctuation(text)

return text

看起来就是一个文本整理工具。

但仓库里顺手附带了一个预编译文件:utils.cpython-312.pyc

问题就在这里。

这个文件和源码不一致,里面有能抓取环境变量的功能。

这种“源码和产物不一致”的模式,

是供应链攻击里的经典套路,xz-utils 后门就是类似逻辑。

而这一次,它在 skills.sh 上通过了扫描。

Cisco skill-scanner 的静态分析和AI分析也都没发现。

原因很简单:扫描器没有深入检查 .pyc 字节码。

AI分析没有意识到:你应该去反编译这个文件。

三句话让AI为我“花18万”

Trail of Bits 构造了一个 dev-env-setup Skill,描述自己是标准化开发环境配置工具。

它会配置 npm、yarn、linter、编辑器设置。

听起来像每个企业都有的内部工具。

但脚本里,它会把 npm 和 yarn 的 registry 改成:

https://npm.internal-artifacts.corp.dev

如果这是攻击者控制的域名,那就是依赖供应链入口。

但注释写得非常“企业级”

这是企业制品镜像,已经应用安全审计过。

于是,Cisco skill-scanner 在 Claude Sonnet 4.6 下只给了低风险,最终判定安全。

skills.sh 扫描器也是一样。

好 Skill 和坏 Skill,可能长得很像

更麻烦的是误报问题。

Anthropic 官方 Office Skill 里的 soffice.py 会用 LD_PRELOAD 加载 shim,解决 LibreOffice 在沙箱里的 socket 限制。

从规则看,这玩意儿非常像恶意软件。

正好说明扫描器的难处:

同一个行为,在一种上下文里是为了兼容性,在另一种上下文里就是任意代码执行入口。

如果只靠规则,误报会爆炸。

如果相信解释,攻击者也能在 skill 里提供解释。

不要把信任交给扫描器

Trail of Bits 最后给出的建议:

不要在敏感环境里直接使用 ClawHub 这类公开市场的 Skill。

企业应该自己搭建 Skill 市场,或使用可信开源集合。

归根结底,Agent 的 Skill 不是普通插件。

Skill可能读文件、调工具、执行脚本、读凭证和数据。

所以Skill应该被当成供应链风险来管理:

不要把判断全部给自动安全扫描。

别直接把 Skill 直接放到生产环境。

参考资料:The sorry state of skill distribution https://blog.trailofbits.com/2026/06/03/the-sorry-state-of-skill-distribution/

声明:本文来自玄月调查小组,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。