← 返回藏书阁

SecPRBench:因果诊断、修复快照与误报测量分验

wiki/ai/sources/secprbench-causal-judge-snapshot-and-containment.md
分类:ai / sources · 更新:2026-11-02 09:15 最近更新

SecPRBench:因果诊断、修复快照与误报测量分验

结论与用户价值

知识点轴:benchmark-evaluation / sandbox-security / harness-runtime。 值得深挖的不是模型排名,而是“找到同一文件”与“解释同一漏洞”、“判目标仍存在”与“判评审误报”、“复放修复树”与“实际评审树”三组区别。它可直接改进用户私有仓库题池、Hermes code review及安全评测合同;与 Agent-Benchmarks、AI-Code-Review、Harness-Engineering 联读。

昨日仅发现候选,今日补读论文2610.33509v1主文/关键附录,固定发布56eec710cfa9842ec08daf8b629d11c8be24b93b的数据、judge、隔离合同及关键源码。仓库当次API为4 stars,仅作入口信号。本页是机制研究与小规模确定性检查,不是作者模型实验、Docker隔离或漏洞PoC复现。

机制一:评价因果链,不评价位置相似

从历史修复反查真实introducing change,reviewer只见源码snapshot、diff及原变更文字,不见后续advisory、ground truth、标签和可用Git history。相比反转修复补丁,这更接近提交合并前的审查;仍是已披露目标的选择集,不代表普通PR漏洞发生率。

judge先从私有reference提出3—6条必要标准:触发条件、危险操作、缺失guard/生命周期/状态转移/信任边界,再核finding与当前被评审代码均支持该因果链。相同函数/CWE/相邻真漏洞不足以命中;例如Wasmtime的module-level与defined-table索引错配,不能用泛泛越界警告替代。judge只见相关diff,超过30,000字符截断;全仓reviewer与受限judge并非相同证据视野。

论文报告多数漏检已经在根因文件提交了另一机制的finding,但这不是重新人工裁决全部漏检的结论。更有用的迁移是:私有题按触发→sink→被破坏的不变量→当前可达路径制定rubric,把位置命中作为诊断变量,不作为正确答案。

机制二:零companion阳性不等于零误报

令M(P,G)表示报告声称目标因果链,V(S,G)表示被评审snapshot仍有目标;detection判M ∧ V。正确修复的companion上V=false,无论reviewer是否错误重报旧漏洞,detection都为false。因此“所有companion判阴性”不能证明没有旧目标误报、report precision或pair accuracy。

要测旧目标误报,必须先独立确立修复已生效,再问M(P_fixed,G);还需把“别的真实漏洞”“错误重报目标”“无finding”“运行失败/未交付”分开。reference只标一个目标,非目标finding也不能直接算false positive。这是 verifierbench-v4v-positive-coverage-and-all-reject 合法正例覆盖之外的另一盲区:判分问题本身可能对想测的属性没有辨识力。

机制三:四种树身份不能合并

树角色作用与边界
introducing parent原变更前基线
introducing commitreviewer的漏洞snapshot
parent + stored companion patch三版本验证中的组合修复树
recorded upstream fixing commit历史companion实际给reviewer的源码,可能含期间其他改动

同输入/同调用在parent、buggy、composed repaired上出现目标“无/有/无”,是因果验证的一条路线;patch能应用、任意crash/timeout或sanitizer沉默不能替代目标证据。partial-fix、race、feature-absent parent与人工裁决保留各自范围。组合修复树重放成功,不给另一个历史fixing snapshot自动背书;改变review snapshot需新协议版本与新review/judge结果。对照 snowpr-private-benchmark-description-and-harness-controls、swe-bench-pro-verified-leakage-and-task-validity。

捕获论文v1写265 cases;当前固定仓库声明从274-case源快照排除9例、发布265 cases/530 tasks,保留6个已知artifact问题。数值相同不证明全队列/结果同版,本页不混抄排名。已从roster复算9项目265/530、任务路径唯一;未下载530份任务去核全部bytes、未重跑release validator。仓库还区分127份有外部引用的历史replay资产与其余canonical evidence;文件覆盖不是127例本机重放,也不是其余案例无效。

机制四:隐藏标签与网络边界都要落到呈现/执行

固定review_input.py使用明确字段allowlist;已知[Benign]/[Merged]模板在呈现边界清除,原任务bytes不改,真实upstream文字不全局替换;opaque run ID与私有映射分开,防路径/标签旁漏。snapshot.py用git archive、阻断history,metadata在mount外。它不证明模型训练时从未见过公开修复。

sandbox文档与runner关键段要求非root、read-only root、cap-drop、独立scratch、最小凭据mount;内部Docker bridge不单独保证host/sibling隔离,可信helper先装网络namespace规则,成功后才写startup gate,模型API经指定出口。未知输出、OOM、timeout、audit失败不能改写成“成功且无finding”。本轮未审完proxy/network实现或跑真实containment check,不能据参数存在就宣布安全;对照 MCP-Gateway-Runtime 的实际出口/凭据接收方边界。

对用户实践的最小验收合同

  1. 每题保存parent、review commit、验证组合树、GOLD及其bytes/tree hash;题目版本、队列、harness/model/judge配置分开,禁用“同名即同版”。
  2. scorer至少分root-cause match、target present、stale-target alarm、other finding;保留空结果、失败、未判分和全部assignment分母,先测试上述真值表。
  3. public输入、源码、路径、工具回包、环境和egress按reviewer实际可见域审计;原始档案不可变,只在presentation清除确定的构造标记。
  4. 同题同模型比较harness,记录预算/工具/提示/成本/重复次数;论文单次运行和不同预算是整体配置比较,不是模型单因素因果或稳定收益保证。

本轮验证与未解问题

7项固定metadata纯函数合成检查全通过,覆盖wrapper清除、真实原文字保留、显式type优先、legacy suffix及输入不变;另复算265/530及4行M∧V真值表。16份固定URL下载内容与commit指向tree的Git blob hash一致;这不是全仓/任务完整性验证。回执在本轮scratch deterministic-checks.json、archive-receipts.json。

论文的judge一致率/分歧过采样审阅不是独立总体准确率;仓库说明当前冻结结果尚无完成的独立人审。构建pipeline/历史镜像未完整提供、6项artifact修复仍待新版本;本机没有运行PoC、模型、Claude/Codex CLI或Docker。后续最值钱的是独立stale-target alarm裁决与同树/同预算对照,而非重复搬排名。

写入记录

  • 2026-11-02 09:11 CST:补完昨日候选机制深读,新增因果匹配/目标存在/误报分验、四树身份、呈现与执行隔离及版本/队列边界;记录7项纯函数检查、roster核算和固定内容blob核验,明确非benchmark/PoC/Docker复现。