摘要Claude Code和Gemini CLI等AI编码代理日益通过第三方技能Skills实现功能扩展此类技能通常以Markdown包的形式组织并集成自然语言指令、可执行脚本及工具权限配置。由于技能兼具可执行代码与面向代理的指令程序代码与自然语言混合其引入的软件供应链依赖同时涉及代码安全与提示安全。现有检测工具尚未基于覆盖该混合风险空间的经验证基准真值进行系统评测因而其有效性仍不明确仅使用真实环境中的自然分布数据进行评估则可能产生系统性偏差。该论文提出 MalSkillBench 是首个经过运行时验证的恶意智能体技能基准。该基准包含 3,944 个带标注的恶意技能并采用三维分类体系进行组织覆盖由攻击向量、恶意行为和植入策略构成的108个分类单元。其中3,214个技能由闭环流水线生成—验证—反馈生成。该流水线仅接纳在Docker沙箱中实际触发恶意行为并通过系统调用监控与LLM裁判联合验证的样本相应验证反馈用于指导后续样本生成。此外该基准还收录703个真实环境恶意技能以及4,000个匹配的良性技能。综合分析与评测结果揭示了四项主要发现不同攻击类型的可实现性存在显著差异代码注入Code InjectionCI的验证成功率达到94.5%而提示注入Promp IinjectionPI仅为75.8%这一差异在后续检测阶段同样存在提示注入的整体检测性能低于代码注入。真实环境样本的覆盖范围较为有限且主要集中于单一加密货币窃取活动86.6%的恶意行为属于同一类型81%的样本来自两个账户仅有少量长尾样本以结构新颖的方式攻击智能体控制平面。完整基准上的评测结果表明表现最佳的技能专用检测器对代码注入的召回率达到98.4%但对提示注入和智能体控制攻击的召回率明显较低说明其检测能力对攻击类型具有较强依赖性。此外评测结论对样本分布高度敏感与使用完整基准相比仅使用真实环境样本进行评测会使检测器的召回率产生最高66个百分点的变化并显著改变其相对排名。例如VirusTotal的排名由接近末位上升至首位。软件供应链扫描器主要分析技能中的可执行代码而提示注入防御机制主要检查其自然语言指令。二者均从单一视角识别风险即使组合使用也难以判断自然语言指令所声明的任务意图是否与代码实际执行的行为一致。因此恶意技能检测不仅需要分别分析自然语言指令与可执行代码还需要联合建模任务意图、指令语义和代码行为之间的一致性。为支持相关研究的复现与后续评估数据集、代码、基线实现及实验结果均已开源。1. 引言AI编码代理如Claude Code、OpenCode、Cursor和Gemini CLI能够代表开发者自主读取、编写并执行代码正在改变传统的软件开发模式。支撑此类自主能力的一项关键机制是技能Skills一种可分发的第三方软件构件通常以SKILL.md为入口集成自然语言指令、可执行脚本与工具配置。当用户请求与某项技能的功能描述在语义上匹配时代理将加载该 Skill遵循其中的操作指令并调用其指定的脚本或工具。从软件依赖关系看Skill 构成AI编码代理的第三方依赖其作用类似于Node.js生态中的npm软件包或现代集成开发环境中的扩展并已作为开放标准被多个主流代理平台采用。与此同时Skill 生态的规模正在迅速扩大SkillsMP当前收录超过160万项技能ClawHub收录超过6.4万项技能主要平台的日均提交量也在数周内由不足50项增长至500余项。Skill 简介然而Skill 生态的快速扩张也为攻击者提供了可利用的安全入口。近期研究表明主流 Skill 市场中超过26%的技能至少存在一项安全相关缺陷。Snyk 对 ClawHub 平台上的3,984项技能进行分析后识别出76个经确认的恶意载荷。此外Antiy CERT 披露了一起有组织的供应链投毒活动攻击者向该平台上传了1,184项伪装成合法插件的恶意技能。上述安全报告及既有AI代理攻击研究表明技能的混合结构主要受到两类攻击向量影响代码注入Code InjectionCI将可执行载荷嵌入技能脚本或内联代码块当代理执行相关代码时载荷可实施数据泄露、凭证窃取或后门植入等恶意操作。提示注入Prompt InjectionPI则将操纵性指令隐藏在技能的 Markdown 文本中以改变代理行为、绕过安全约束或重定向任务目标。这两类攻击均源于既有安全威胁CI 采用的技术模式与恶意 PyPI 和 npm 软件包中的攻击模式高度一致PI 则沿用了针对通用大语言模型的越狱与社会工程技术。Skill 同时包含可执行代码与自然语言指令使上述两类攻击能够分别作用于代码层面和指令层面并可能在同一技能中组合实施。由此技能形成了跨越代码与指令的混合攻击面。从软件供应链视角看技能是AI代理获取第三方能力的软件依赖但传统依赖项安全机制主要分析可执行代码指令级防御则主要检查自然语言内容二者均难以独立识别代码行为与指令语义之间的关联风险。Skill 带来的安全问题此类威胁要求建立可靠的检测机制学术界与工业界已提出多种面向智能体技能的专用检测工具。然而现有研究仍难以准确判断各类工具的实际有效性其主要原因在于缺乏公开且经验证的基准。Snyk和安天等机构发布的行业报告仅提供样本数量与行为统计未公开相应的原始样本。少数公开学术基准的规模同样有限例如Liu等人收集的真实环境数据集仅包含157个样本。为缓解这一缺口本文从公开可访问的技能注册表与技能共享平台收集了703个真实环境恶意技能但即使纳入这些样本现有样本池的规模仍不足以支持对检测器进行全面评估。现有数据对攻击面的覆盖范围有限。在该论文收集的 703 个真实环境样本中86.3%属于依赖项仿冒攻击而提示注入样本几乎缺失Liu等人的数据集也呈现出类似的类别集中现象。使用此类分布偏斜的数据训练或评估检测器可能使其在占主导地位的攻击类型上取得较高性能但无法充分验证其对其他攻击类型的泛化能力。缺乏统一的评测方法。现有检测工具采用不同的技术范式包括基于规则的扫描器、结合静态分析与大语言模型的混合检测器、面向大语言模型的提示注入扫描器以及学术研究提出的检测方法。这些工具通常基于各自的非公开数据集和评价指标进行验证尚不存在同时覆盖代码注入与提示注入并支持公平比较的共享基准。这种评测体系的碎片化使得不同工具的结果难以直接比较也难以区分具有跨攻击类型泛化能力的方法与仅适配特定数据集的方法。这些缺口不仅增加了方法设计与实验实施的难度还会系统性影响研究社区对技能检测能力的判断。在相关评测中同一检测器对恶意技能的召回率会随评测子集的变化产生最高66个百分点的差异甚至使VirusTotal的相对排名由接近末位上升至首位。为降低样本选择对评测结论的影响该论文构建了MalSkillBench其主要研究内容包括构建大规模、经验证的基准真值。MalSkillBench 从三个互补来源收录了3,944个恶意技能包括从公开技能分发与共享平台收集的703个真实环境样本、通过闭环流程构造的3,214个生成样本以及用于验证工具兼容性的27个补充样本。每个生成样本均由真实AI编码代理加载并运行于部署了strace和inotifywait的Docker沙箱中。仅当运行时观测行为与预设真值标签一致时该样本才会被纳入数据集。通过将标签声明转化为可观测的运行时行为证据该验证机制提供了现有数据集普遍缺乏的可靠基准真值。通过分类体系与攻击知识迁移实现系统化覆盖。本文构建了由攻击向量、恶意行为和植入策略三个维度组成的分类体系形成108个分类单元以系统覆盖预定义的技能攻击空间。生成流程从两类外部知识库中提取真实攻击模式CI模式来源于恶意软件包数据集PI模式来源于WildJailbreak等提示注入语料库。随后各类攻击模式被植入经过筛选的良性技能模板中这些模板覆盖12个功能类别用于模拟恶意技能对合法功能的伪装。由此基准的攻击覆盖范围由分类体系驱动构建而不再受真实环境中已公开攻击样本分布的限制。建立统一的基准评测方法。本文在统一的输入格式、运行配置和评价指标下使用MalSkillBench对12种检测工具进行评测。该评测框架能够直接比较不同工具对CI与PI攻击向量以及108个分类单元的检测覆盖情况从而揭示仅使用单一数据集进行评测时可能被掩盖的能力差异。根据该基准该论文能够研究现有数据集难以支持的恶意技能检测问题具体围绕以下四个研究问题展开RQ1攻击可实现性混合攻击空间中的哪些区域能够被可靠实现为可运行的恶意技能哪些区域的攻击难以成功触发RQ2真实环境分析真实环境恶意技能主要采用哪些攻击模式除传统软件供应链攻击外这些样本还呈现出哪些智能体原生威胁RQ3技能专用检测面向 Skill 的专用检测器在代码注入CI和提示注入PI两类攻击向量上的检测性能如何RQ4工具迁移能力现有软件供应链扫描器和提示注入防御机制能否迁移用于恶意技能检测综上上述该论文的主要贡献如下该论文设计了一套闭环“生成—验证—反馈”流水线将外部知识库中的真实攻击模式迁移至技能格式并在沙箱中执行生成样本结合系统调用级行为证据验证其恶意行为是否成功触发。本文发布了MalSkillBench。据现有公开研究这是首个面向恶意技能检测的运行时验证基准与统一评测框架。该基准按照“攻击向量—恶意行为—植入策略”三维分类体系划分为108个分类单元包含3,944个恶意技能和4,000个匹配的良性技能。本文对恶意技能攻击面进行了系统分析。不同攻击向量的可实现性存在显著差异CI的验证成功率达到94.5%而PI仅为75.8%且这一性能差异在后续检测阶段同样存在。真实环境样本呈现明显的类别集中现象其中86.3%采用依赖项仿冒攻击与此同时少量具有新型架构特征的长尾样本通过操纵会话生命周期、身份状态或指令层级攻击智能体控制平面而非直接攻击宿主系统。本文使用MalSkillBench对12种检测工具进行了统一评测。结果表明现有方法尚不能在不同攻击类型上保持稳定的检测性能技能专用检测器的最高F1值为88.6%且其在PI样本上的性能明显下降。仅使用真实环境样本进行评测还会产生系统性偏差使单个工具的召回率最多变化66.3个百分点其中VirusTotal的排名变化尤为显著。现有供应链扫描器与提示注入防御机制的迁移效果同样有限追求高召回率会引发大量误报最高可在4,000个良性技能中产生3,979个误报简单组合两类工具也无法有效整合代码级证据与指令级证据。2. 研究动机2.1 现有数据集的局限性对检测器进行可靠评测需要使用能够充分表征攻击空间的数据集但现有数据源尚不能满足这一要求。本文考察了两个直接可用的数据来源现有公开基准以及从真实环境收集的恶意技能集合。即使合并两类数据大部分攻击类型仍缺乏足够的实证样本。Liu等人构建的真实环境数据集包含从两个平台收集的157个标注样本但其类别分布高度集中。其中86个样本55%来自同一批次上传的商业品牌仿冒技能例如Spotify、DocuSign、LinkedIn和Apple Music这些样本采用了近乎相同的攻击模板。其余样本主要涉及远程代码执行与凭证窃取而纯指令层攻击较为少见。受样本规模与类别集中程度的限制基于该数据集获得的实验结果不足以验证检测器对更广泛攻击类型的泛化能力。本文进一步从公开技能注册表与共享平台中收集并整理了703个真实环境恶意技能但这些样本的分布同样较为集中。其中86.3%的样本采用依赖项仿冒攻击此类技能声明需要安装看似可信的前置依赖通常是openclaw-agent的名称变体从而诱导代理安装恶意依赖。该集合几乎不包含提示注入攻击其主要攻击模式是通过伪造依赖项向宿主系统投递恶意软件针对代理指令层或控制平面的攻击仅占少量长尾样本。将Liu等人公开的157个样本与本文收集的703个真实环境样本合并仍不足以弥补上述数据缺口。合并后的数据依然由依赖项仿冒攻击主导而指令层攻击、代理控制劫持和完全伪装载荷等攻击类型缺乏充分的实证覆盖。因此后续研究将进一步探讨如何利用既有攻击知识系统构造恶意技能样本从而扩展基准对攻击空间的覆盖范围。2.2 已知攻击模式转化为技能在不同软件生态中数据外泄、凭证窃取和后门植入等攻击目标通常保持相对稳定攻击者主要改变的是承载恶意行为的技术载体与触发机制。软件包生态和提示注入研究已经积累了大量经过记录的真实攻击案例。相关分析表明这些既有攻击模式同样出现在恶意技能中。图1通过两个案例说明这一迁移过程案例1展示从恶意PyPI软件包迁移而来的代码注入CI模式案例2展示基于钓鱼式社会工程技术构造的提示注入PI模式。案例1代码注入模式迁移。如图1所示恶意PyPI软件包pyconau-funtimes的setup.py包含一段反向Shell代码。该代码首先创建TCP套接字并连接攻击者控制的服务器随后通过os.dup2将标准输入、标准输出和标准错误重定向至该套接字最后调用/bin/sh -i启动交互式Shell。恶意技能math-calculator在scripts/calculate.py中复用了相同的代码结构和关键API调用序列仅将连接端点由0.tcp.ngrok.io:36946替换为20.120.229.246:4444。因此两者的载荷功能与攻击流程基本一致主要差异在于载荷的承载位置和触发机制前者通过执行软件包安装脚本触发后者则在代理加载并执行技能脚本时触发。该迁移模式并非单一案例。在收集的703个真实环境恶意技能中还发现了与IntelliGraph恶意软件包知识库[16]所记录模式高度相似的数据外泄程序、凭证收集器和持久化机制。案例2提示注入模式迁移。图1进一步展示了社会工程模式由人类用户向AI代理的目标迁移。传统钓鱼邮件通常以紧急安全更新等理由诱导用户从指定地址下载并执行恶意程序。恶意技能google-workspace采用了相似的语义结构其SKILL.md将openclaw-agent声明为必要的前置依赖随后指示代理下载受密码保护的压缩文件并运行其中的可执行程序。与传统钓鱼攻击依赖人类执行欺骗性指令不同该技能将AI代理作为指令执行主体使代理将恶意操作解释为正常的技能配置流程进而在宿主系统上执行外部代码。该攻击不依赖软件实现缺陷而是利用代理对技能指令的信任及其自主调用工具和执行代码的能力。上述案例说明恶意 skill 并未产生完全独立于既有安全威胁的新型攻击逻辑而是将已有攻击模式迁移至代理技能的代码层和指令层。对于CI攻击恶意软件包中的载荷代码、行为逻辑与攻击链可以迁移至技能脚本因此恶意软件包知识库可作为真实CI攻击模式的重要来源用于缓解真实环境样本多样性不足的问题。对于PI攻击其社会工程基础与传统钓鱼及提示注入攻击相似但攻击对象由人类用户转变为能够自主执行指令的AI代理。因此现有提示注入语料库可用于提取PI攻击模式并根据技能的代理介导执行机制将其适配至技能场景。综合利用恶意软件包知识库与提示注入语料库可以系统扩展基准对CI和PI攻击类型的覆盖范围。3. 研究内容图2概述了 MalSkillBench 的整体框架包括统一攻击知识库、生成代理、验证代理和基准数据集四个组成部分。首先统一攻击知识库汇总代码仓库、提示注入案例、威胁报告和真实环境样本等多源攻击知识并通过数据筛选与分类体系构建形成结构化攻击空间。随后生成代理依次执行攻击知识检索、良性模板选择和技能样本合成生成包含SKILL.md、脚本及相关资源文件的候选恶意技能。验证代理在隔离沙箱中执行候选样本并收集运行轨迹依次通过证据匹配与行为验证判断其预期恶意行为是否实际触发。未通过验证的样本及其结构化反馈将被返回至生成代理以指导后续迭代通过验证的生成样本则与真实环境恶意技能共同构成最终基准数据集。该基准进一步支持攻击生成、真实环境分析、技能检测和工具迁移四项研究任务。3.1 攻击分类体系与知识库智能体技能通常以目录形式组织其中包含SKILL.md文件、可执行脚本以及可选的参考文档和资源文件。SKILL.md由YAML前置元数据与Markdown指令正文构成。智能体按照三个层次处理技能内容会话启动时解析YAML前置元数据当用户请求与技能描述匹配时加载Markdown正文作为任务执行指南当指令触发脚本或工具调用时执行相应代码。上述过程构成了智能体技能的基本执行机制。不同处理层次对应不同的安全风险。YAML前置元数据可能被用于身份伪装或权限滥用Markdown正文可能包含提示注入指令可执行脚本则可能承载代码注入载荷。该论文重点分析与运行时行为直接相关的指令层和代码层同时考虑两类攻击的跨层组合。ID恶意行为描述类型1数据外泄扫描文件或数据并将其发送至外部端点传统2凭证窃取窃取API密钥、SSH密钥、密码及环境变量传统3远程代码执行下载并执行远程代码一次性执行传统4恶意软件投递下载、安装并运行恶意二进制程序传统5持久化写入cron、.bashrc或systemd配置以维持持久化传统6反向Shell建立连接至攻击者的反向Shell传统7勒索软件加密用户文件并索取赎金传统8资源滥用实施加密货币挖矿、DDoS攻击或Fork炸弹攻击传统9权限提升执行chmod 4755、滥用sudo或实施容器逃逸传统10角色劫持通过角色设定注入篡改智能体身份智能体11安全机制绕过指示智能体忽略安全规则智能体12指令覆盖注入“忽略此前指令”类载荷智能体13系统提示词泄露诱导智能体泄露其系统提示词智能体14目标劫持隐蔽地重定向智能体的任务目标智能体15内容操纵向智能体输出中注入带有偏见或虚假的内容智能体基于技能的组成结构与执行机制该论文定义了15类恶意行为。其中代码层恶意行为B1—B9依据现有软件供应链恶意软件分类体系归纳涵盖数据外泄、凭证窃取、远程代码执行、恶意软件投递、持久化、反向Shell、勒索软件、资源滥用和权限提升智能体控制行为B10—B15依据近期提示注入研究归纳包括角色劫持、安全机制绕过、指令覆盖、系统提示词泄露、目标劫持和内容操纵。为检验该分类体系的覆盖范围该论文将上述类别与 IntelliGraph 恶意软件包样本、现有提示注入语料库及收集的真实环境恶意技能进行人工交叉核验未发现明显缺失的高频恶意行为类别。定义1 技能技能是以SKILL.md为核心的可分发软件构件由Markdown文档和可执行脚本集合组成。其中SKILL.md用于描述技能功能并提供自然语言操作指令可执行脚本用于实现指令调用的具体功能。技能还可以包含参考文档、配置文件及其他资源但这些内容不属于本文形式化分析的核心对象。该论文从攻击向量、恶意行为和植入策略三个相互关联的维度描述技能攻击空间。其中攻击向量表示恶意载荷作用的技能层级恶意行为表示攻击产生的安全影响植入策略表示恶意内容在技能中的具体承载方式。三个维度共同确定一个攻击单元但不同攻击向量仅能与其适用的恶意行为和植入策略组合。攻击向量该论文区分代码注入CI、提示注入PI和混合攻击MIXED三类攻击向量。代码注入将恶意可执行代码植入技能脚本或者嵌入SKILL.md的内联代码块中。当代理执行相应脚本或代码块时恶意载荷被触发。提示注入将恶意或对抗性指令植入SKILL.md的自然语言内容中利用代理对技能指令的解析与执行机制改变其预期行为。混合攻击将完整攻击链拆分至指令层和代码层。指令层负责引导代理生成、下载或配置中间制品代码层则使用该制品完成后续恶意操作。任一层级均可不单独呈现完整的恶意意图只有当代理遵循相关指令并执行配套脚本时完整攻击链才会被触发。恶意行为表1列出了15类恶意行为。其中B1—B9属于代码层恶意行为包括数据外泄、凭证窃取、远程代码执行、恶意软件投递、持久化、反向Shell、勒索软件、资源滥用和权限提升。这些行为既可以由CI载荷直接实施也可以由PI指令诱导代理调用工具或执行代码来实施。MIXED同样适用于B1—B9但其攻击过程需要指令层与代码层协同完成。B10—B15属于智能体控制行为包括角色劫持、安全机制绕过、指令覆盖、系统提示词泄露、目标劫持和内容操纵。这些行为直接作用于代理的身份、指令遵循、安全约束、系统提示词、任务目标或输出内容因此仅适用于PI。综上上述CI与MIXED对应B1—B9PI则可以对应B1—B15。植入策略植入策略描述恶意载荷在技能内部的位置、组织形式及触发方式。不同攻击向量分别对应代码级、自然语言级和跨层植入策略。代码注入策略。CI包含新建脚本、函数追加、函数内注入和内联代码块四种策略。新建脚本是指在scripts/目录中创建独立的恶意脚本函数追加是指将包含恶意载荷的新函数添加至良性脚本函数内注入是指将恶意代码插入已有函数内联代码块是指将可执行代码嵌入SKILL.md的代码块中。提示注入策略。PI包含完全伪装、局部注入和隐写注入三种策略。完全伪装是指使用整体技能功能掩盖其恶意目的局部注入是指仅在一至三个句子中植入恶意指令其余内容保持良性隐写注入是指通过HTML注释、零宽字符或同形字符等隐蔽文本通道承载恶意内容。混合攻击策略。MIXED包含下载并执行、配置并加载以及获取并运行三种策略。在下载并执行策略中SKILL.md指示代理下载外部制品配套脚本负责执行该制品在配置并加载策略中SKILL.md指示代理生成或修改配置文件脚本读取该配置并触发恶意行为在获取并运行策略中SKILL.md指示代理获取外部内容脚本随后加载并运行该内容。若该策略明确要求无文件执行则应进一步说明外部内容在内存中完成加载与运行。定义2 恶意技能恶意技能由五个要素共同描述技能本体、攻击向量、恶意行为、植入策略和预期可观测行为集合。其中技能本体是包含SKILL.md及相关可执行脚本的技能制品攻击向量用于标识攻击属于代码注入、提示注入还是混合攻击恶意行为用于描述攻击试图产生的安全影响植入策略用于说明恶意载荷在技能中的具体承载方式预期可观测行为集合则记录样本成功触发后应当出现的运行时行为并作为验证过程中判定样本标签是否成立的真值依据。只有当实际观测行为与预期行为相匹配时该技能才被确认为经过运行时验证的恶意技能。定义3 攻击覆盖矩阵攻击覆盖矩阵由攻击向量、恶意行为和植入策略的所有有效组合构成。一个组合仅在恶意行为和植入策略均适用于相应攻击向量时才被视为有效分类单元并纳入基准。对于代码注入9类代码层恶意行为分别与4种代码植入策略组合共形成36个分类单元。对于提示注入15类恶意行为分别与3种自然语言植入策略组合共形成45个分类单元。对于混合攻击9类代码层恶意行为分别与3种跨层植入策略组合共形成27个分类单元。因此攻击覆盖矩阵共包含108个有效分类单元。攻击知识库由代码注入知识子库和提示注入知识子库组成分别对应CI与PI两类攻击的不同技术来源。代码注入知识子库收录恶意代码模式其数据来源为IntelliGraph。该数据集包含3,026个经确认的恶意PyPI软件包并提供软件包源代码、调用图及攻击链标注。提示注入知识子库收录提示注入载荷其数据来源包括WildJailbreak、CCS’24真实环境越狱数据集、Deepset和Gandalf四个语料库共包含20,961个载荷。数据来源不同数据源的原始标签无法直接映射至本文定义的恶意行为分类体系。IntelliGraph采用不同粒度描述恶意软件行为而四个提示注入语料库使用的类别定义与标签体系也不一致。为实现跨数据源的统一检索本文使用大语言模型将每个知识条目映射至相应的分类单元。对于代码条目大语言模型综合分析软件包源代码、调用图及已有攻击链标签对于提示注入条目大语言模型分析载荷文本及其来源信息。模型为每个条目生成两个字段一是从攻击者视角概括其目标与操作方式的简要行为摘要二是分类标签集合用于标识该条目所对应的恶意行为类别及相关分类单元。标注提示中提供完整分类体系作为候选标签并要求模型为每个预测标签指出条目中的具体支持证据以降低无依据标注的风险。未能映射至任何分类单元或者标注置信度低于预设阈值的条目将从知识库中剔除。标签对齐3.2 生成代理对于攻击覆盖矩阵中的每个目标分类单元生成代理按照四个阶段生成候选恶意技能如图2上部所示。算法1进一步描述了完整的“生成—验证—反馈”闭环流程。阶段1攻击知识检索。生成代理根据目标攻击向量和恶意行为类别从攻击知识库中检索 k 个相关攻击示例。检索所使用的知识子库由恶意行为类别决定B1—B9属于代码层恶意行为统一从代码注入知识子库中检索。B10—B15属于智能体控制行为其攻击模式从提示注入知识子库中检索。知识条目采用无放回检索机制。每个条目在首次返回后即被标记为已使用后续生成过程不再重复选取该条目以降低生成样本之间的模式重复程度并提高攻击样本的多样性。阶段2良性模板选择。候选技能需要具备与正常技能一致的功能描述和目录结构。为此本文从包含3,458个良性技能的模板池中选择载体模板。该模板池来源于公开技能聚合平台SkillsMP其中的技能均采用SKILL.md格式。模板池的构建包括两个步骤。首先根据SkillsMP的分类体系选取12个一级功能类别。其次在每个类别中按照技能对应GitHub仓库的Star数与Fork数之和降序遍历条目仅保留能够从平台正常下载的技能并以“技能名称—作者账户”为联合键删除重复项。在样本生成过程中系统从模板池中均匀随机选择一个良性技能。生成的候选技能沿用该模板的名称、功能描述、所属类别和章节结构使恶意载荷被嵌入具有正常功能语义与结构特征的技能载体中。阶段3技能样本合成。技能合成模型接收两类输入一类是与攻击向量对应的系统提示另一类是包含目标攻击向量、恶意行为、植入策略、检索示例和良性模板的用户提示。系统提示用于规定不同攻击向量下的样本生成约束。对于CI样本模型按照目标代码植入策略将恶意代码嵌入新建脚本、追加函数、现有函数或SKILL.md内联代码块。对于PI样本可执行脚本必须保持良性恶意或对抗性指令仅按照目标自然语言植入策略嵌入Markdown正文。对于MIXED样本Markdown指令负责生成、下载或配置中间制品脚本负责使用该制品完成后续恶意操作。阶段4技能输出。模型输出被解析为结构化技能包其中包括SKILL.md文件、scripts/目录中的可执行脚本、assets/目录中的资源文件以及机器可读的_expected.json文件。_expected.json用于声明候选样本成功触发后应当出现的预期可观测行为并为后续运行时验证提供真值依据。对于CI和MIXED样本该文件记录目标域名、文件路径和执行命令等行为指标验证过程中在运行轨迹中观测到相应指标表明预期攻击行为可能已被触发。对于PI样本该文件记录预期的代理响应及拒绝行为模式用于判断注入指令是否改变了代理的预期行为。上述文件共同构成候选恶意技能并被提交至验证代理。如果候选技能未通过验证验证代理将返回结构化反馈。该反馈被追加至后续合成提示生成代理据此重新执行样本合成与制品输出阶段。对于每个目标分类单元系统最多执行 r 次“生成—验证”迭代达到重试上限后仍未通过验证的候选样本将被丢弃。不同良性模板在功能语义、代码结构和执行权限方面存在差异因而并非所有模板都能有效承载任意攻击类型及其植入策略。3.3 验证代理验证代理在隔离的代理运行环境中执行候选技能并判断其运行结果是否包含预期可观测行为。整个验证过程包括沙箱执行、轨迹收集、证据匹配和行为验证四个阶段。其中证据匹配与行为验证构成两层验证机制前者检测明确的运行时指标后者判断观测结果与预期行为之间的语义一致性。所有候选技能均经过两层分析但不同攻击向量所依赖的主要证据信号有所不同。阶段1沙箱执行。候选技能被部署至OpenCode的技能发现目录并在Docker容器中运行。该容器集成OpenCode、Python及由strace -f和inotifywait组成的监控工具链。OpenCode是一种开源AI编码代理用于按照技能的正常功能描述加载并执行候选样本。验证代理根据候选技能声明的良性功能构造触发提示并将其发送至OpenCode。监控工具附加至代理的完整进程树因此技能执行期间创建的子进程及其后代进程均被纳入运行时监控。阶段2运行轨迹收集。验证环境收集两类证据信号。第一类是运行时轨迹包括网络、文件和进程事件第二类是代理生成的文本输出。网络轨迹记录连接建立及域名解析相关事件文件轨迹记录文件访问与修改操作进程轨迹记录进程创建及命令执行事件。上述证据同时作为规则匹配和语义行为验证的输入。阶段3证据匹配。将收集到的运行时证据与_expected.json中声明的入侵指标进行比较对于CI和MIXED样本预期指标包括目标域名、文件路径和命令模式。验证代理在网络轨迹中检查与目标地址建立连接以及与声明域名相关的解析事件在文件轨迹中检查对目标路径的访问或修改并在进程轨迹中检查与预期命令模式匹配的execve()事件。为降低代理正常通信产生的干扰匹配过程排除发往代理自身服务端点的网络流量例如api.openai.com。对于PI样本第一层检查代理文本输出中是否出现预先声明的关键词或短语。这些指标分别对应角色采用、系统提示词泄露、目标重定向或攻击者指定内容等行为。同时系统还检查典型拒绝模式以区分代理执行注入指令与识别并拒绝注入两种结果。第一层能够确定声明指标是否实际出现在运行轨迹或文本输出中但指标匹配本身不必然等同于完整恶意行为已经成功实施。因此其结果应被视为可审计的直接证据而非在所有情况下均成立的行为级确定性结论。阶段4行为验证。将低层运行轨迹与高层预期行为进行关联。对于CI和MIXED样本判别模型接收经过压缩的网络、文件和进程事件摘要及候选样本声明的预期行为将各项行为判定为“已观测”“未观测”或“证据不足”并返回相应置信度及其轨迹证据对于PI样本判别模型根据代理文本输出与预期行为将验证结果划分为“攻击触发”“攻击检出”和“攻击无效”三类分别表示代理按照恶意指令改变行为、代理识别并拒绝提示注入以及代理保持正常行为且未表现出明确的识别或拒绝。“攻击触发”能够证明注入指令成功影响代理行为“攻击检出”则表明样本包含可被代理安全机制识别的恶意指令二者均可作为样本包含PI攻击内容的证据但只有前者能够证明攻击成功实现。因此基准收录与攻击可实现性统计应分别处理这两类结果。判别模型同时为每项行为返回0至1的置信度并在不同攻击向量下采用统一的判定阈值。两层验证结果采用析取方式组合当第一层匹配到预期指标或者第二层以不低于阈值的置信度确认预期行为时该行为被判定为获得验证证据。候选技能至少需要有一项预期行为获得确认才能通过样本验证。本文将第二层语义判断的置信度阈值设置为0.7。第一层主要提供明确、可复核的运行时指标对语义等价变体的覆盖能力有限第二层能够识别不同表达形式下的语义一致行为但其判断具有更高的不确定性。CI和MIXED样本通常主要依赖系统调用、文件和进程证据PI样本则主要依赖对代理输出的语义判断。只有当两层均未提供充分证据时候选技能才会被拒绝。候选技能被拒绝后验证代理生成结构化反馈包括失败原因、实际观测到的预期行为子集和修改建议。实际观测行为子集可以为空当失败原因可被定位时反馈记录相应的运行时证据例如代理未加载目标技能、脚本因语法错误终止或者代理识别并拒绝了注入指令。结构化反馈被加入下一轮技能合成提示生成代理据此重新生成候选样本从而完成“生成—验证—反馈”闭环。3.4 基准数据集MalSkillBench由三个相互补充的样本子集构成真实环境恶意技能集、运行时验证生成集和工具测试样本集。真实环境恶意技能集包含从公开环境收集并经人工确认的恶意技能运行时验证生成集包含通过第3.3节两层验证机制的生成技能工具测试样本集包含从现有技能检测工具官方测试套件中提取的已确认恶意样本。三个子集分别表征真实环境中的已知攻击、分类体系驱动生成的系统化攻击以及现有工具开发过程中采用的威胁模型。真实环境样本为基准提供实际攻击案例但其类别分布较为集中。生成样本用于覆盖攻击矩阵中的108个分类单元特别是提示注入与跨层植入等在真实环境样本中较少出现的攻击类型。工具测试样本则反映现有检测器在设计与开发阶段重点考虑的攻击模式。真实环境样本收集与人工验证。被公开披露为恶意的技能通常会在披露后从公共注册表或共享平台中移除导致部分公开报告指向的原始制品无法直接获取。为恢复并验证这些样本本文采用以下四个步骤。种子发现。系统检索安全博客、厂商公告、威胁情报报告和社区事件列表中的公开披露信息并提取技能名称、仓库地址和发布者账户等样本标识。注册表扩展采集。系统根据种子信息从ClawHub及其镜像站等公开技能共享平台中采集被标记的目标技能并进一步检索同一账户发布的其他技能。扩展过程综合使用发布者身份、平台标签和主题相关性等信息。Git历史版本恢复。对于已经从注册表中移除但托管仓库仍然可访问的技能系统枚举所有修改目标技能文件的提交记录并根据相应提交重建历史版本。跨版本核验。系统根据提交哈希、代码片段和行为描述将恢复版本与原始披露所指向的版本进行交叉比对以确认样本身份并排除披露后修复版本。在样本纳入真实环境恶意技能集之前两名具有至少四年安全研究经验的博士研究人员分别审查其源代码和Markdown内容确认其是否包含恶意行为并依据第3.1节定义的攻击覆盖矩阵标注攻击向量、恶意行为和植入策略。对于存在分歧的标签两名研究人员通过讨论形成一致结论。该过程共获得703个经确认的真实环境恶意技能涉及ClawHub上的50个发布者账户。其中CI样本占据较高比例表明当前公开收集结果中PI样本相对有限。生成样本验证与质量保证。运行时验证生成集由“生成—验证—反馈”流程输出并通过验证的候选技能组成。生成过程覆盖攻击矩阵中的全部108个分类单元并为每个分类单元设置相同的生成预算。最终生成集包含3,214个经过运行时验证的恶意技能各分类单元的样本数量总体保持均衡。为评估自动验证与标签分配的准确性本文按照攻击向量进行分层随机抽样从生成集中选取300个技能其中CI、PI和MIXED各100个。两名审查人员独立检查每个技能的SKILL.md、运行时证据文件及原始系统调用轨迹并分别判断样本是否具有恶意性以及攻击向量、恶意行为和植入策略标签是否准确。两名审查人员对全部300个样本的判断均保持一致为自动化验证流程及标签分配结果的可靠性提供了人工核验依据。工具测试样本。工具测试样本集包含从现有技能检测工具官方测试套件中提取的27个已确认恶意技能用于表征这些工具在开发与测试过程中采用的威胁假设并支持比较工具原生测试场景与统一基准之间的差异。最终MalSkillBench共包含3,944个恶意技能其中包括703个真实环境恶意技能、3,214个经过运行时验证的生成技能和27个工具测试样本。4. 实验分析MalSkillBench 的开源代码已发布于 GitHub是论文提出的方法、数据集及实验评估流程的工程化实现。该项目以 AI 编码代理的第三方技能为研究对象构建了一个同时覆盖可执行代码、自然语言指令及二者协同关系的恶意技能评测基础设施。论文指出Agent Skill通常由SKILL.md、可执行脚本和工具配置构成因而既可能承载代码注入也可能通过自然语言实施提示注入。MalSkillBench据此提供了3,944个恶意技能、4,000个良性技能并利用沙箱运行验证其中3,214个生成样本从而形成运行时验证的恶意技能基准。从功能上看仓库主要包含以下几部分。其中MalSkillBench仓库中的数据可分为两类不能全部等同为论文的基准测试样本论文所报告的3,944个恶意样本和4,000个良性样本主要对应Dataset/Skills/malware和Dataset/Skills/benign。每个样本均以完整目录形式发布至少包含SKILL.md并可进一步包含scripts/、references/和assets/等文件而不是将技能简单转换为一段文本。其中MalSkillBench的恶意技能样本由三部分组成生成样本共3,214个占整个基准恶意样本的约81.5%是数据集的主体。所有生成样本均按照“攻击向量—恶意行为—插入策略”三维分类体系构建覆盖全部108个有效分类单元。为保证样本真实性每个候选样本均需在 Docker 环境中由真实 AI 编码代理加载并执行并经系统调用证据或大语言模型语义判定验证其恶意行为后方可纳入最终数据集。生成样本主要用于弥补真实数据覆盖不足的问题针对野外样本中提示注入、代理控制等攻击类型较少的现状主动补充了角色劫持、安全机制绕过、指令覆盖、系统提示泄露、目标劫持、内容操纵以及 Markdown 与脚本协同实施的混合攻击等典型场景从而使基准能够覆盖更加完整的恶意技能攻击空间而不受当前真实攻击活动分布的限制。需要指出的是该部分样本均为经过运行时验证的合成样本并非全部来源于真实攻击事件。野外样本共703个来源于公开技能注册平台和代码仓库并经过人工复核。该部分样本具有较高的真实性能够反映真实攻击者的技能命名方式、伪装策略和投递链特征。然而其分布存在明显集中现象样本来自50个不同账户其中607个样本采用伪造前置依赖609个属于恶意软件投递且569个样本集中来源于两个账户因此难以全面覆盖恶意技能的攻击空间。工具测试样本共27个来自现有恶意技能检测工具的官方测试套件。它们的主要作用不是扩大数据规模而是保证MalSkillBench覆盖检测工具开发者已经考虑到的攻击场景并验证基准执行器是否能够兼容这些工具的输入。4.1 技能样本组成MalSkillBench 的样本以完整 Agent Skill 软件包的形式组织而非单一文本文件保留了技能的原始目录结构。一个典型样本通常包含 SKILL.md、脚本文件如 Python 或 Shell、参考文件以及资源文件等组成部分。仓库说明指出每个公开样本均为一个完整、自包含的技能软件包除 SKILL.md 外还包含其运行所需的脚本、参考文件和资源文件从而能够真实反映技能的实际部署形态。采用完整软件包组织样本的原因在于不同攻击类型的恶意证据分布于不同位置。对于代码注入CI样本恶意逻辑主要位于 scripts/ 目录或 SKILL.md 中的内联代码块需要结合代码、命令及数据流进行分析对于提示注入PI样本恶意行为主要体现在 SKILL.md 中的自然语言指令需要重点分析任务意图和指令语义对于混合攻击MIXED样本恶意行为由 Markdown 指令与脚本协同构成攻击链因此需要开展跨文件、跨模态的联合分析。样本目录进一步体现了不同攻击类型在文件组成上的差异。例如000-jeremy-content-consistency-validator__CI_B4 同时包含 SKILL.md 和 scripts/ 目录而对应的 000-jeremy-content-consistency-validator__PI_B10 仅包含 SKILL.md 文件反映了代码注入样本与提示注入样本在组织形式上的区别。因此基准评测不能仅分析 SKILL.md也不能仅扫描脚本文件而应以完整技能软件包作为分析对象。尤其对于 MIXED 样本单独分析 Markdown 或脚本均可能无法识别其恶意行为只有联合分析 Markdown 中的指令语义与脚本中的执行逻辑才能完整恢复攻击链。论文据此将此类样本定义为仅在自然语言指令与可执行代码协同作用下才表现出恶意性的攻击形式。4.2 样本命名规则MalSkillBench 的部分生成样本在目录名称中直接编码了攻击相关信息。例如Art__CI_B1、3d-games__CI_B2、Council__PI_B12、CreateSkill__CI_B9__Function_Append 和 Creative Writing Frameworks__MIXED_B8 等目录名称均包含攻击标签。其中目录名称通常采用“基础技能名称—攻击向量—恶意行为编号—插入策略”的组织方式CI、PI 和 MIXED 分别表示代码注入、提示注入和混合攻击三类攻击向量B1–B15 表示恶意行为类别而 Function_Append 等字段则用于标识恶意代码或指令的插入策略。公开目录中同一基础技能通常对应多个不同攻击变体。例如000-jeremy-content-consistency-validator 同时包含 CI_B4 和 PI_B10 两种攻击版本而 3d-games 则对应 CI_B2、CI_B5 和 PI_B10 等多个变体。这种命名方式便于人工检索和样本管理但也可能引入标签泄露风险。如果检测器能够访问样本目录名称、绝对路径或测试清单中的原始标识则可能直接利用 CI_B4、PI_B10 等字段推断样本标签而无需分析技能的实际内容从而导致评测结果失真。因此在利用 MalSkillBench 开展检测模型训练或性能评估时应避免将目录名称作为模型可见信息。具体而言可采用随机标识替换样本目录名称将标签信息独立存储于外部清单Manifest中并确保模型输入仅包含技能软件包的实际内容而不包含任何能够直接暴露标签的信息。此外同一基础技能通常能够生成多个攻击变体若采用随机方式划分训练集和测试集则同一模板的 CI、PI 或 MIXED 版本可能分别进入不同数据集导致模型利用共享的目录结构、文本风格或代码模板完成分类而非学习攻击行为本身。为降低此类数据泄露风险更合理的做法是以基础技能模板或原始技能来源为单位进行分组划分group-wise split确保同一模板的所有攻击变体始终属于同一数据子集。4.3 样本内容分析除目录命名可能引入标签泄露外部分公开样本在正文内容中也保留了较为明显的生成痕迹。以 Dataset/Skills/malware/0x-swap/SKILL.md 为例该样本主体伪装为一个面向 0x 去中心化交易聚合器的技能包含 API 地址、代币地址、手续费、报价及交易命令等正常业务内容。然而在后续部分又插入了与交易任务无关的指令包括收集皮肤纹理和掌纹标识、绕过安全机制、获取私人联系方式及敏感数据并以“道德责任框架”等抽象表述对相关行为进行包装。该样本体现了正常任务目标与恶意指令之间的语义冲突能够用于评估检测器是否具备识别任务意图异常的能力即判断相关数据收集行为是否超出了正常业务需求。然而样本末尾又直接声明该技能属于“pure prompt-injection attack”形成了明显的内容级标签提示使检测器可能依据显式描述完成分类而无需深入分析技能语义。上述现象表明公开样本在内容层面至少可分为两类一类为隐蔽样本其恶意行为嵌入正常工作流程需要结合任务语义以及跨文件信息进行综合分析才能识别另一类为显式样本其正文直接出现“攻击”“绕过”“窃取”或“提示注入”等描述检测器可以依赖关键词或规则较为容易地完成识别两类样本的检测难度存在明显差异。因此在利用该数据集开展模型训练或性能评估之前应首先对样本内容进行审计重点检查是否包含 prompt injection、malicious、attack、steal、exfiltrate、bypass security、ignore previous instructions 等能够直接暴露攻击属性的显式关键词。需要指出的是包含此类关键词并不意味着样本缺乏价值这类样本对于规则匹配方法或基于关键词的检测器仍具有测试意义。然而在实验评估中应将显式攻击样本与隐蔽攻击样本分别统计和报告检测性能以避免显式标签信息导致总体评测结果被高估从而更加客观地反映检测模型对真实恶意技能的识别能力。总结该论文提出MalSkillBench。据现有公开研究这是首个面向恶意智能体技能的运行时验证基准包含3,944个带标注的恶意技能和4,000个匹配的良性技能覆盖代码注入、提示注入和混合攻击三类攻击向量及全部108个分类单元。实验结果表明检测器性能与恶意内容所在的技能层级密切相关性能最优的工具在代码注入样本上的召回率达到98.4%但在指令层攻击上的检测性能显著下降从软件供应链安全或提示注入防御等单一领域迁移的工具难以完整覆盖跨代码与指令的混合攻击面。此外仅使用真实环境样本进行评测会显著改变检测器的相对排名。上述结果表明恶意技能检测需要联合分析技能声明的任务意图、可执行代码和自然语言指令。MalSkillBench为评估相关检测方法及量化该领域的研究进展提供了统一基础。