5256个恶意样本如何炼成99%精度?Skill Scanner检测评估方法论与Benchmark全解析

发布时间:2026/10/3 13:03:43
5256个恶意样本如何炼成99%精度?Skill Scanner检测评估方法论与Benchmark全解析
5256个恶意样本如何炼成99%精度Skill Scanner检测评估方法论与Benchmark全解析【免费下载链接】skill-scannerSecurity Scanner for Agent Skills项目地址: https://gitcode.com/gh_mirrors/sk/skill-scannerSkill Scanner 是一款面向 AI Agent Skills 的开源安全扫描器专门检测提示注入、数据外泄和恶意代码模式。它最硬核的地方是围绕 5,256 个恶意样本构建的一套可复现检测评估体系在 6,594 个样本的 Benchmark 上检测精度Precision达到 99.16%误报率FPR压到 1.05%。这篇文章拆解它的评估方法论、数据集锁定机制和发布门禁带你看懂一个安全扫描器的成绩单是怎么炼成的。 先看成绩单99.16% 精度是怎么算出来的整个评估的核心是 MaliciousSkillBench 开发集的6,594 个技能包5,256 个恶意 1,338 个良性。新旧两版扫描器的正面对比如下版本TPFPTNFN精度 Precision召回 RecallF1良性误报率 FPR旧基线origin/main1,045481,2904,21195.61%19.88%32.92%3.59%当前 core CEL shadow1,652141,3243,60499.16%31.43%47.73%1.05%几个关键点99.16% 的精度95% Wilson 置信区间为 98.60%–99.50%意味着报 100 次约 99 次是对的误报率从 3.59%相对降低 70.83%3.59% → 1.05%这是用户最敏感的指标——扫描器不能狼来了5 次独立运行结果逐字节一致证明输出完全确定性CEL 决策层每轮评估 154 个候选0 次抑制、0 次回退。 这些数字全部记录在 docs/development/detection-evaluation-rollout.md并附带冻结的证据工件如 active_dynamic_execution_msb_non_test_2026-09-02.json含 SHA-256 校验侧车文件任何人都能核验。 5,256 个样本从哪来数据集角色与锁定机制评估不靠单一数据集而是一套角色分工明确的数据集矩阵完整清单见 evals/datasets/README.md数据集角色是否阻断发布提交版黄金语料库全类别、全严重级别的回归测试✅ 是MaliciousSkillBench主分类 Benchmark5,256 1,338✅ 是OpenSkillRisk正向召回诊断仅恶意样本❌ 否HarmfulSkillBench有害内容召回补充❌ 否NotInject良性硬负样本挖误报用❌ 否ClawHub 安全信号银标签漂移与误报挖掘❌ 否私有来源隔离语料独立复核的真实世界补充集❌ 否可选锁定机制是这套体系防作弊的核心public-datasets.lock.json 固定每个数据集的完整 commit SHA、schema、行数、哈希、许可范围甚至允许用途。上游一旦改 schema 或行数摄取流程直接失败——数据不能悄悄换版本否则所有数字都失去可比性。还有一个关键纪律冻结的测试集成员永远不能用来调规则。开发迭代只在 train/validation 分区进行source-disjoint 测试分区只在发布门禁里打分一次。 怎么算命中一对一匹配 黄金样本评估框架 evals/README.md 定义了严格的指标口径每条检测finding用六元组身份做一对一最大匹配(rule_id, category, severity, file_path, line/evidence-id, analyzer)一条实际检测不能同时满足两条预期——防止一鱼多吃未匹配的预期 漏报FN未匹配的实际 误报FP每条黄金样本记录来源、许可、溯源哈希和标签出处。仓库内 evals/skills/ 有 24 个 schema-v2 严格黄金样本覆盖全部 17 个威胁类别和 CRITICAL 到 INFO 的每个严重级别每个样本都有_expected.json作为标准答案。最硬核的一条铁律标签永远不来自被评估的扫描器本身。无标签样本由本地 Ollama 双通道独立标注模型摘要、提示词、两次随机种子全部冻结两次结果不一致就放弃该样本——宁可少一个样本也不接受一个存疑标签。️ 安全红线恶意样本只看不跑5,256 个恶意样本的摄取流程本身就是安全工程下载与扫描分两个隔离阶段扫描阶段断网、移除全部凭据、拦截所有出站连接物化器只接受文本拒绝符号链接、路径穿越、可执行位样本一律以0600权限落盘样本从不被执行不导入其代码不跟随其中链接隔离样本quarantined不悄悄从分母中移除保持指标诚实。这套安全摄取流程说明见 docs/development/detection-evaluation-rollout.md 的 Safe ingestion 一节。⚙️ 发布门禁一条 CEL 规则晋升要过 9 关扫描器的 CEL 决策层采用shadow影子观察→ enforce强制执行的灰度模式。一条规则要从 shadow 晋升必须同时满足 9 个条件全部规则编译与类型检查通过强制语料上 0 次评估器回退不产生新的 CRITICAL/HIGH 漏报召回与 macro-F1 不下降良性误报率不升目标近失样本集误报相对下降 ≥ 20%5 次运行输出完全相同确定性总扫描 p95 延迟退化 ≤ 10%CEL 耗时占比 ≤ 5%。任何豁免文件都会被拒绝——缺失的结果不算通过的结果。目前所有内置 CEL 规则仍处 shadow 状态因为 source-disjoint 独立测试集上的 FPR 未达标7.71% vs 基线 3.67%主动降级比强行上线更诚实。 每次 PR 自动体检检测影响检查改动任何规则、分析器或策略的 PR会自动触发 detection-impact-check用同一份 5,256 1,338 样本语料分别扫描 base 分支和 PR 分支10 分钟内产出对比报告报告区块内容开发集指标Recall / FPR / Precision / F1MEDIUM各带 95% 区间 配对 bootstrap 区间真实技能2,000 技能固定样本的标记率规则级变化每条改动规则命中的记录、单独提升的记录、恶意/良性分布健康检查扫描错误、降级行、加载回退红线召回下降或 FPR 上升超过 0.5 个百分点PR 直接打回。维护者可以手动接受有意的召回换精度权衡但永远不能豁免降级行、新增错误或证据不匹配——那些是缺陷不是权衡。 真实世界校准188 万个技能的调参之旅Benchmark 上的数字不等于生产环境。团队把整个 187.6 万条的 gitskills 真实技能语料全部扫了一遍docs/reference/measured-results.md阈值出厂规则调优后变化MEDIUM4.184%2.144%−48.7%HIGH2.469%1.987%−19.5%CRITICAL0.629%0.425%−32.4%调优手法非常具体每一条都先由独立 LLM 裁判逐条复核再落地Markdown 是文本容器85% 的FILE_MAGIC_MISMATCH误报只是 YAML frontmatter 被误判为二进制裁判清除率 95%curl | jq不是攻击良性管道白名单改为从头匹配 尾部只允许参数提及 ≠ 冒充Anthropic 的品牌色不触发冒充规则只有由 Anthropic 构建这类断言才触发反向 shell 候选规则被否决116 个恶意包全部已被现有规则覆盖而模板词会误伤红队指南——加不进去也是有效结论仓库把这类否决证据同样归档reverse_shell_c2_core_no_go_msb_non_test_2026-09-02.json。最终沉淀为三档策略包balanced默认、low-noise、quietevals/policies/推荐配置见 docs/user-guide/recommended-settings.md。 诚实的边界99% 精度之外还要看什么这套方法论最值得学习的地方是对不利数据的公开披露召回只有 31.43%——精度 99% 意味着宁可漏报也不误报但无发现 ≠ 无风险是写在 README.md 里的第一原则独立测试集未过晋升门禁F1 13.74%FPR 7.71%开发集是主场泛化差距被明确标注未分析的样本会悄悄通过超过上下文预算的技能会跳过 LLM 阶段文档直言这是需要修复的 fail-openLLM 裁判能大幅拉高召回三通道分解后 F1 达 81.4%但真实技能上会把 MEDIUM 标记率翻倍——每个数字都绑定语料、阈值和模型配置三个变量缺一不可。所有已发布数字的完整出处都收敛在 docs/reference/measured-results.md每个数字都绑定一个命名的语料和总体因为没有任何一个数字能自己跨语料泛化。 新手三步复现快速跑基准约 30 秒无需 API keymake benchmark-eval使用 evals/runners/benchmark_runner.py 对比黄金样本看策略对比约 9 分钟make benchmark-corpus对比 evals/policies/ 下 10 种策略在真实语料上的表现读方法论按 docs/development/detection-evaluation-rollout.md → docs/development/detection-impact-check.md → docs/reference/measured-results.md 的顺序阅读即可完整还原 99.16% 这个数字的产生过程。总结5,256 个恶意样本炼出 99% 精度靠的不是运气而是工程纪律数据锁定哈希固定语料版本测试集冻结标签独立于扫描器严格口径六元组一对一匹配 Wilson 区间扫描错误绝不退出分母硬门禁9 条晋升条件 5 次确定性运行FPR 不降就不上线真实校准188 万个真实技能逐条复核误报开发集之外另有主场诚实披露召回 31.43%、门禁未过、否决的规则全部公开归档。这套方法论的价值在于它让每一个安全数字都可验证、可复现、可追责——这正是尽力而为的扫描器与可信的扫描器之间的差距。【免费下载链接】skill-scannerSecurity Scanner for Agent Skills项目地址: https://gitcode.com/gh_mirrors/sk/skill-scanner创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考