SecPRBench:因果诊断、修复快照与误报测量分验
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 commit | reviewer的漏洞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 的实际出口/凭据接收方边界。
对用户实践的最小验收合同
- 每题保存parent、review commit、验证组合树、GOLD及其bytes/tree hash;题目版本、队列、harness/model/judge配置分开,禁用“同名即同版”。
- scorer至少分
root-cause match、target present、stale-target alarm、other finding;保留空结果、失败、未判分和全部assignment分母,先测试上述真值表。 - public输入、源码、路径、工具回包、环境和egress按reviewer实际可见域审计;原始档案不可变,只在presentation清除确定的构造标记。
- 同题同模型比较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复现。