关于 harness-security-bench
harness-security-bench 将 metaharness-darwin 的 security bench 命令封装为技能,在带有已知漏洞与诱饵样本的基准集上评估安全检测机制。它输出总体结果、逐项门槛和基线对比,可用于夜间安全评估。
主要功能
- 01运行安全基准测试
- 02解析总体通过或失败结果
- 03汇总各项门槛结果
- 04比较基线与冠军指标
- 05支持失败时触发告警
适用场景
- 01定期评估安全检测机制
- 02比较不同基线与冠军结果
- 03基准未通过时使 CI 失败
MCP 相关
该技能面向 MCP 渗透测试维度的安全评估,但输入未说明它向 MCP 客户端暴露工具或资源。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ ruvnet/ ruflo --skill harness-security-bench安装后在 Claude Code 中输入/harness-security-bench确认已加载。
详细介绍
展示上游的 metaharness-darwin security bench 命令。这是上游自己的 ADR-155——Darwin Shield,也是 ruflo 夜间自学习安全测试框架最接近的参考实现(#2417)。
为什么这对 ruflo 的 ADR-155 很重要
ruflo 的 ADR-155 提出了三个学习循环(按维度置信度、严重性校准、自动修复出价)。循环 A 基于累积的 (finding, dimension, human_outcome) 元组进行训练,但只有当底层检测机制在已知良好语料库上收敛时,梯度信号才可靠。Darwin Shield 正是在一个包含 10 个漏洞和 9 个诱饵的真实结果集上演进该机制。每晚运行可为我们提供:
- **经验下限:**如果 Darwin Shield 的优胜版本无法在基准语料库上达到 TPR=1/FPR=0,我们循环 A 的奖励信号就是噪声。
- **漂移检测:**逐周比较优胜版本的适应度差异,可发现安全态势(或我们的变异器策略)发生变化的情况。
- **基线多样性:**4 个基线(B0–B3)为我们提供 4 个锚点,用于衡量各维度置信度。
算法
实现:scripts/security-bench.mjs。
- 从已安装的
@metaharness/darwin运行metaharness-darwin security bench --population N --cycles N [--seed S](在_darwin.mjs中固定版本;仅当没有符合条件的已安装副本时,才进行一次缓存安装——绝不使用 npx)。 - 默认超时时间 =
3s × 19 次评估 × population × cycles + 30s 开销。默认--population 2 --cycles 1时约为 144s;--population 4 --cycles 3时约为 12 分钟。 - 解析 Markdown 报告——总体 PASS/FAIL,以及各门槛的通过/失败行(门槛示例:“TPR 相较固定基线提升 ≥ 25%”、“FPR 降低 ≥ 40%”、“补丁测试通过率 ≥ 80%”、“复现成功率 ≥ 90%”、“不安全输出 = 0”、“成本增幅 ≤ 固定基线的 2×”、“超越 SOTA:优胜版本在统计上优于上一优胜版本”、“复合改进:误报重复率下降 ≥ 35%”)。
- 解析基线与优胜版本对比表(4 行:每个测试框架的 fitness/TPR/FPR/patchPass/repro/unsafe/cost)。
- 输出结构化 JSON。使用
--alert-on-fail时,如果总体结果为 FAIL,则退出码为 1。
输出格式
{
"success": true,
"data": {
"overall": { "ok": true, "icon": "✅" },
"gates": {
"total": 11,
"passed": 11,
"failed": 0,
"details": [{ "ok": true, "criterion": "TPR improvement ≥ 25% vs fixed harness", "measured": "+150% (B2 0.4 → B3 1)" }, ...]
},
"baselines": [
{ "harness": "static-only", "fitness": 0.5665, "tpr": 0.3, "fpr": 1, "unsafe": 0, ... },
{ "harness": "LLM single-pass", "fitness": 0.1365, ... },
{ "harness": "fixed agent", "fitness": 0.598, ... },
{ "harness": "Darwin champion", "fitness": 0.93275, "tpr": 1, "fpr": 0, ... }
],
"rawMarkdown": "...",
"shape": { "population": 2, "cycles": 1, "seed": null },
"durationMs": 142000
}
}
接入 ADR-155 夜间测试框架
ADR-155 夜间工作流(根据 #2418 任务 W1.5)会将其作为主动渗透测试维度的调用之一启动——其结果将成为一条轨迹记录:
{
"dimension": "mcp-pentest",
"subdimension": "darwin-shield-bench",
"champion_fitness": 0.93275,
"champion_tpr": 1, "champion_fpr": 0,
"gates_passed": 11, "gates_failed": 0,
"shape": { "population": 4, "cycles": 3 }
}
循环 A 会学习:如果 darwin-shield-bench 在带种子的语料库上持续通过,则提高仅由 mcp-pentest 捕获的发现项的权重。
退出码
| Code | 含义 |
|---|---|
| 0 | 基准测试已运行(总体结果为 PASS 或 FAIL——通过 JSON overall.ok 区分),或已降级运行 |
| 1 | 使用了 --alert-on-fail,且 overall.ok === false |
| 2 | 配置错误或上游基础设施故障 |
优雅降级
当 @metaharness/darwin 不存在时,输出 {degraded: true, reason: 'metaharness-darwin-not-available'} 并以 0 退出。