PhantomSkill:把恶意载荷伪装成一个普通漏洞
2026 年 6 月的一篇论文表明,攻击者可将代理技能(skill)的恶意载荷伪装成辅助脚本中一个可触发的漏洞——绕过 SKILL.md 审查、降低恶意软件级检测,同时技能功能完好如初。
这是什么?
2026 年 6 月 17 日,Yu-Ting Lin 与 Chia-Mu Yu(国立阳明交通大学)在 arXiv 上发表了 PhantomSkill: Malicious Code Injection in Agent Skill Ecosystems。论文描述了一种针对代理技能包格式的供应链攻击——所谓技能,即各自包含一个 SKILL.md 文件以及可选的辅助脚本与模板的目录,Claude Code、OpenAI Codex、Cursor、Gemini CLI 等编码代理会导入它们以获得可复用的能力。
迄今公开的技能攻击大多针对文本:藏在 SKILL.md 里的隐藏指令,或者一打开就明显恶意的辅助脚本。两者都可被发现,因为代理和市场扫描器越来越多地会在执行前检查技能资源。PhantomSkill 瞄准的是这些防御留下的缺口:当恶意行为被写成一个看似普通、可利用的漏洞而非恶意软件时,会发生什么。这是关于某一类弱点的公开学术研究,而非操作教程;作者将其定位为强化技能审查与隔离的论据。
工作原理
该技术名为 VulMask,其依据是作者明确指出的一个观察:审查者——无论人工还是自动——对明显的恶意软件远比对普通不安全代码更敏感。VulMask 就把前者变成后者。
刻意保持抽象,其流程如下:
显式恶意脚本
|
选取 CWE 式弱点类别(例如信息暴露、命令/代码注入、
不安全的依赖处理)
|
由 LLM 改写载荷 ---> 「漏洞形态」的实现
| (看起来像一个普通可利用的 bug)
|
嵌入到原始辅助脚本中,保留其名称、路径,
以及无触发条件时的良性行为
|
在沙箱中验证:宿主技能正常工作,且恶意效果
仅在攻击者选定的触发条件下发生
|
发布技能 ---> SKILL.md、名称、描述:均未改动
两处设计使它难以察觉。其一,技能对外声明的表面保持不变——名称、描述和 SKILL.md 流程与良性技能完全一致,因此任何只扫描 SKILL.md 的手段都一无所获。其二,载荷处于休眠状态:没有攻击者的触发条件,脚本就输出其正常、良性的结果,于是针对普通输入的动态检查也会通过。恶意效果存在,却被表达为一个「碰巧」可利用的弱点,而非显式的恶意逻辑。作者报告称,在一组宿主技能、攻击目标、编码代理、生成模型和自动审查器上,这种改写保持了技能的功能,同时相比原始的显式脚本,降低了告警级与恶意软件级的检测。完整方法与评估见论文;此处不复现任何可用载荷。
为何重要
令人不安之处在于,在代理场景中,「仅仅是有漏洞」与「恶意」可能合而为一。一个带有普通注入或信息暴露缺陷的辅助脚本,只有在有东西向它提供敌意输入时才危险。而这恰恰是编码代理所做的:它向技能的脚本提供文件路径、项目上下文、凭据以及自身的执行权限。一个人类开发者会判为低优先级的弱点,一旦由自主代理来掌握触发条件,就变成了可靠的载荷。
这一切落在一个本已千疮百孔的生态上。Snyk 对公共技能市场的 ToxicSkills 研究发现,相当大比例的技能存在提示注入及其他严重问题;OWASP 也正是因为可安装能力是一个不断扩大的攻击面,才推出了 Agentic Skills Top 10。PhantomSkill 使威胁更加锋利:它表明,针对明显恶意软件提高门槛并不能关上大门,因为坚定的作者可以把同样的行为重新包装成一个 bug。它推广了技能供应链恶意软件与 SKILL.md 注册表投毒的教训:危险不仅在于技能说了什么,还在于当代理执行时其资源做了什么。
防御
把辅助资源当作一等公民,而非事后附属。论文的核心结论是:只扫描 SKILL.md 不够——载荷根本不碰它。
在资源层面审查整个包。市场和内部审查关卡应检查脚本、依赖清单、模板以及任何生成的产物,而不只是技能描述。用于标记注入汇聚点、不安全反序列化和未经核验依赖处理的静态分析,应对技能交付的每一个可执行文件运行。
不要降级技能内部的可利用 bug。作者直接主张:在代理生态中,一个可触发的漏洞在功能上可等同于恶意载荷。若一次代码审查把命令注入汇聚点评为「低危、需敌意输入」,当消费者是一个恰好提供该输入的自主代理时,这一评级就失准了。
隔离执行,假定脚本怀有敌意。最稳健的控制在运行时:最小权限的文件访问、出站网络限制,以及对敏感操作(shell、访问凭据、外联)的显式批准。若技能的辅助脚本在没有策略检查的情况下无法触及凭据或网络,休眠载荷可用的余地就小得多。这与对抗编码代理中的 shell 注入、以及支撑技能权限系统的姿态一致。
假定检测只是局部的,并据此记录日志。由于该技术就是为绕过审查者而设计的,请保留执行遥测——每次技能调用的文件、进程和网络活动——以便生产环境中触发的载荷能够事后被发现并复原,而不仅仅在安装时把关。
状态
| 项目 | 详情 |
|---|---|
| 披露 | arXiv 预印本 2606.19191,发布于 2026 年 6 月 17 日(CC BY 4.0) |
| 类别 | 通过「漏洞形态」载荷(VulMask)对技能进行的供应链代码注入 |
| 核心思路 | 将显式恶意脚本改写为外观普通的不安全代码,仅在攻击者选定的触发条件下才动作 |
| 关键属性 | 名称、描述与 SKILL.md 均不变;无触发时保留良性行为 |
| 报告影响 | 相比显式载荷,告警级与恶意软件级检测更低,同时保持攻击成功率(据作者,含对 GPT-5.5 级代理的测试) |
| 未涉及 | 尚无公开的野外利用;这是一个研究框架,其成效取决于所部署的审查/沙箱栈 |