☰
驯服LLM严重度通胀:Mantis-calibrate风险评分矩阵全解析,让最危险的风险浮出水面
2026/10/7 7:56:37 网站建设 项目流程

驯服LLM严重度通胀:Mantis-calibrate风险评分矩阵全解析,让最危险的风险浮出水面

【免费下载链接】mantisA modular, stack-agnostic toolkit for AI coding agents to autonomously find, reproduce, and patch vulnerabilities.项目地址: https://gitcode.com/gh_mirrors/mantis17/mantis

在AI安全扫描中,LLM严重度通胀(severity inflation)是个老大难问题:大模型总倾向把每个漏洞都标成"CRITICAL",淹没真正致命的问题。Mantis(GitHub 加速计划 / mantis17 / mantis)是一个面向 AI 编码智能体的模块化漏洞挖掘工具包,其中的/mantis-calibrate风险校准器专门用一套"影响 × 可能性 × 上下文"的风险评分矩阵为每个发现打分(1-10),把最危险的风险浮出水面,而不是喷涌出几千条"危急"。本文完整拆解这套校准机制的设计思路 🎯。

为什么需要"风险校准器"?

当 AI 智能体自主扫描代码库时,典型困境是:

  • 🔴虚高报告:模型对"代码脆弱性""理论风险"也给出高危评级
  • 🌀注意力稀释:安全专家面对数百条"CRITICAL",真正 0-click RCE 被埋没
  • ⚖️标准不一:同一漏洞换个描述方式,评分就漂移

Mantis 在 README.md 中明确把校准列为核心能力:

Calibrate all findings based on an established rubric tocombat LLM inflation of severity(surfacing the most critical risks to humans instead of spewing thousands of "criticals")

校准器在整条流水线中位于第 12 阶段(Calibrate),由@mantis-calibrate子代理执行:读取workspace/findings/下所有已完成复现、修复验证的发现文件,结合威胁模型,为每条发现追加最终风险分,供后续报告阶段使用。流水线全貌可参考 README_AGENTS.md 中的阶段图。

评分矩阵:Hazard = (Impact + Likelihood) × Multiplier

完整规则定义在 mantis-calibrate/SKILL.md,核心公式只有三块积木:

1️⃣ Impact(影响,1-5 分):用 CIA 三元组 + "爆炸半径"

分值含义
5系统性机密性/完整性崩塌(如未授权 RCE、根密钥泄露)
4大范围数据暴露或主要服务全面中断
3部分数据暴露、临时性中断
2轻微泄露;只影响单一用户自己数据的漏洞封顶 2 分
1纯外观/卫生问题("代码脆弱"类发现强制为 1)

两条关键的升降级规则:

  • 安全控制绕过升档:直接绕过认证、鉴权、签名验证等核心安全控制的,Impact 至少抬到 4;
  • 权限天花板:需要高权限(admin→super-admin)或仅是内网横向移动的,Impact 封顶 2;普通已认证用户利用的封顶 3。

2️⃣ Likelihood(可能性,1-5 分):看实证而非理论

评分锚定的是已被证明的可行性:在野利用或智能体写出了可武器化的 exploit 记 5 分;有公开 PoC 记 4 分;纯理论无已知利用路径记 1 分。若利用路径依赖罕见的 API、非默认配置或不常见的数据格式,还要额外扣 1-2 分(Reachability-in-Practice 修正)。

3️⃣ Context Multiplier(上下文乘数,0.1-1.0):暴露面决定生死

这是"矩阵"最有工程味道的部分——同一漏洞,放在不同的信任边界里,风险天差地别:

暴露面乘数说明
EXPOSED(对外接口)1.0不受信输入直接可达
INTERNAL(内部组件)0.8接收半可信的已解析数据
PRIVILEGED(特权区)0.5深嵌在受信任区域内

在此之上还会叠加一系列"连乘"修正:

  • 死代码(运行路径永远不会调用)→ 乘数直接压到0.2
  • 需要用户交互(CSRF、点击型攻击)→ 再乘0.7
  • 仅样本/测试代码可触发 → 乘0.4,通常只能落在 MEDIUM
  • 仅非默认配置可触发 → 乘0.7
  • 纯 DoS 且组件可用性等级为 LOW_CRITICALITY → 乘0.5

例:内部组件(0.8) + 需要用户点击(0.7) = 0.56 —— 这样的发现天然被压在 CRITICAL 门槛之下。

最终Hazard = (Impact + Likelihood) × Multiplier,封顶 10.0。此外还要求模型在推理中讨论Risk = Hazard + Outrage(舆情/声誉风险),但舆情只写评语(outrage_commentary),不许混进数字分——防止"吓唬人"抬高分数。

27 条"理智分诊"规则:给分数踩刹车 🚦

打完分还有第二道闸门:Critical Sanity Triage。核心原则是边际能力(Marginal Capability)——漏洞给攻击者带来的"新增"能力有多大?如果攻击者本来就已经拥有同等控制力,发现就必须降档。

完整目录收录在 calibration_rules.md,按"刹车力度"分三类:

🅰️ 强制降为 LOW(封顶 2.0)——11 条

典型触发场景:

  • repro_failure:复现失败或未尝试复现
  • unreachable_inputs:输入无法从信任边界触达
  • prerequisite_shell:攻击者已拥有同等或更高权限的本地 shell("你已经是 root,还打什么 root 提权漏洞")
  • physical_long_term:需要长期物理接触设备(故障注入、拆芯片)
  • standard_host_attacks:宿主系统打 guest——设计如此,零边际能力

🅱️ 强制封顶 HIGH(7.9)——8 条

  • static_confirmation:仅静态确认、未实证复现 → Likelihood 封顶 3、乘 0.8,禁止 CRITICAL(有 ASan/崩溃日志等实证痕迹可豁免)
  • strict_xss:所有 XSS 默认 MEDIUM/LOW,仅管理员零点击存储型 XSS 可触及 HIGH
  • probabilistic_llm:依赖提示注入等概率性 LLM 行为的攻击
  • supply_chain_prerequisites/non_default_config:入口门槛极高的攻击

🅲 强制封顶 MEDIUM(5.9)——8 条

  • local_attack_vector:需本地 shell 的提权类
  • self_contained_blast:爆炸半径完全锁在触发者自己租户/容器内
  • equivalent_primitives:管理员利用 bug 下载了自己本来就能下载的文件
  • physical_temporary:USB 插入、evil maid 等临时物理接触

优先级映射:CRITICAL 8.0-10.0(且必须是无特权攻击者 + 零点击,这条是绝对规则);HIGH 6.0-7.9;MEDIUM 3.0-5.9;LOW 0.1-2.9。多条规则同时命中时,最严的一票通过(Force-LOW > cap-MEDIUM > cap-HIGH)。

可审计:每条规则都要留下"判决记录"

这套机制的精髓之一是可审计性。校准完成后,每条发现的 JSON 里会追加一整套字段(impact_score、likelihood_score、inferred_exposure、attacker_position、mantis_risk_score、priority等),其中最值得称道的是calibration_checklist:

  • 27 条规则逐一给出结论:APPLIES/DOES_NOT_APPLY/UNKNOWN,命中规则必须附理由
  • sanity_triage_applied按"最严优先"顺序列出触发规则,形如"Local Attack Vector; Internal/Nested"
  • 规则状态不明(UNKNOWN)时不降分(保持分数保守),但会标记Incomplete Calibration提醒人工复核

这种"评分 + 完整检查单"的设计,让人类安全专家几分钟内就能判断 AI 的打分是否讲道理,而不是只能盲信一个数字。

防"陈旧证据":STALE-EVIDENCE 守卫

在启用快照(snapshot)同步模式时,代码可能在两轮扫描之间漂移。此时如果拿旧代码上的崩溃日志当"复现成功",就会错误地给分。SKILL.md 中专门设计了STALE-EVIDENCE 守卫:发现与当前快照不匹配时,禁用死代码降权、禁止用旧堆栈日志提升 Likelihood、复现失败不强制 LOW,而是保持保守分数并打上STALE_EVIDENCE标记。宁可分数偏高一点走人工复核,也不允许"过期证据"污染评分。

有基准、有验证:评分不是玄学

项目为校准器配备了专门的评测集 reference/evals/calibrate_dataset.json,覆盖典型三档:

  • 未认证 RCE(有可用 PoC、零前置)→ 期望 9.0-10.0,P0_CRITICAL
  • 跨租户 IDOR 数据外泄(已认证普通用户)→ 期望 6.5-8.5,P1_HIGH
  • 微秒级计时偏差(无实际影响)→ 期望 1.0-3.5,P3_LOW

对应的工具实现见 reference/tools/research_tools.py 中的score_risk与calibrate_finding——它们对输入做硬校验(风险分 0.1-10.0、影响/可能性 1-5、优先级枚举),从工程层面杜绝模型"打出一个 64 分的 CRITICAL"。工作流定义中校准节点可参考 reference/workflow.json 的calibrator配置。

快速上手:把校准器跑起来

Mantis 提供mantis-configure/mantis-launch自动化配置与启动工具。安装并运行完整流水线(内含 calibrate 阶段):

cd reference && ./install.sh python3 scripts/configure.py --auto ./run.sh path/to/code

如果你想在自己的项目里复用这套思路,建议:

  1. 先阅读 mantis-calibrate/SKILL.md 中的 Impact/Likelihood/Multiplier 三段定义,它是可直接移植的评分 rubric;
  2. 把 calibration_rules.md 的 27 条规则按你的威胁模型增删(Mantis 官方也建议在威胁模型中声明Calibration Overrides来抬升/收紧特定场景的天花板);
  3. 仿照评测数据集构造 3-5 条"期望分数区间"用例,持续回归你的校准器。

小结

Mantis 的/mantis-calibrate用一个朴素但严格的公式——(影响 + 可能性) × 上下文乘数 + 27 条理智刹车——把 LLM 安全扫描从"CRITICAL 大爆炸"驯化成了可排序、可审计、可复核的风险清单。它的启示很简单:对抗 AI 幻觉与评分通胀,靠的不是更强的提示词,而是把评分变成一套有天花板、有例外条款、且每一步都留痕的矩阵。当最危险的 3 个问题稳定地排在报告最上面时,这套机制就赢了 ✅。

【免费下载链接】mantisA modular, stack-agnostic toolkit for AI coding agents to autonomously find, reproduce, and patch vulnerabilities.项目地址: https://gitcode.com/gh_mirrors/mantis17/mantis

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询