--- title: SkillSieve:Agent Skill 安全检测三层框架 source_url: https://mp.weixin.qq.com/s/m-MYU5iFRF1ze8NeMW0_aQ publish_date: 2026-05-01 tags: [wechat, article, deepseek, agent, llm, openclaw] review_value: 7 review_confidence: 7 review_recommendation: neutral ingested: 2026-05-16 sha256: 58e30e534a0004e827f4f12c5dd13e359042779d2681383fa16c90826d6775a0 --- # SkillSieve:Agent Skill 安全检测三层框架 **论文:** SkillSieve: Agent Skill Safety Monitoring — A Layered Framework **arXiv:** 2604.06550 **来源:** 模安局(微信公众号),2026-04-27 20:08 北京 在 Agent 生态里,Skill 正在变成一个很现实的新攻击面。一个 Skill 往往既包含 SKILL.md 里的自然语言说明,也可能带着脚本、依赖和权限声明。它看起来像一个"小插件",但实际拿到的是 Agent 的执行能力、环境变量访问能力、文件系统访问能力,甚至网络请求能力。 OpenClaw 的 ClawHub 上已经有超过 1.3 万个社区 Skill,多轮审计发现其中相当比例存在恶意或高风险问题。 SkillSieve 不把所有 Skill 都丢给大模型审,而是设计了**三层分诊流水线**:先用低成本静态分析做快速筛查,再把可疑样本拆成几个语义维度交给大模型判断,最后只对高风险样本启用多模型"陪审团"复核。在 400 个人工标注样本上做到 F1 0.800,明显高于基线 ClawVet 的 0.421。 --- ## Agent Skill 安全检测的挑战 Skill 天生是"双模态"的: - 一部分风险藏在**代码**里:窃取密钥、外传数据、下载执行 - 另一部分风险藏在**文字说明**里:提示注入、权限诱导、社会工程、跨文件分工式恶意逻辑 正则和静态分析工具很难理解 SKILL.md 里的自然语言意图。只靠一个 LLM 做整体判断,又容易被"包装得很正常"的恶意 Skill 绕过去。 **核心问题:** Skill 安全不只是代码扫描问题,而是**说明文档、权限声明、实现逻辑三者是否一致**的问题。 ## 三层架构 ### 第一层:静态分诊(Static Triage) 目标:高召回、低成本。不把所有恶意 Skill 一次判死,而是先捞出来。 平均处理时间:**不到 40ms/Skill**,零 API 成本,先过滤约 **86%** 的总量。 四种信号: 1. **正则规则**:~60 条规则,覆盖反弹 shell、凭证窃取、数据外传、代码混淆、提示注入 2. **AST 结构特征**:解析 Python/Bash/JavaScript,提取系统调用、网络调用、环境变量访问、动态执行、编码字符串 3. **元数据信誉信号**:SKILL.md 的 YAML head 中提取名字相似度、是否申请敏感环境变量、是否依赖危险二进制 4. **SKILL.md 表面统计特征**:外链数量、权限请求次数、敏感路径提及、催促性/隐瞒性语言密度 > 注意:论文尝试了 XGBoost 分类器(CV F1 0.959),但泛化不如启发式打分。原因是训练集中恶意样本过于集中在少数已知攻击者风格上,模型更像在学"作者特征"而非"恶意行为本身"——数据偏置是 real problem。 ### 第二层:结构化语义分解(SSD) 核心创新:不直接问"这个 Skill 恶不恶意",而是拆成**四个并行子任务**: | 维度 | 权重 | 问题 | 抓什么 | |------|------|------|--------| | 意图一致性 | 0.35 | SKILL.md 声称的 vs 实际代码做的 | "嘴上说 A,实际上做 B"的伪装攻击 | | 权限正当性 | 0.25 | 申请的权限是否与宣称用途匹配 | 交易辅助 Skill 却要求读取 API Key | | 隐蔽行为检测 | 0.25 | 是否存在隐瞒/绕过/抑制日志等 | 不是恶意代码而是"行为设计" | | 跨文件一致性 | 0.15 | SKILL.md 与脚本是否一致 | 关键恶意逻辑藏在其他文件中 | 对比实验(同一模型 Kimi 2.5): | 方法 | F1 | 精度 | 召回 | |------|----|------|------| | 单次 LLM 提问 | 0.746 | 1.000 | 0.596 | | SSD(四维分解) | 0.800 | 0.752 | 0.854 | 单次提问"谨慎但不漏判",SSD 提升召回。典型恶意 Skill 不是"明显地坏",而是"局部都像正常,拼起来不正常"。 ### 第三层:多模型陪审团(Multi-LLM Jury) 高风险样本交给三个不同模型独立判断(Kimi 2.5、MiniMax M2.7、DeepSeek-V3): 1. 各自给出结论 2. 如果不一致 → 结构化辩论,参考对方证据 3. 仍无多数 → 升级人工复核 核心价值:**把不确定性显式化**,让系统承认"这件事还需要复核"。争议升级机制本身也是安全能力的一部分。 ## 实验结果 | 方法 | F1 | 召回 | 说明 | |------|----|------|------| | ClawVet(基线) | 0.421 | — | 纯规则基线 | | Layer 1 静态分诊 | 0.733 | 0.989 | 零 API 成本 | | Layer 1 + 单次 LLM | 0.746 | 0.596 | 谨慎但漏判多 | | Layer 1 + SSD(完整) | **0.800** | **0.854** | 最优 | 五类绕过攻击测试(编码混淆、跨文件拆分、条件触发、同形字伪装、时间延迟)全部拦截成功。 ## 局限性 - 检测范围限于静态内容与语义分析,不执行代码 - 对运行时拉取载荷、动态行为、环境依赖型攻击覆盖有限 - 400 个标注样本规模不算大 ## 启发 1. **Skill 安全要按"关系"来审,不要只按"关键词"来审** — 检测重点放在"描述-权限-实现-行为"之间的一致性 2. **分层分流是必须的** — 先让低成本静态分析放走正常样本,再把可疑样本送入深度分析 3. **"把问题拆细"比"换个更强模型"更重要** — 先把要问的问题拆对,再考虑模型强弱 4. **高风险样本一定要保留人工升级口** --- *本文基于模安局(微信公众号)文章整理,原文链接:https://mp.weixin.qq.com/s/m-MYU5iFRF1ze8NeMW0_aQ*