一款新的开源扫描器正在被转化为一种工具,用于审计 AI “智能体技能”(agent skills),此前研究人员展示了未经验证的技能可以悄无声息地窃取 SSH 密钥和云凭据。该扫描器结合了关键词过滤、行为分析、AI 驱动推理、沙箱执行和变更检测,旨在阻止针对 AI 辅助开发者的下一波供应链攻击。

为什么 AI 技能现在如此重要

Claude 和 GitHub Copilot 等大语言模型 (LLM) 助手现在依赖“智能体技能”——即小型、自包含的文件夹,它们告诉模型如何执行特定任务。GitHub 最近增加了一个单行命令,允许开发者直接从公共仓库拉取这些技能,使其成为了 AI 驱动工作流中的事实上的包管理器。

这种便利性是不言而喻的:一个技能可以将“清理这个电子表格”这样模糊的需求转化为精确的 API 调用、文件操作或代码编辑。同样的简单性也让恶意代码得以混入包中。

GitHub 的警告页面指出,技能在安装前不会经过验证。

隐藏的恶意载荷如何避开检测

与典型的二进制文件不同,AI 技能不会一次性全部加载。模型首先读取简短摘要,只有当任务看起来相关时,才会获取完整的指令集。这种分阶段加载创造了一个窗口期,使得恶意文件可以处于闲置状态,对用户不可见,直到模型决定调用它。

在一次概念验证实验中,研究人员创建了一个名为 csv-formatter 的虚假技能,宣称可以清理电子表格。可见的代码看起来无害,但一个隐藏指令添加了一个“诊断步骤”。该步骤并未进行任何诊断;它扫描宿主机的 SSH 私钥和 AWS 访问令牌,然后将结果发送到外部服务器。

恶意命令还出现在更新日志(changelog)文件中——这是大多数人从不检查的地方,但 AI 在评估版本历史时会读取它。当开发者认为该技能仅仅是在格式化数据时,AI 已经悄无声息地执行了凭据窃取程序。

开源界的应对措施

为了弥补这一漏洞,研究人员将检测逻辑封装进了一个开源审计工具中。该扫描器并不依赖单一技术,而是采用了多层防御:

  • 关键词匹配:捕捉包含已知恶意字符串的明显、粗糙的尝试。
  • 行为分析:标记读取凭据文件并随后进行网络调用的指令。
  • AI 推理:运行二级模型来评估技能指令是否故意对用户隐藏。
  • 沙箱化:在隔离环境中执行技能,在不危及宿主系统的情况下观察实时操作。
  • 变更检测:监控受信任技能是否存在意外修改,并在安装新版本之前提醒维护者。

作者将包含一个能够重现 csv-formatter 攻击的测试套件,以及一个用于衡量在精选的良性与恶意技能集上检测率的公开基准测试。

后续关注点

  • 社区基准测试:随着更多研究人员发布恶意技能样本,公开基准测试需要定期更新以保持其有效性。

AI 智能体技能的出现标志着开发者工具领域的一个新前沿,但也为绕过传统代码审查的供应链攻击打开了大门。一款结合了静态检查、动态观察和 AI 推理的开源扫描器提供了实用的第一道防线。如果开发者像对待随机 USB 驱动器一样对待技能,很快就会发现,忽视验证的代价远超即时 AI 辅助带来的便利。