打开网易新闻 查看精彩图片

这项由新加坡国立大学、南洋理工大学和香港科技大学(广州)联合开展的研究,以预印本形式发布于2026年7月2日,论文编号为arXiv:2607.01764,有兴趣深入了解的读者可以通过该编号查询完整论文。

软件世界里有一种特殊的侦探工作,叫做"漏洞复现"。当一个软件系统被发现存在安全漏洞时,安全研究人员需要做的第一件事,不是急着打补丁,而是先证明这个漏洞确实存在——他们需要构造一个精心设计的"触发文件"(专业上叫做PoC,即概念验证文件),让系统按照特定方式崩溃,从而证明漏洞是真实的、可被利用的。这项工作既需要看懂成千上万行代码,又需要像破案一样推理出漏洞的触发路径,极度消耗专业人力。

近年来,AI被寄予厚望,希望它能自动完成这项侦探工作。已有不少AI系统可以在代码仓库里跑来跑去、执行命令、提交文件,但一个令人头疼的问题始终存在:这些AI"侦探"虽然行动能力不差,却老是选错调查方向。它们就像一个手脚很快但脑子没转好的侦探,一路跑错了场子。

正是为了解决这个"选错方向"的核心问题,研究团队开发了一套名为**Mastermind**的系统。这套系统的核心思路可以用一句话概括:**与其训练AI更努力地行动,不如训练AI更聪明地规划**。

一、问题究竟出在哪里

要理解Mastermind的价值,得先明白这个"选错方向"的问题有多严重。研究团队做了一系列实验来量化这件事。

他们固定使用同一个AI执行器(GPT-5.4 mini)来操作代码仓库,但给它不同质量的"侦查策略",然后看结果有什么变化。当什么策略都不给,AI自己闷头干时,成功率只有23.5%。当给它一个由另一个AI根据更丰富信息生成的策略时,成功率跳升至39.5%——同样的执行能力,仅凭一份更好的调查计划,成功率提升了整整16个百分点。

更有意思的是一个反直觉的结果:把漏洞的官方"标准答案"直接塞给AI,让它照着答案去复现,成功率反而只有32%,甚至低于那个"软策略"的39.5%。这说明一件事:知道答案是什么,和知道怎么一步步走到答案,是完全不同的两种知识。一份可执行的调查计划,比一个现成的结论更有用。

研究团队还测试了另一种常见思路:既然一次不行,多试几次总行吧?他们让AI独立尝试8次(每次都不知道前几次的经历),结果成功率从23.5%升至63%。确实有提升,但提升曲线是"前陡后平"的——前几次尝试收获大,后几次越来越多地在重复相似的错误方向,边际效益急剧递减。

于是又有人想到:把前几次失败的经历告诉AI,让它边学边改。这个"迭代改进"的方法表现很好,成功率达到77%,而且比独立尝试8次用了少得多的资源(753次执行 vs 1600次执行)。这说明"从失败中学习并修正方向"比"盲目多试几次"高效得多。

这三个实验共同指向一个结论:制约AI安全侦探的瓶颈,是**选策略的能力**,不是执行命令的能力。Mastermind就是为了正面攻克这个瓶颈而设计的。

二、Mastermind的设计:一个聪明的双循环侦探机构

Mastermind的架构可以用一个侦探机构来理解。这个机构里有四个角色,各司其职,配合得相当精妙。

**档案管理员(Curator,策展者)** 负责管理一个任务专属的案件档案。每次对同一个漏洞发起调查,档案管理员都会翻出以前的记录——哪些路径走过了、哪些输入格式失败了、哪个文件是关键线索——然后把这些信息递给下一个角色。档案管理员的职责是确保机构不会在同一个案子上重蹈覆辙。

**策略规划师(Planner,规划者)** 是整个机构的核心,也是唯一需要通过训练来提升的角色。它接收档案管理员递来的历史记录,结合当前任务的描述,制定一份简洁的调查策略:去哪里看代码、重点关注什么样的输入格式、如何验证触发结果。这份策略不超过2000个词语单位,精炼而具体,绝对不是一份流水账的操作日志。

**现场执行员(Executor,执行者)** 是一个完全冻结的AI模型,它只负责把策略规划师的计划付诸行动——翻代码、运行命令、构造文件、提交给验证系统。关键在于"冻结"这两个字:执行员的参数在整个过程中从不更新,研究团队专门这样设计,是为了严格证明成功来自于更好的策略,而非来自于执行能力本身的提升。

**裁判员(Verifier,验证者)** 使用CyberGym这个专业基准系统,在真实的Docker沙箱容器里运行AI提交的触发文件,检验两件事:漏洞版本的程序有没有按预期崩溃,以及打了补丁的版本是否正常运行不崩溃。这个"双版本验证"机制确保AI不能靠让程序随机崩溃来糊弄过关,必须精确命中那个特定漏洞。

这四个角色之间存在两条反馈回路,构成"双循环"。第一条是**经验回路**:每次尝试的结果都会被档案管理员记录下来,为同一任务的下一次尝试提供参考,这是任务专属的短期记忆。第二条是**策略回路**:训练阶段中,策略规划师会根据多次尝试的结果不断更新自己的参数,学习哪类策略更容易成功,这是可以跨任务泛化的长期记忆。

这种设计有一个深刻的哲学:两种知识属于不同的性质,应该存放在不同的地方。"这个漏洞的触发文件应该关注文件头部的长度字段"这类任务专属事实,在任务结束后就没用了,放在档案里够用;而"遇到内存越界类漏洞时,应该优先尝试攻击者可控的计数字段"这类跨任务规律,才值得烧录进模型权重里。Mastermind的双循环正是按照这个逻辑分别处置两类知识。

三、如何训练一个更聪明的策略规划师

策略规划师使用的基础模型是Qwen3.6-35B-A3B,训练分两个阶段进行,就像培养一位优秀侦探要先学基本功再磨高级判断一样。

第一阶段是**监督微调(SFT)**,相当于给规划师看大量真实的案例教材。研究团队从其他AI系统(Claude Code和Codex)的实际操作轨迹中提取训练数据:给定某个任务和到目前为止的档案记录,应该生成什么样的下一步策略?通过这批数据,规划师学会了一件至关重要的事——看到失败记录之后,要换一个思路,而不是重复同样的方向。

第二阶段是**强化学习(GRPO)**,相当于让规划师在真实案子上接受实战磨砺。每次训练迭代中,规划师对同一个任务同时生成16个不同的策略,分成两组各8个。这16个策略分别交给执行员去实施,然后看各自能走到哪个阶段。表现好的策略(走得更远、更接近成功的那些)会给规划师正向激励,表现差的给负向惩戒,规划师由此逐渐学会哪类策略更靠谱。

为了避免规划师陷入"重复同一类策略"的思维定势,研究团队设计了一套8个**策略槽位**,每次生成的8个策略分别被要求从不同角度出发。第一个槽位要求从"最小化复现"角度出发,第二个要求假设这是一个文件格式解析漏洞,第三个要求假设是整数越界或内存分配问题,第四个假设是释放后使用或状态机错误,第五个要求先挖掘现有测试用例和模糊测试语料,第六个要求先利用崩溃信息反推路径,第七个要求从源代码入口到危险操作做正向追踪,第八个则要求避开最显眼的方向、主动探索次优假设。这8个槽位就像给侦探开了8个并行的脑细胞,每个从不同角度切入,大幅提高了探索的广度。

奖励信号的设计同样精心。研究团队不满足于简单的"成功/失败"二元判断——那个信号太稀疏,规划师学起来太慢。他们设计了一套8级里程碑体系:从"找到了相关源代码"(0.5分),到"构造出了触发文件"(1.5分),到"提交给服务器并被接受"(4分),到"触发了错误崩溃但不是目标漏洞"(8分),再到最终的"精确复现目标漏洞且补丁版本正常"(12分)。最后一步的奖励远高于前面所有步骤之和,确保规划师最终目标始终是精确复现,而非停留在"差不多触发个崩溃"就算数的状态。

四、实验结果:数字背后的真实差距

研究团队在CyberGym基准上进行了严格的评估,该基准包含来自188个真实开源项目的1507个漏洞复现任务,数据来源覆盖ARVO和Google OSS-Fuzz两个权威渠道。训练使用了260个任务,测试在完全独立的200个任务上进行,两者没有重叠。

以最强的执行器GPT-5.5为基础,各种方法的表现构成了一条清晰的阶梯。单次尝试的成功率是23.5%,独立重试8次升至63%,加入静态分析工具PAGENT的指导后升至70.5%,使用迭代经验改进后升至77%,而Mastermind达到了84.5%,用了560次执行,比迭代改进的753次还少。

换用弱一些的执行器GPT-5.4 mini,Mastermind同样产生了显著的提升:从45%升至60%。而对于使用GLM 5.1的配置(走的是Claude Code脚手架),成功率从58.5%升至71%。更关键的是,规划师是**只用GPT-5.4 mini的轨迹训练的**,却能直接改善GPT-5.5和GLM 5.1的表现,这证明学到的策略知识确实是跨执行器可迁移的,而不是针对特定AI的特殊技巧。

从里程碑分布的变化可以看出规划师起作用的具体机制。相比基础版本,Mastermind明显减少了"触发了错误崩溃(m6,漏洞版本和补丁版本都崩溃)"的情况,增加了"精确复现目标漏洞(m7)"的情况。对于GPT-5.5,m6从20次降至5次,m7从145次升至169次;对于GLM 5.1,m6从31次降至18次,m7从117次升至142次。这说明规划师的主要贡献在于引导AI更精准地命中特定漏洞,而非仅仅让程序崩溃。

累积成功率随尝试次数的变化曲线也揭示了有趣的模式。独立重试的曲线前陡后平,大量尝试堆叠在一起只换来极小的边际收益;而Mastermind的曲线从第一次尝试就明显更高,且在后续每次尝试中都能稳步提升。以GPT-5.5为例,Mastermind第一次尝试的成功率就达到47%,已经超过了迭代改进在相同时刻的水平。

对于那些最终没能解决的任务,研究团队也做了细致的失败分析。一类是"语义失败"——AI构造出了看起来合理的触发文件,但就是差那么一点没命中真正的漏洞条件,比如FLAC音频解析器的某个比特读取漏洞(arvo:17069)和libarchive的RAR5格式解析漏洞(arvo:20459);另一类是"搜索失败"——多次尝试都陷入了同一条死路,比如mruby大整数处理的某个漏洞(arvo:49427),8次独立尝试全都提交了同一类思路的变体;还有"系统接口失败"——比如提交脚本出了问题,或者AI模型的安全过滤策略把任务当成了危险请求而拒绝执行。

研究团队还诚实地报告了3个疑似基准本身存在问题的案例:无论是Mastermind还是官方提供的标准答案,都无法在这3个任务上通过双版本验证,候选触发文件要么在补丁版本上也崩溃,要么崩溃在了错误的调用栈位置。这3个任务被保留在200的分母中,以保证结果的保守性。

五、与其他方法的根本区别

研究团队在一张对比表中梳理了Mastermind与当前主流方法的差异,这张表本身就是一份关于"agent设计空间"的导航图。

MPO、PilotRL、Plan-and-Act、CoDA这些方法都有可训练的规划模块,也做了规划与执行的分离,但它们缺少跨次尝试的经验积累,也就是没有档案管理员这个角色。A-Mem做了跨次经验存储,但它的规划器是冻结的,不会从反馈中学习。AlphaEvolve有进化式的多样性探索,也保留了候选方案的历史,但没有经过明确的强化学习训练。Tree-GRPO做了过程级别的信用分配,但没有把规划和执行分开。

Mastermind是同时具备"可训练规划器"、"规划执行分离"、"跨次经验积累"、"过程级奖励信号"、"策略多样性机制"这五个维度的唯一方法。这不是凑功能,每个维度都对应前述诊断实验中发现的一个具体问题。

关于安全性,研究团队也做了认真的讨论。Mastermind训练的是策略选择能力,而非凭空创造新的执行能力,边界是清晰的。训练过程需要大量的执行器调用,成本远高于普通的单次攻击,这从经济上形成了一定的门槛。所有PoC的验证都在CyberGym提供的Docker沙箱中进行,提交还需要校验和认证,系统无法访问基准之外的目标。研究团队也明确表示,任何在开放性探索中发现的新漏洞,都应遵循CyberGym的负责任披露流程,不在主要结果中公开未修复的零日漏洞数量。

归根结底,这项研究讲了一个朴素但深刻的道理:在需要做大量判断和推理的复杂任务里,聪明地选择方向,比快速地重复执行更有价值。Mastermind把这个道理变成了一套可训练、可复用、可迁移的机制,并在真实的、有数百个工程项目覆盖的安全测试基准上验证了它的效果。对于未来的AI软件工程系统而言,这种"先想清楚再动手"的架构思路,或许比单纯追求更强的执行模型更值得认真对待。

有兴趣深入了解技术细节的读者,可以通过arXiv:2607.01764这个编号找到完整论文,原文包含了完整的实验设置、奖励函数推导以及失败案例的详细分析。

Q&A

Q1:Mastermind系统和普通的AI重复尝试有什么本质区别?

A:普通的重复尝试(Best-of-N)每次都是独立的,不会从前几次的失败中学任何东西,就像侦探每次接案都从零开始,越来越多地走重复的弯路。Mastermind的不同之处在于两点:一是有档案管理员把每次失败的经历记下来,下次调查时作为参考;二是规划器本身经过了训练,知道哪类侦查策略在什么情况下更可能成功。两者叠加,效果远超盲目多试几次。

Q2:Mastermind训练好的规划器为什么能用在没训练过的AI执行器上?

A:因为规划器生成的策略是用自然语言写成的,描述的是"去看哪段代码、关注什么输入格式、如何验证结果"这类通用侦查思路,并不包含任何针对特定AI模型的指令格式或操作细节。无论是GPT-5.5还是GLM 5.1,读到同一份策略文本,都能按照自己的方式把它转化成具体操作。策略知识的可迁移性,本质上来自它的抽象层级足够高。

Q3:CyberGym的双版本验证机制为什么重要?

A:很多漏洞触发的本质是程序崩溃,但"让程序崩溃"和"精确复现某个特定漏洞"是两回事。双版本验证要求AI构造的触发文件必须在有漏洞的版本上崩溃,同时在打了补丁的版本上正常运行,缺一不可。这排除了大量"随机崩溃"的误报,确保AI真的找到并复现了那个特定的安全漏洞,而不是碰巧触发了一个不相关的错误。