文章总结: 研究表明SkillCloak利用自解压打包技术可超90%绕过AI代理技能静态扫描器。对应的运行时行为检测工具SkillDetonate检测率达97%。建议安全团队不应盲信静态扫描结果,需将防御重心转移至本地运行时行为监控,警惕隐藏目录中的高熵文件,坚持最小权限原则并仅从可信来源安装,以应对AI代理供应链攻击。 综合评分: 89 文章分类: AI安全,供应链安全,恶意软件,漏洞分析
SkillCloak 让恶意 AI 代理技能通过自解压打包来规避静态扫描器
Rhinoer Rhinoer
犀牛安全
2026年7月12日 17:50 北京
在小说阅读器读本章
去阅读
香港科技大学研究人员的一项新研究表明,旨在检测人工智能编码代理恶意附加“技能”的扫描器可能会被一些简单的更改所欺骗,从而使恶意软件继续运行 。
他们最厉害的伎俩在超过 90% 的情况下都能躲过所有测试过的扫描器,而且同一个团队还开发了一个运行时检查器,可以捕捉到扫描器漏掉的大多数伪装技能。
技能是小型软件包,通常包含一个 Markdown 指令文件和一些脚本,Claude Code、OpenAI Codex 和 OpenClaw 等智能体加载这些软件包即可获得新功能。由于技能只是一组文件的集合,因此同一个技能可以在不同的智能体上运行。而且,它拥有智能体自身的访问权限:包括您的文件、终端和已保存的密码。
恶意软件可以窃取凭证、复制源代码或安装后门。公共交易平台上的大部分内容都是陌生人上传的,几乎没有任何审核。
目前主要的防御手段是技能扫描器,它会在技能安装前读取其文件,并拦截任何看起来危险的内容。这篇题为《隐蔽引爆》的论文测试了这种防御机制是否真的有效。结果表明,它并不奏效。不过,绕过扫描器并非什么新鲜事。
Hacker News曾报道过研究人员 如何让一种伪造的技能绕过所有扫描器,据该公司统计,这种技能已经影响了数万个代理。本文的贡献在于提供了一种系统化、大规模实现这一目标的方法,以及一种即使被扫描器检测到仍然有效的防御机制。
伪装的技能是如何奏效的
研究人员开发的工具SKILLCLOAK可以重写恶意技能,使其看起来干净,但行为却完全相同。它有两种工作原理。
较轻的版本使用论文自己的运算符重写扫描器所识别的泄露字节:将一个字符替换为另一个字母表中的类似字符,或者将标记的命令拆分到换行符上,这样扫描器的模式就不再匹配,但命令仍然会运行。
更复杂的一种攻击方式是自解压打包,它会将整个有效载荷移动到扫描器会忽略的目录(例如 .git/)中,并隐藏在一个看似无害的解码器后面。该解码器仅在代理运行时才会重新构建技能。扫描器会忽略此类目录以节省时间并减少误报,而这恰恰是该技巧利用的盲点。
在从公共市场 ClawHub 中提取的 1,613 个真实恶意技能和 8 个扫描器中,打包技巧在超过 90% 的情况下绕过了所有 8 个扫描器,并且在大多数扫描器中绕过了超过 99% 的扫描器。
这种轻量级的重写方法在大多数扫描器上清除率超过 80%,在一个扫描器上甚至高达 96%。而且,这种伪装对攻击者来说几乎没有任何成本:在 Claude Code 和 OpenAI Codex 上,伪装后的技能与原始技能的效果完全相同。
关注技能的实际效果,而不是它的外观。
由于外观可以伪造,研究人员提出改用行为检测,他们开发了一款名为SKILLDETONATE 的工具。该工具在沙箱环境中运行技能,并监控其在操作系统层面的操作:读取什么、写入什么、将数据发送到哪里。
有两个关键点让代理能够成功追踪敏感数据。它追踪的是数据的流向而非外观,因此即使使用 Base64 编码或加密也无法奏效。此外,它只在运行时执行技能构建的指令,而这正是打包技巧隐藏有效载荷的关键所在。
在受控测试中,该检测器识别出 97% 的攻击,同时错误地将 2% 的安全技能标记为恶意技能,其误报率低于它所超越的扫描器,并且在技能被隐藏的情况下,其性能依然稳定。在实际恶意技能测试中,它的识别率达到了 87%。
思科的扫描器是测试中最强大的,结果却恰恰相反:它在隐身之前捕获了 99% 的真实世界技能,而隐身之后只捕获了大约 10%。
关键在于速度,每项技能的测试需要几分钟,而扫描仪只需几秒钟,尽管它只运行一次,在技能生效前即可完成。这项研究目前是预印本,尚未经过同行评审;研究人员已经发布了他们的代码。
这种情况已经在现实生活中发生了
这一切并非假设。公共市场已经充斥着大量恶意技能,而扫描器却无法阻止它们:Bitdefender 在一个市场中发现 ,其检查的技能中约有 17% 携带隐藏的恶意代码; 据 THN 报道,Koi Security 在名为 ClawHavoc 的一次攻击活动中 就发现了341 个恶意代码,随着市场规模的扩大,这一数字后来上升到 824 个。
有些人甚至直接使用了论文中提到的那些伎俩。 尽管 ClawHub 内置了扫描功能,但 Unit 42 仍然发现了五种规避技巧,其中一种名为 omnicogg 的黑客在其 README 文件中填充了 22 MB 的垃圾信息,以绕过扫描器的大小限制,这与论文中测试的填充大小操作符相同。另外两种黑客会传播 Mac 密码窃取程序,还有两种黑客劫持了代理的理财建议,用来推送联盟链接和操纵网络迷因币的发行。
运行时漏洞不仅存在于技能交易平台,也存在于其他领域。最近,一个看似安全的 GitHub 代码库让 Claude Code 在其开发者的机器上打开了一个反向 shell,从而获得了远程控制权。恶意代码从未存在于代码库中;安装脚本在运行时从 DNS 记录中获取了它,因此静态扫描无法检测到任何异常。Mozilla 的 0DIN 团队 追踪了 整个攻击链。
类似的故障还影响到代理通过模型上下文协议读取的工具描述。微软 曾警告 说,一个在工具获得批准后被篡改的描述悄悄地诱使财务代理 泄露未付款发票。虽然机制不同,但其背后的假设却是一样的:即通过审核的内容就会被执行。
一些局限性值得明确指出。目前还没有人抓到攻击者大规模使用这些完全相同的打包技巧;这里提到的实际案例是类似的规避手段,而非 SKILLCLOAK 本身。运行时检查器是一个研究原型,在实验室环境下表现良好,但尚未在实际交易环境中或攻击者主动尝试规避的情况下进行测试。此外,所有性能数据均来自作者,且未经同行评审。研究方向已得到充分论证;但具体数据仍需谨慎对待,毕竟这是单个研究团队的早期成果。
这才是真正的教训,也是越来越多工作正在汇聚的地方。扫描器会根据技能提交时的外观来判断其安全性,但恶意行为只有在技能运行后,也就是扫描完成后才会显现出来。因此,信任决策必须从市场平台转移到技能运行的机器上。
应该寻找什么?即使是通过了扫描的技能,该论文中的规避手段也会留下防守者可以寻找的线索:
- 扫描器倾向于跳过的目录中隐藏着大型或高熵文件,例如
.git/或build/。 - 只有在运行时才会解包或组装代码,而不是将其明目张胆地发布。
- 文件大小远远超过合理范围,这是让文件大小超过扫描仪限制的技巧。
这些都不能单独作为证据。它们只是初步的迹象,而非最终结论。
对于使用编码代理的团队来说,“扫描通过”徽章只是一个起点,而非保证。静态扫描应作为一种低成本的日常维护手段,但同时也要密切关注技能运行时的具体行为:它访问的文件、运行的命令以及数据发送的目标位置。
该论文也提供了一些具体的权宜之计,例如在扫描技能时对其进行哈希处理,并在每次运行前重新检查以捕获稍后解包的有效载荷,以及标记那些在被忽略的文件夹中发送不透明数据块或填充文件大小超过上限的技能。但这些措施本身都无法完全弥补漏洞,而这正是关键所在:持久的防御在于运行时监控行为。
除此之外,只能从经过审查的来源安装,只给代理程序所需的最小权限,并且不要在存储值得窃取的秘密的机器上运行它们。
信息来源:TheHackerNews
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:犀牛安全 Rhinoer Rhinoer《SkillCloak 让恶意 AI 代理技能通过自解压打包来规避静态扫描器》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论