SkillSieve 精读笔记论文标题SkillSieve: A Hierarchical Triage Framework for Detecting Malicious AI Agent SkillsarXiv2604.06550 | 2026-04-09作者Yinghan HouImperial College London· Zongyou YangUCL— 同等贡献关键词AI agent 安全、供应链安全、恶意技能检测、LLM 分析、技能市场目录研究背景与问题定义威胁模型技术架构全图方法设计详解数据集构建评估与对比实验消融分析SSD vs 单一Prompt对抗鲁棒性测试效率与边缘部署陪审团动态分析局限性与未来工作核心贡献总结1. 研究背景与问题定义1.1 AI 技能市场的规模与风险AI 编程 Agent如 OpenClaw、Claude Code、Cursor通过「技能Skill」扩展能力一个技能包 SKILL.md自然语言指令 可选的 scripts/ 目录可执行代码ClawHub 截至 2026 年初托管13,000 个技能任何人可发布无强制审查已知攻击活动活动名称时间规模方式ClawHavoc 攻击活动2026年1-2月341个恶意技能335来自同一团伙仿名攻击 跨文件逻辑分割 Webhook外泄凭证Atomic macOS Stealer2026若干伪装成实用工具散发 AMOS 信息窃取程序加密货币技能活动2026若干窃取钱包密钥和交易所 API 凭证漏洞率统计Snyk ToxicSkills 审计13.4%的技能含至少一个严重安全问题独立研究42,447个技能漏洞率26.1%1.2 现有方案的缺陷技能包 代码scripts/ 自然语言SKILL.md │ │ 形式化静态分析能处理 Regex 扫描能处理 SkillFortify ClawVet │ │ ✅ 高F1 (96.95%) ✅ 零成本 ❌ 看不懂自然语言 ❌ 跨文件分割即绕过根本矛盾没有一种工具能同时处理代码和自然语言指令这两种模态。2. 威胁模型攻击者目标凭证窃取API Key、Token、SSH Key、.env 文件数据外泄将本地数据发送至攻击者控制的服务器远程代码执行建立反向 Shell、下载额外载荷社会工程学诱使 Agent 授予更高权限5 类逃逸技术编号技术描述E1编码混淆Base64/Hex 编码恶意命令E2跨文件逻辑分割恶意行为分散在 SKILL.md 和多个脚本中E3条件触发仅在特定环境变量/用户名/时间条件下激活E4同形字替换Unicode 视觉欺骗仿名攻击E5延时载荷潜伏数天后才激活防御者约束仅进行静态分析不执行代码可调用 LLM API 进行语义分析需平衡高召回率 / 合理精确率 / 可控成本3. 技术架构全图┌─────────────────────────────────┐ │ 技能包 (Skill Package) │ │ SKILL.md scripts/*.py/.sh/.js │ └──────────────┬──────────────────-┘ │ ┌──────────────▼──────────────────-┐ │ LAYER 1静态分流 │ │ ⏱ 平均 39ms 零API成本 │ │ │ │ ┌──────────┐ ┌──────────────┐ │ │ │Module A │ │ Module B │ │ │ │Regex规则 │ │ AST特征提取 │ │ │ │~60条规则 │ │ tree-sitter │ │ │ └──────────┘ └──────────────┘ │ │ ┌──────────┐ ┌──────────────┐ │ │ │Module C │ │ Module D │ │ │ │元数据信誉 │ │SKILL.md统计 │ │ │ │仿名检测 │ │ 表面特征 │ │ │ └──────────┘ └──────────────┘ │ │ ↓ 15个特征向量 │ │ XGBoost启发式加权评分器 │ │ 风险分 r ∈ [0,1] │ └──────────────┬──────────────────-┘ │ ┌───────────────────┼──────────────────────┐ │ r 0.3 │ │ ▼ │ r ≥ 0.3 │ ✅ 直接放行 │ │ (~86% 良性) │ │ ┌──────────────▼──────────────────-┐ │ │ LAYER 2结构化语义分解 │ │ │ SSD (Structured Semantic Decomp) │ │ │ ⏱ 2-5s4任务并行取最长 │ │ │ │ │ │ ┌──────────────────────────────┐ │ │ │ │ Task A意图对齐 w0.35 │ │ │ │ │ 声称功能 vs 实际指令是否一致 │ │ │ │ └──────────────────────────────┘ │ │ │ ┌──────────────────────────────┐ │ │ │ │ Task B权限合理性w0.25 │ │ │ │ │ 申请权限是否与功能相符 │ │ │ │ └──────────────────────────────┘ │ │ │ ┌──────────────────────────────┐ │ │ │ │ Task C隐蔽行为检测w0.25 │ │ │ │ │ 是否有隐藏指令/绕过安全机制 │ │ │ │ └──────────────────────────────┘ │ │ │ ┌──────────────────────────────┐ │ │ │ │ Task D跨文件一致性w0.15 │ │ │ │ │ 代码是否与SKILL.md描述一致 │ │ │ │ └──────────────────────────────┘ │ │ │ R2 0.35·sA0.25·sB0.25·sC0.15·sD │ │ └──────────────┬──────────────────-┘ │ │ │ ┌───────────────────┼──────────────────────┘ │ R2 0.4 │ ▼ │ R2 ≥ 0.4 ✅ 放行 │ ┌──────────────▼──────────────────-┐ │ LAYER 3多LLM陪审团裁决 │ │ │ │ 3个不同厂商LLM独立投票 │ │ ┌──────┐ ┌──────────┐ ┌───────┐ │ │ │Kimi │ │MiniMax │ │DeepSeek│ │ │ │2.5 │ │M2.7 │ │-V3 │ │ │ └──────┘ └──────────┘ └───────┘ │ │ ↓ Round 1独立投票 │ │ 一致 ────────────────→ 裁决 │ │ 分歧 ────→ Round 2结构化辩论 │ │ ↓ │ │ 多数(≥2/3) → 裁决 │ │ 无多数 ────→ 人工复审 │ └──────────────┬──────────────────-┘ │ ┌──────────────▼──────────────────-┐ │ 可解释报告输出 │ │ 攻击类型 三层证据链 建议行动 │ └─────────────────────────────────-┘4. 方法设计详解4.1 Layer 1静态分流Module A — Pattern Matching正则规则约 60 条 Regex 规则覆盖 5 类威胁类别检测目标反向 Shell 特征bash -i,nc,/dev/tcp等凭证窃取模式os.environ,.env,~/.ssh访问数据外泄指示符curl/wget 发送 POST 到外部域名代码混淆标记base64_decode, eval(atob()), hex 编码Prompt 注入关键词“do not tell”, “ignore previous”, “must”规则以 YAML 格式存储不区分大小写可扩展。Module B — AST Feature Extraction抽象语法树使用tree-sitter解析 Python/Bash/JavaScript提取特征向量系统调用次数网络操作次数环境变量访问次数动态执行调用eval/exec/subprocess编码字符串字面量数量字符串常量的Shannon 熵高熵 → 可能混淆Module C — Metadata Reputation元数据信誉从 SKILL.md YAML frontmatter 提取技能名与Top-100 热门技能名的最小 Levenshtein 距离检测仿名是否申请敏感环境变量含key、token、secret关键词是否依赖危险二进制curl、wget、nc等Module D — SKILL.md 表面统计无需 LLM指令总长度外部 URL 数量权限申请数量敏感文件路径提及~/.env、~/.ssh紧迫性语言密度“immediately”、“must”、“do not tell”指令长度与描述长度之比分类器选择从 31 个候选特征中选出15 个训练XGBoost分类器训练集1,401 个标注技能608 恶意793 良性5 折交叉验证 F10.959训练集内但因训练集恶意样本分布偏斜集中在 3 个已知恶意作者对异质性强的测试集泛化差F10.677最终使用加权启发式评分器F10.733优于 XGBoost 泛化表现阈值 τ0.3r 0.3 放行r ≥ 0.3 升级 Layer 24.2 Layer 2结构化语义分解SSD核心洞察整体问这个技能安全吗→ 不可靠分解为 4 个聚焦子问题 → 更准确且可解释。四个并行子任务任务权重检测目标捕获攻击类型Task A意图对齐0.35名称/描述与实际指令是否匹配伪装攻击Task B权限合理性0.25所申请权限是否与功能必要过权限技能Task C隐蔽行为0.25是否有隐藏行动/绕过安全机制的指令社会工程Task D跨文件一致性0.15scripts/ 代码是否与 SKILL.md 描述一致分割逻辑攻击意图对齐Task A权重最高0.35因为它是伪装攻击的最强判别器。Prompt 设计结构每个子任务 Prompt 包含五部分系统角色安全分析师完整技能内容SKILL.md scriptsLayer 1 的标记作为上下文引导 LLM 聚焦任务专属分析指令严格的 JSON 输出 Schema风险分 证据引用 等级评级聚合公式R 2 0.35 ⋅ s A 0.25 ⋅ s B 0.25 ⋅ s C 0.15 ⋅ s D R_2 0.35 \cdot s_A 0.25 \cdot s_B 0.25 \cdot s_C 0.15 \cdot s_DR2​0.35⋅sA​0.25⋅sB​0.25⋅sC​0.15⋅sD​R 2 ≥ 0.4 R_2 \geq 0.4R2​≥0.4→ 升级 Layer 3四个任务并行执行总延迟 max(单任务延迟) ≈ 2–5 秒4.3 Layer 3多 LLM 陪审团协议核心洞察单个 LLM 对安全判断存在系统性偏差且偏差方向因模型不同而异。两轮协议Round 1独立投票3 个不同厂商 LLM 独立分析Kimi 2.5Moonshot AI、MiniMax M2.7、DeepSeek-V3百度千帆每个陪审员输出结构化 JSONSAFE / MALICIOUS 置信度 攻击类型 证据 推理若三票一致 → 直接裁决Round 2结构化辩论若存在分歧 → 每个陪审员看到其他陪审员的推理和证据每人必须明确回应反方论点维持或改变立场≥ 2/3 多数票 → 裁决无多数 → 标记人工复审可解释报告恶意判决输出结构化报告攻击类型分类三层证据链L1 静态发现 → L2 语义发现 → L3 陪审员意见建议行动阻断 / 上报 / 升级5. 数据集构建数据来源来源规模说明ClawHub 完整存档49,592 个技能包2026-04-04 快照16,797 位作者Snyk ToxicSkills若干已知攻击载荷的恶意技能样本ClawHavoc 样本若干通过 prompt-security/clawsec 安全公告识别人工标注集400 个技能89 恶意 311 良性157 分歧由人工解决标注体系每个技能获得三个注释二元标签良性 / 恶意攻击类型多标签7 类Prompt 注入、凭证窃取、远程执行、数据外泄、仿名攻击、混淆、社会工程隐蔽等级1明文恶意命令到 5高级混淆 条件触发对抗样本5 类逃逸技术各 20 个样本共 100 个统一使用凭证窃取载荷注入良性模板。6. 评估与对比实验6.1 实验环境硬件Orange Pi AIproARM644核24GB LPDDR4X RAM无 GPU成本$440单板计算机刻意选择低端硬件验证可行性Layer 2/3 LLMKimi 2.5Moonshot AI MiniMax M2.7 DeepSeek-V3百度千帆6.2 主要结果Table 1测试集400 个标注技能89 恶意 311 良性方法精确率 P召回率 RF1准确率 Acc误报率 FPRClawVetRegex0.3290.5840.4210.6420.341SkillSieve L1仅静态0.5830.9890.7330.8400.203L1 Single Prompt1.0000.5960.7460.9100.000L1 SSD本文0.7520.8540.8000.9050.080关键观察ClawVet精确率极低0.329大量误报因为 Regex 不管上下文随便匹配Layer 1 单独召回率接近完美0.989但误报率 20.3%每5个良性就误标1个L1 Single Prompt精确率满分零误报但漏检 36 个恶意技能召回仅 0.596L1 SSD本文在精度和召回间取得最佳平衡F10.800成本分析86% 的技能在 Layer 1 免费解决剩余 14% 进 LLM 分析平均每个技能成本$0.006若全量 LLM 扫描则 $0.01/个Layer 2 修正了 Layer 1 标错的 63 个良性技能中的38 个7. 消融分析SSD vs 单一 Prompt同样使用 Kimi 2.5L1SSD vs L1Single-prompt 的差距SSD 比单一 Prompt多检测出 23 个真实威胁以下 3 个典型案例说明原因案例 1伪装 DeFi 工具maxxit-lazy-tradingSingle Prompt 判断“合法的 DeFi 交易自动化使用了文档化的 API” → 标记为良性SSD 发现Task B权限合理性技能申请了OPENAI_API_KEY但完全没有 AI 功能Task C隐蔽行为检测到指令要求「抑制交易日志记录」案例 2伪身份服务verified-agent-identity-5Single Prompt 判断“合法的去中心化身份管理工具” → 标记为良性SSD 发现Task A意图对齐描述声称是「身份验证」但指令实际是让 Agent 收集和传输私钥案例 3区块链游戏包装botcoinSingle Prompt 判断“有透明代币经济学的区块链游戏” → 标记为良性SSD 发现Task D跨文件一致性setup 脚本执行了 SKILL.md 未描述的操作——将环境变量导出至外部端点规律Single Prompt 评估技能的「声称目的」并认为可信而 SSD 对每个安全维度独立检查捕获了整体判断遗漏的失配。8. 对抗鲁棒性测试Table 25 种逃逸技术的逐层拦截分析逃逸技术L1 分数拦截层L1 命中规则编码混淆0.35L1 L2obfuscation跨文件分割0.40L1 L2credential_theft条件触发0.70L1conditional_trigger同形字替换0.80L1 L2prompt_injection延时载荷0.70L1time_delay三种拦截模式强 L1 信号score ≥ 0.70条件触发 延时载荷含有独特代码结构if os.environ.get(、time.time() -Regex 可靠捕获Layer 2 确认但非必须中等 L1 信号score 0.35–0.40编码混淆 跨文件分割静态信号较弱Layer 1 标记但置信度低需要 Layer 2 语义分析才能确认Base64 解码后的命令或跨文件数据流才能被识别为攻击复合攻击score 0.80同形字替换单独使用纯名称攻击内容良性本可逃避内容分析但真实世界的仿名攻击往往将名称伪装与恶意载荷结合测试案例隐藏的凭证窃取 → 同时触发元数据非 ASCII 名称和内容规则prompt injection复合信号极强Score0.80大规模验证100 个对抗样本每类 20 个全部被正确检测拦截率 100%。9. 效率与边缘部署Table 3效率对比指标ClawVetSkillFortifyVirusTotal Code InsightSkillSieve平均延迟/技能~1s~5s~3s38.8ms†平均成本/技能$0$0~$0.01~$0.006†需要 GPU否否否否可选† 分层架构均摊效果86%×$0 14%×$0.04 ≈ $0.006/技能全量扫描成本对比49,592 个技能 × $0.01单 LLM$496SkillSieve 分层后≈$297节省 1.7×Table 4边缘部署结果Orange Pi AIpro指标数值扫描总量49,592 个技能总扫描时间1,863 秒31 分钟平均延迟/技能38.8 msP95 延迟126.6 ms标记可疑数量6,87113.86%解析失败1,6233.27%硬件成本$440Layer 1 API 成本$0关键发现Layer 1 标记的 13.86% 与 Snyk 独立审计的 13.4% 高度吻合验证了分层过滤的准确性仅 6,871 个技能需要 LLM 分析而非全部 49,592节省 7.2 倍成本Pattern 命中分布Layer 149,592 个技能规则类别命中次数混淆obfuscation35,705主因base64 编码字符串数据外泄6,451社会工程2,652凭证窃取598Prompt 注入484反向 Shell33已知恶意作者验证hightower6eu354 个技能被全部标记13 个已知恶意技能经 Layer 2 分析 → 全部正确分类为恶意召回率 100%平均置信度 0.91技术特征hightower6eu 用社会工程伪 “openclaw-agent” 下载链接moonshine-100rze 嵌入 Base64 编码的反向 Shell10. 陪审团动态分析在 Layer 2 置信度介于 0.25~0.75 的 20 个边界样本上运行完整三层流程Table 5Layer 3 陪审团动态20 个边界样本结果数量Round 1 一致无辩论11触发辩论Round 27— 辩论后达成一致3— 多数票决定2— 争议升级人工2分析辩论机制在 38.9% 的陪审会议中被触发7/183 个案例中异见陪审员在看到其他人的证据后改变立场达成一致2 个被升级人工复审的案例verified-agent-identity-5和openviking-context-database恰好是人工标注者也感到困难的案例 →陪审团不确定性与真实歧义高度相关而非模型失误11. 局限性与未来工作局限性描述运行时盲区静态分析无法捕获运行时从远程 URL 动态拉取的恶意载荷延时载荷最难恶意逻辑在扫描时处于休眠状态所有静态方法都面临此挑战LLM 非确定性Layer 2/3 依赖 LLM API输出非确定论文使用 temperature0 缓解训练集偏斜恶意样本集中于少数已知作者XGBoost 模型泛化差需要更多样化标注数据评估集规模400 个标注样本对安全场景而言仍有限LLM 对抗绕过攻击者可能针对性研究如何欺骗 LLM 判断12. 核心贡献总结三大技术创新1. 分层分流架构Hierarchical Triage廉价静态分析过滤 ~86% 良性技能只对真正可疑的 ~14% 调用 LLM API成本从 $0.01/技能降至 $0.006/技能2. 结构化语义分解SSD将是否恶意分解为 4 个聚焦子任务并行执行每个子任务独立可评估提升可解释性比单一 Prompt 多捕获 23 个真实威胁F1: 0.746 → 0.8003. 多 LLM 陪审团协议Multi-LLM Jury3 个不同厂商模型消除单模型盲点结构化辩论机制处理歧义案例陪审团不确定性与真实歧义高度相关性能对比一览F1 Score 对比400标注测试集 ClawVet ████░░░░░░░░░░░░░░░░ 0.421 SkillSieve L1 ████████████████░░░░ 0.733 L1SinglePrompt ██████████████████░░ 0.746 L1SSD (本文) ████████████████████ 0.800 0 1.0开源资源代码、数据集、400 个标注测试集已全部开源49,592 真实 ClawHub 技能存档2026-04-04 快照论文链接https://arxiv.org/abs/2604.06550生成时间2026-04-09