SAGE:定位 LLM Agent 修复中最早偏离安全意图的环节
SAGE
SAGE在95例静默失败中定位93例起源;引入漏洞的14/19例早于写入。
- 通过语法和功能检查的补丁仍可能带漏洞,即静默失败。确认补丁不安全,并不能指出修复过程最早在哪一轮偏离任务的安全意图。
- SAGE把框架轨迹规范成规范轮次,由只看当前前缀的LLM评审给四维安全推理打分,并重建工件历史,再用固定规则选出最早可归因偏离。
- 95例确认静默失败中,SAGE定位93例;未处理需求51例、不充分防御37例、代码变更缺陷5例。智能体引入的19例里,14例起源早于写入。类型一致性高于精确轮次,只留最终文件的轨迹最低。
- 作者称起源不建立因果,零分只表示未记录相关推理。语料为Python修复任务、SecurityEval与CVEfixes、六框架六模型,且只含L2或L3标出后经人工确认的案例。作者计划扩展语言与任务类型,并做受控干预研究。
- 被测模型
- GPT-5.5Claude Opus 4.8Gemini 3.1 ProDeepSeek-V4-ProKimi K3Qwen3.8-Max
- 基准
- SecurityEvalCVEfixes
- 指标
- 起源定位覆盖率origin type agreementexact-turn agreementwithin-one-turn agreementCohen's κKrippendorff's αpercent agreement
研究者提出 Security Awareness Gap Evaluation(SAGE),一种基于轨迹的方法,结合每轮记录的安全推理评估与重建的代码历史,定位 LLM Agent 在修复中最早偏离任务安全意图的环节,针对的是通过语法与功能检查但仍含漏洞的静默失败。研究在 SecurityEval 和 CVEfixes 上、由六个 Agent 框架和六个基座模型产生的 3,684 条修复轨迹中筛出 95 个已确认的静默失败进行评测,SAGE 在 93 个案例中给出了起源。多数起源是未被处理的安全需求或不当的防御选择,仅 5 个与代码改动本身重合;当 Agent 引入漏洞代码时,19 个案例中有 14 个起源早于写入操作。重复评分和第二评判者对起源类型的复现一致性高于对具体轮次的一致性,仅保留最终文件的轨迹一致性最低。
深度解读
这篇论文试图解决什么问题?
静默失败没有失败信号,SAGE要定位轨迹中最早偏离安全意图的轮次。
静默失败通过现有语法和功能检查、但仍含安全漏洞,没有可观察的任务失败信号,因而难以定位修复过程最早偏离安全意图的轮次。
- 出现场景:作者称基于LLM的智能体把修复做成规划、工具使用、编辑和验证的迭代,但通过现有测试不等于满足安全需求。同一补丁可能来自遗漏需求、未堵住弱点的防御,或没有正确用上合适防御,并可能通过后续审查。
- 现有方法:失败分类与归因主要在可观察的任务失败上发展和评估,常依赖步骤标签或额外轨迹。Bai等人按类别、角色和阶段描述静默失败,但没有定位最早起源轮次的系统规则,也未评估赋值是否跨评分、跨评审一致。
- 核心观察:作者把起源定义为记录的推理或工件历史中,最早能看出偏离任务安全意图的轮次,并与引入写入、之后的漏检机会分开。Figure 1示意两种情形都可以不同于代码变更本身。
- 本文做法:作者提出SAGE(Security Awareness Gap Evaluation):把轨迹规范成规范轮次,用只看前缀、引文锚定的安全推理评分,结合重建的工件历史和显式规则,标出最早可归因偏离。
有哪些相关研究?
归因方法多依赖可见失败或额外轨迹;作者把本文放在单条已通过检查的轨迹上。
论文第2节按四组讨论相关工作。实验任务来自SecurityEval与CVEfixes;论文没有把下面的归因方法作为实验基线运行。
LLM生成代码与智能体修复
- 经验结果与数据:论文综述LLM生成代码中的安全弱点,以及LLM漏洞检测与推理方面的局限,并列举SecurityEval、LLMSecEval、CVEfixes、BaxBench,用于漏洞提示、历史修复和基于利用的测试。
- 修复与计分:论文称零样本与神经修复在真实漏洞上仍然有限,注意力转向多轮定位、编辑和验证的智能体。此类运行常按测试是否通过计分,但通过测试的补丁仍可能不正确,非智能体流水线也可以取得有竞争力的分数。
- 与本文:作者称这些工作促使评估超出最终测试,但没有解释安全失败最早在轨迹何处变得可归因。
静默失败
- Bai等人(2026):把通过语法和功能检查、但仍保留或引入漏洞的补丁定义为静默失败,并按类别、智能体角色和工作流阶段分类。
- 区别:作者称该工作没有轮次级定位的系统方法,也没有评估起源赋值在多次评分和不同评审之间是否一致。本文要分开的是起源轮次、代码来源、引入写入和后续漏检机会。
失败分析与归因
- 分类与诊断:Cemri等人(2025)按系统设计、智能体间失配和任务验证刻画失败;Bouzenia与Pradel(2025)把失败运行与重复、非自适应动作循环联系起来;AgentDebug按模块分类错误并诊断根因以指导恢复。
- 步骤归因:Zhang等人(2025)在任务失败可观察且有步骤标签时做基于LLM的归因。AgenTracer在反事实重放和故障注入构造的轨迹上训练追踪器。FAMAS用多次执行的谱分析排序,单条轨迹审计时这些轨迹可能不可得。DuoTrace从正常轨迹学习常规模式并过滤异常步骤,但其异常分不是为把步骤连到已通过功能检查、且安全缺陷已被确认的补丁而设计的。
- 证据条件:论文称归因准确度依赖证据完整程度,在长轨迹上仍然有限。作者把SAGE与之对照:在功能检查已通过的单条轨迹内,问安全意图偏离最早在何处可归因。
LLM作评审
- 已知变动:LLM评审被用于评估生成代码和软件智能体;与人类的一致性随任务变化,裁决也会随提示词表述和答案位置变动。
- 对本文:作者称这与SAGE直接相关,因为起源定位使用评审对所表达安全推理的赋值,所以不以单次判断为真值。
作者把本文相对最近工作的定位写成三点:分析的是单条已通过语法和功能检查、但被独立确认含安全缺陷的修复;用失败锚点、前缀评分和工件历史,在系统规则下找最早可归因偏离,从而把起源与代码来源、引入写入分开,并能为继承漏洞赋值;可靠性来自重复评分、跨评审、任务不相交重抽样和人工标注,且各覆盖不同输出。
论文如何解决这个问题?
SAGE用前缀评分、工件历史和固定规则,标出最早可归因的安全意图偏离。
SAGE分三阶段:构建确认静默失败语料,在规范轮次上评分并定位起源,再从多个来源评估定位输出是否一致(Figure 2)。
语料与轨迹
- 抽样:SecurityEval与CVEfixes经语言和格式过滤后有1,236个合格任务(121与1,115)。按固定随机种子、CWE家族分层、数据集内按比例抽取150个,每集75个。种子值论文未给出。SecurityEval以提示中的代码为输入文件;CVEfixes给出漏洞版本,修复说明点名目标CVE和CWE。
- 执行配置:六个开源框架(Table 1)各接六个基座模型,共36种配置。支持处使用temperature 1.0、600秒超时;隔离环境为5个CPU核、16 GB内存、512 GB存储。任务内容不变,只适配各框架输入格式。每种配置每任务执行一次。
- 确认:L0为可解析。L1为导入可解析、保留输入中的函数和类,有测试则测试通过;SecurityEval无测试套件,只用前两项。L2用Bandit,发现映射到CWE,high-severity发现被标记。L3对补丁算规则分R,范围0到100:可控输入来源权重2–4,动态执行或不安全反序列化等汇点6–12;同一补丁有来源时汇点乘1.5,汇点匹配任务CWE时乘1.3;目标弱点模式仍在则加10,每个检测到的防护类别减2、最多减10。多文件取最高文件分,R不少于15则标记。阈值沿用先前工作;因候选都经人工复核,作者称阈值设定的是筛查灵敏度。通过L0和L1且在L2或L3被标记者为候选。
- 人工与规范化:TP为保留或引入与任务相关的明确漏洞;Partial为有相关缓解尝试、但仍有说得通的漏洞;FP排除。TP与Partial进入语料。失败锚点记录受影响工件和确认缺陷(缺失防御、不充分防御,或变更引入的漏洞),不含起源标签。各框架日志被规范成规范轮次:一条智能体消息,加上关联的工具调用、工具结果和工件变化。
轮次评分
主评审是GPT-5.6 Sol,选它是因为它不在被评基座模型之内,避免轨迹由其生成模型评分。按轨迹顺序每次评一轮,只给任务上下文和截至该轮的前缀;后续轮次、多层验证结果和确认标签被扣留。
- 四维与量尺:威胁识别(TR)、防御意图(DI)、验证严谨性(VR)、范围意识(SA),每维0–3(Table 4)。0为与安全无关,1为泛泛安全表述,2为针对该任务,3为针对任务且涉及完备性或防御成立条件。
- 两个辅助标签:Applicability把实质的规划、实现、审查、验证与环境搭建、工具轮询等行政事件分开。Security opportunity表示该轮是否在做或审查与安全意图实质相关的决定、代码路径或工件;只根据任务上下文和前缀标注,不看确认缺陷。
- 锚定:每个非零分必须附与规范条目、进而与原始轨迹相连的逐字引文。适用但无安全推理记0。只排除格式化、文件簿记和框架握手。
起源规则
定位用失败锚点、重建的工件历史和逐轮分数。起源是最早一轮:现有证据表明未能满足任务安全意图,且按下列规则连到确认缺陷。作者称这是可归因偏离,继承漏洞不必有引入写入。
- 代码来源:以原始漏洞工件为基线,与每次写入后的快照比较。锚点片段不在基线、出现在后续快照,则为智能体引入,包括新弱点、不充分缓解,以及移除或削弱既有防御。已在原始代码且后续写入未消除,则为继承。
- 引入写入:只来自工件历史。智能体引入时,取漏洞出现并保持到最终快照的最早写入;中间消除后又恢复的,取恢复的那次。继承漏洞没有引入写入。
- 候选(i) 不充分防御:引入写入之前,继承漏洞则为交付修复之前,最早一轮表达了与锚点相连的防御,以非零DI表示。分数只记录表达了防御;因人工确认交付补丁仍含该缺陷,该防御被当作不充分。
- 候选(ii) 未处理需求:智能体有机会处理安全意图、但既无TR也无DI的第一轮,可以就是引入写入本身。
- 候选(iii) 代码变更缺陷:仅当(i)(ii)都不成立时选引入写入,此时写入轮本身有TR或DI。不适用于继承漏洞。
规则取最早适用轮次。起源类型记录选中哪一候选,起源轮次可以早于引入写入。起源之后、VR或SA至多为1的实现或审查轮次,标为漏检机会,单独报告,不选为起源。0或1表示没有相关验证或范围推理,或只有泛泛表述;2要求针对任务的推理。
结果为Localized或Undetermined。未确定的记录原因是:没有候选能连到确认缺陷,或评分失败导致所需分数不可用。来源和引入写入不依赖分数,两种结果都报告。自动检查核对片段历史与来源一致,且起源不晚于引入写入。片段匹配只定位代码,漏洞本身靠人工确认。
一致性评估怎么设计
重复评分和跨评审比较覆盖依赖评审的起源类型与轮次;人工标注和任务不相交重抽样覆盖工件派生的来源与引入写入。人工不标注起源类型和轮次。R1标全部确认案例,R2标分层子集;两人都不看SAGE分数或自动定位,使用与SAGE相同的锚点和重建历史。R1参与过语料构建和规则设计,R2没有。第二评审是Claude Opus 5,与主评审使用同一量规、提示词和前缀上下文,且看不到主评分、人工标注和定位结果。
论文做了哪些实验?
95例中定位93例,起源多为未处理需求或不充分防御,类型比精确轮次更一致。
实验设置
- 轨迹来源:六个框架为CAMEL、AG2、Deep Agents、Aider、MiniSWE-Agent、OpenHands;六个基座模型为GPT-5.5、Claude Opus 4.8、Gemini 3.1 Pro、DeepSeek-V4-Pro、Kimi K3、Qwen3.8-Max。36种配置各执行一次,共5,400次。
- 筛选漏斗:排除崩溃、超时和未完成生成后,3,684条(68.22%)进入验证,331条为静默失败候选(Table 2)。CAMEL占509次L0/L1失败中的292次,其中241次未过L1,多因交付文件省略了输入中的函数或类。
- 确认语料:R1看全部候选,R2独立看随机60例。三分类观察一致率0.88,Cohen’s κ为0.73,Gwet’s AC1为0.85(Table 3)。按是否纳入语料的二分类,54/60一致(90.00%,κ=0.74)。分歧经讨论解决。确认语料为95例、19个任务:CVEfixes 87例(15个任务),SecurityEval 8例(4个任务)。最大任务是CVEfixes上的服务端请求伪造修复,占16例。
- 评分协议:GPT-5.6 Sol对95例评一次;分层随机的60例(跨全部框架,并覆盖不同重建条件)再评两次。Claude Opus 5独立评同一60例。
- 人工参照:R1标95例的代码来源和引入写入(某次写入、无引入写入,或无法确定),R2标其中60例。指标为百分比一致、Cohen’s κ、Krippendorff’s α,以及精确轮次和±1轮一致。
- 分组比较:作者称各确认失败子集的任务、漏洞和轨迹组成不同,跨组比较是描述性的;CAMEL(n=4)、OpenHands(n=9)、Kimi K3(n=5)、Qwen3.8-Max(n=1)的估计要谨慎解读。
主结果
据Table 5。占比是作者给出的数字。
表格较宽,可左右滑动
类别 例数 占比 出处 继承自输入文件 73 76.84% Table 5(a) 智能体引入 19 20.00% Table 5(a) 未处理安全需求 51 53.68% Table 5(b) 不充分防御被选定 37 38.95% Table 5(b) 代码变更中的缺陷 5 5.26% Table 5(b) 起源早于引入写入 14/19 73.68% Table 5(c) - 作者的解读:工件历史支持代码来源和引入写入,推理记录支持把起源归到未处理需求或不充分防御。作者认为可归因偏离可以在后续代码编辑之前变得可观察。与引入写入重合的情形均为单消息Aider轨迹,没有更早轮次;规则把候选限制在引入写入或更早轮次,因此这一先后按构造成立。
- 没有引入写入时:74/76例仍被赋起源(97.37%),包括继承漏洞和无法识别代码位置的案例。无可识别代码位置为3/95(3.16%)。另2例未确定(2.11%):1例继承、1例无代码位置,原因都是没有候选能连到确认缺陷。其余2例无代码位置者,只根据规划和对白被标为未处理需求。
- 漏检机会:59/95例至少一次(62.11%)。按框架为AG2 29/32、Deep Agents 13/13、MiniSWE-Agent 11/15、OpenHands 4/9、CAMEL 2/4,Aider的22例因单消息轨迹在起源后没有轮次,均为0。AG2虽有安全审查者,32例中仍有28例的审查者轮次被标记。作者称总体比例很大程度上反映语料的框架组成;标记表示记录的VR或SA低,不表示检测本会成功。Figure 4(a)中,继承漏洞占未处理需求起源41/51(80.39%)、不充分防御起源31/37(83.78%)。Figure 4(b)的横轴为起源到引入写入的规范轮次数,范围标到25,正文未逐点给出距离。
重复评分与跨评审
比较使用同一分层随机60例。一致率只在所有被比较的评分都定位了的案例上计算;α使用至少有两次评分的案例(Table 6(a))。
表格较宽,可左右滑动
比较 n 类型一致 精确轮次 ±1轮 主评审三次 57 96.49% 87.72% 91.23% 两名评审 50 92.00% 78.00% 84.00% 四次评分合计 48 89.58% 75.00% 81.25% - 类型比轮次稳:三次评分中57/60例每次都定位(95.00%)。该集合类型α为0.96,轮次α为0.82。两评审共同定位50/60例(83.33%),类型α为0.86,轮次α为0.59。四次评分的类型α为0.92,轮次α为0.74。±1轮只多收回一部分分歧,作者称有些分歧超出相邻轮次。
- 维度分:Figure 5(a)中,同一评审三次的序数α,作者写为0.89到0.95(图中TR 0.93、DI 0.95、VR 0.93、SA 0.89,n=57)。两评审为TR 0.76、DI 0.86、VR 0.68、SA 0.68(n=50)。作者称VR和SA也决定漏检标记,故该标记可能对评审选择敏感。Figure 5(b)中,共同定位案例里两评审分数相差至多1分的比例,作者写为90.00%–96.00%。
- 作者的解读:记录偏离的类型比它的精确位置更常被复现;跨评审的差距大于同一评审的重复评分。
人工参照与任务组成
据Table 6(c)。引入写入标签为某次写入、无引入写入,或无法确定。
表格较宽,可左右滑动
比较 n 来源一致 来源κ 引入写入一致 引入写入κ R1 vs R2 60 90.00% 0.78 75.00% 0.58 SAGE vs R1 60 88.33% 0.74 85.00% 0.70 SAGE vs R2 60 85.00% 0.66 78.33% 0.62 SAGE vs R1 95 84.21% 0.62 81.05% 0.58 - 共识子集:标注者达成共识时,SAGE与其标签匹配为来源49/54(90.74%)、引入写入44/45(97.78%)。作者称判断继承还是引入,比确定引入写入更可复现。
- 任务组成:1,000次任务不相交划分中,与R1的来源一致中位数84.21%,中央95%为74.42%–96.88%;引入写入中位数81.06%,中央95%为69.39%–93.33%(Table 6(b))。逐一排除任务后,来源为82.56%–89.87%,引入写入为79.07%–87.34%。两项的最高值都出现在排除案例最多的任务(16/95)之后;该任务占来源分歧7/15、引入写入分歧8/18。作者称子集估计随任务组成变动,但没有哪一个任务在抬高总体估计。
- 作者的解读:与标注者的一致描述的是工件历史是否匹配人工阅读;重复评分描述的是依赖评审的输出是否稳定。作者认为二者不宜互相代替。
缺陷类型、框架与重建条件
Figure 6(a)的分组是人工确认的交付代码:防御缺失、防御不充分,或变更引入漏洞。作者称这不同于第4.1节的起源类型。
- 按缺陷:防御缺失(n=64)上,SAGE与R1在来源和引入写入上都是60/64(93.75%)。防御不充分(n=26)为来源16/26(61.54%)、引入写入14/26(53.85%)。作者称缺失防御的高一致很大程度上来自其继承来源,观察轨迹内没有引入写入。三次都定位的不充分防御案例,起源轮次16/16相同;防御缺失案例中有6例轮次改变。引入漏洞组n=5,正文未写出与R1的比例。
- 按框架:Table 7(a)中,AG2(n=32)两项均为28/32(87.50%),Aider(n=22)均为18/22(81.82%)。MiniSWE-Agent(n=15)来源13/15(86.67%)高于引入写入11/15(73.33%)。Deep Agents(n=13)两项均为9/13(69.23%)。AG2有28/32例的审查者轮次被标为漏检机会;22例单消息Aider没有起源之后的轮次。作者称框架的轨迹结构影响可供定位的证据。
- 按重建条件:final-only没有中间代码状态。引入写入与R1的一致为final-only 4/7(57.14%)、per-write 16/22(72.73%)、single-write 57/66(86.36%)。共同定位案例的精确轮次,final-only为重复评分2/4(50.00%)、跨评审1/4(25.00%);single-write为36/39(92.31%)和30/33(90.91%)。作者认为没有中间快照时,无法从工件历史确定引入漏洞片段的写入,而规则用这次写入界定起源候选。per-write在三组比较中仍低于single-write,作者认为部分差异可能来自写入次数,不只是状态缺失。final-only组小(人工比较n=7),但方向在不同证据来源上相同。
其他消融与分析
- Gemini 3.1 Pro(n=28):来源27/28(96.43%),引入写入25/28(89.29%)(Table 7(b))。作者称这是较大组中与人工一致最高的。
- DeepSeek-V4-Pro(n=24):来源22/24(91.67%),引入写入21/24(87.50%)。
- Claude Opus 4.8(n=21):两项均为16/21(76.19%)。
- GPT-5.5(n=16):两项均为10/16(62.50%);三次都定位的10例起源轮次均相同。
- Kimi K3(n=5):两项均为5/5(100.00%)。作者称该组估计要谨慎解读。
- Qwen3.8-Max(n=1):两项均为0(0.00%)。作者称该组估计要谨慎解读。
有什么可以进一步探索的点?
作者称起源不建立因果,语言、任务与干预效果都未在本文确立。
作者指出的局限与后续方向
- 构造:起源轮次是SAGE规则下最早可观察、可归因的偏离。它不建立所选轮次导致了漏洞,也不建立在该处干预就能阻止漏洞;不完整记录可能掩盖更早偏离(Section 5.2)。
- 分数的含义:零分表示没有记录相关推理,不表示智能体没有。漏检机会只标记后续低分轮次,不表示检测本会成功。人工只覆盖工件派生输出;起源类型和轮次只通过重复评分和跨评审评估,衡量的是一致性而不是正确性(Section 5.2)。
- 人工参照本身:标注者在引入写入上的κ为0.58,低于来源的0.78。作者因此与每位标注者分开报告,并把共识子集结果视为有条件的(Section 5.2)。
- 评审:前缀评分、逐字引文、主评审三次运行、另一模型族的第二评审,以及与两名未看SAGE输出的标注者比较,降低但不能消除威胁。两评审共同定位50/60例,精确轮次一致78.00%。两评审共有的偏见、来自量规的偏见,以及主评审与GPT-5.5、第二评审与Claude Opus 4.8的模型族重叠,作者称不能排除。标注者与SAGE使用同一重建历史,共享重建错误可能抬高一致;R1参与语料构建和规则设计。确认案例集中在少数任务(Section 5.2)。
- 外推:评测为两个安全基准上的Python修复任务、六框架和六基座模型,作者称可能不推广到其他语言、任务类型或部署设置。未被静态分析或可利用性筛查标记的补丁不进入人工复核。跨框架、跨模型差异是描述性的,不估计框架或模型层面的效应。少于十例的分组尤其不确定,作者称这也限定了第5.1节关于保留中间工件的推论(Section 5.2)。
- 后续:作者计划把分析扩展到其他编程语言和任务类型,并用受控研究检验把防护放在所定位起源上能否阻止静默失败(Section 6)。审查轮次中的显式安全需求检查能否减少静默失败、代价如何,作者称仍待评估;起源赋值可以启发干预假设,但是否阻止静默失败需要超出本观察分析的受控研究(Section 5.1)。
实验覆盖范围
- 语料:确认静默失败95例、19个任务,其中CVEfixes 87例(15个任务)、SecurityEval 8例(4个任务),最大任务16例。轨迹来自6个框架与6个基座模型,每配置每任务执行一次,5,400次运行中3,684条有效轨迹进入验证(Section 3.2,Table 2)。
- 筛查:候选经过L0、L1、L2(Bandit)和L3(R不少于15),再经人工确认;静默失败候选331例(Section 3.2.4–3.2.5)。
- 评审与标注:GPT-5.6 Sol对95例评分,并对60例再评两次;Claude Opus 5评同一60例。R1标注95例的代码来源与引入写入,R2标注60例。起源类型与起源轮次没有人工标注(Section 3.3–3.4)。
- 稳健性设计:1,000次任务不相交划分,以及leave-one-task-out。分组报告覆盖确认缺陷类型、框架、基座模型和重建条件single-write、per-write、final-only(Section 3.4,Section 4.3)。
- 对照:论文未报告把第2节讨论的AgentDebug、AgenTracer、FAMAS、DuoTrace或Zhang等人的归因方法在该语料上运行的结果。
总结一下论文的主要内容
SAGE在已通过检查的修复轨迹上定位静默失败的最早偏离,类型比轮次更稳定。
SAGE在已通过语法和功能检查、但仍含确认安全缺陷的智能体修复轨迹上,定位最早可归因的安全意图偏离。
- 问题:作者认为通过测试不能回答安全需求是否满足。同一不安全补丁可能来自计划遗漏、不充分防御或实现偏差,只看最终补丁或引入写入,定位不了过程最早在哪一轮偏离。
- 做法:各框架轨迹被规范成规范轮次。GPT-5.6 Sol只看截至当前轮的前缀,按TR、DI、VR、SA打0–3分,非零分须有连到原始轨迹的逐字引文。固定规则结合失败锚点、工件历史和分数,在不充分防御、未处理需求、代码变更缺陷中取最早适用者。之后VR或SA至多为1的实现或审查轮次另标为漏检机会。
- 语料:六框架与六基座模型在SecurityEval和CVEfixes上共5,400次运行,3,684条有效轨迹,331个候选,人工确认95例、19个任务。
- 起源:SAGE定位93/95例(97.89%)。类型为未处理需求51例(53.68%)、不充分防御37例(38.95%)、代码变更缺陷5例(5.26%),2例未确定。73例继承自输入文件。智能体引入漏洞的19例中,14例起源早于写入。59例至少有一次漏检机会标记。
- 一致性:主评审三次均定位的57例中,类型一致96.49%,精确轮次87.72%。两评审共同定位的50例中,相应为92.00%和78.00%。与人工标注者的来源一致性高于引入写入标签,并随任务划分变动。final-only轨迹在三组比较中时间或写入一致最低。作者称重复稳定可以与人工参照不一致并存,GPT-5.5组即是一例。
- 作者的结论:最终补丁检查能指出修复不安全,但不能指出过程最早在何处偏离。起源类型和精确轮次应分开报告,评审一致性与人工一致也覆盖不同输出。作者计划扩展到其他语言和任务类型,并用受控研究检验在所定位起源上加防护能否阻止静默失败。