SkillCamo:藏在图片里的指令绕过智能体技能扫描器
2026 年 6 月的一篇论文表明,隐藏在技能所附图片中的恶意指令能绕过文本与代码扫描器,却在多模态智能体读取图片时被执行。
这是什么?
智能体技能(agent skills)是智能体时代的 npm 包:由自然语言指令、脚本和文件组成的小型捆绑包,像 Claude Code 或 OpenAI Codex 这样的编码智能体会在需要新能力时按需加载它们。该格式于 2025 年底出现后,某个市场在数月内就累积了 4 万多个社区贡献的技能,而其中大多数从未经过审核。这种组合——隐性信任加上智能体的完整权限——已经造成了真实的供应链事件,包括在单个平台上植入 341 个恶意技能的 ClawHavoc 行动。
2026 年 6 月发表的论文 “Seeing Is Not Screening: Multimodal Hidden Instruction Attacks on Agent Skill Scanners”(arXiv 2606.18198)记录了为捕获这些技能而构建的防御中的一个盲点。当前的技能扫描器读取的是文本:描述、清单和源代码。论文提出的攻击 SkillCamo 把恶意指令藏在扫描器不看的地方——技能所附带的一张图片里。
工作原理
SkillCamo 将一个恶意技能拆分到两种模态之间,使得任何一半单独看都不显得危险。
该攻击从恶意脚本中取出目标命令,并将其渲染成一份图片资源——看起来像无害的项目徽标、工作流图、截图或使用示例。随后它用一个 LLM 重写整个技能文档,使被注入的图片被自然地包装成安装步骤或工作流示意图。粗略浏览 README 的审核者看到的是一张有用的图;文本与代码扫描器看到的是干净的文件。
只有当多模态智能体按照被重写的文档所指示的那样,把图片当作正常工作流的一部分来读取时,载荷才会变得可读。此刻,模型将视觉内容解读为可执行的指令,并转向不安全的执行。正如作者所述,恶意意图被分散在各模态之间,只有当智能体在运行时联合解读文档、代码上下文和视觉内容时才被完全揭示。
此处不复现任何载荷。该机制是一个更广泛问题的变体:指令可以以能通过人工审核的形式被夹带进技能。Embrace The Red 在 2026 年 2 月的独立研究在文本通道上展示了同样的缺陷——使用不可见的 Unicode「tag」码点,模型会遵循它们,而阅读文件的人却看不见。图片不过是扫描器忘记检查的下一个通道。
为何重要
技能扫描器在安装时给出「拦截或放行」的裁决,而部署者越来越依赖这一裁决。SkillCamo 表明,该裁决的价值只等于扫描器所检查的那些模态。如果扫描器对文本和代码进行推理,却把附带的图片当作惰性资源,那么一个恶意技能就能通过审核,随后在以智能体权限运行时执行窃取凭据、外泄源代码或植入后门等操作。
这并非孤例。同一周披露的平行研究——Help Net Security 于 2026 年 7 月 9 日进行了报道——表明,只要攻击者保持技能行为不变、仅改变其表层形态,字节级静态扫描器就有 90% 以上的概率被绕过。这一模式让人想起数十年的反恶意软件防御:对外壳的检查敌不过重新打包相同行为的攻击者,而持久的答案始终是观察代码实际做了什么。
防御
静态、单模态的扫描是必要的,但并不充分。具体而言:
-
扫描所有模态,而不仅是文本和代码。 对附带的图片运行 OCR 和视觉分析,并把技能指示智能体去「读取」的任何图片当作潜在的指令通道,而非装饰性元素。
-
转向以执行为基础的分析。 论文的防御方案 ExecScan 从技能的文档和元数据推断其声明的用途与访问范围,通过映射被引用的脚本、文件、环境访问和视觉资源来重建技能实际可执行的行为,然后判断它是否表现出外泄、破坏、持久化、欺骗或提权的能力。它还会模拟多模态智能体在真实使用中如何解读该技能——包括图片所承载的指令对下游规划的影响。平行的行为沙箱研究报告称,通过在操作系统边界观察系统调用,可捕获约 97% 的注入载荷,而静态扫描器在那里什么都看不到。
-
隔离智能体并限制其权限。 显式而非默认地授予文件、凭据、网络和包管理器的访问权限,使漏网的技能无法触及机密或进行外泄。避免对 Bash 和工具调用进行一刀切的自动批准。
-
把技能当作不可信的供应链依赖。 只从可信厂商安装,优先采用最小集合,并卸载不再使用的技能。人工审核是一种控制,但不可见 Unicode 与图片承载的载荷都是被设计用来在其中存活的。
-
在能力层贯彻最小权限。 一个从不需要出站网络或凭据访问的技能就不应拥有它;能力范围限定可以在扫描器有所遗漏时限制影响范围。
状态
| 项目 | 参考 | 日期 | 说明 |
|---|---|---|---|
| SkillCamo 攻击 + ExecScan 防御 | arXiv 2606.18198 | 2026-06 | 藏于图片的指令绕过文本/代码扫描器;提出以执行为基础的分析 |
| 静态扫描器绕过(平行研究) | Help Net Security | 2026-07-09 | 字节级扫描器被绕过 >90%;行为沙箱捕获约 97% |
| 技能中不可见的 Unicode 指令 | Embrace The Red | 2026-02-11 | 文本通道中隐藏的指令可在人工审核中存活 |
| ClawHavoc 市场行动 | Koi Security | 2026 | 在单个平台植入 341 个恶意技能 |
结论不是「不要使用技能」,而是只读取文本和代码的安装时扫描只是一种局部控制。 随着智能体获得多模态理解能力,技能所能携带的每一种模态都成为一个指令通道——防御必须跨所有模态重建技能所做的事,而不是检查它看起来是什么样。