ARTICLE · 1224846
CyberGym:当AI开始真正验证软件漏洞
CyberGym 尝试用一种更严格的方式回答这个问题,AI 不仅要分析漏洞,还要通过实际执行,证明自己生成的测试确实能够触发目标漏洞。这意味着,AI 安全能力的评价标准正在发生变化。单纯的知识问答和代码生成,正在向可执行、可验证的任务评测延伸。理解 CyberGym,不只是理解一个漏洞评测基准,更是理解 AI 智能体如何将代码分析、工具调用、测试生成和结果验证结合起来。
一、CyberGym 究竟在测试什么?
CyberGym 由加州大学伯克利分校等研究人员提出,最初发布的基准包含 1,507 个真实漏洞任务,覆盖 188 个开源软件项目。它的核心任务是让 AI 智能体根据漏洞描述和修复前的代码库,自主分析程序,并生成能够复现目标漏洞的概念验证程序,即 PoC(Proof of Concept),要理解这项工作的意义,需要区分三个不同层次的能力。
第一层是漏洞识别。给模型一段代码,让它判断是否存在越界访问、整数溢出、内存错误等问题。这主要考查模型对代码逻辑和漏洞原理的理解。
第二层是漏洞复现。模型不仅要判断问题可能存在,还需要构造特定输入,让程序真正执行到存在缺陷的代码路径。这要求模型理解输入格式、数据流、函数调用关系和漏洞触发条件。
第三层是结果验证。即使程序发生崩溃,也不能直接认定任务成功。智能体还需要证明,这次异常符合目标漏洞的验证条件,而不是由其他错误引起。
CyberGym 的重点是后两个层次,尤其强调通过实际执行验证 PoC 的有效性。例如,某个图像处理程序在计算缓冲区大小时,没有正确检查输入数据中的长度参数。模型可能很容易指出这里存在整数溢出风险,但要真正复现漏洞,还需要理解图像文件格式、相关字段之间的关系,以及输入数据如何影响程序执行。如果生成的文件在进入目标函数之前就被拒绝,漏洞仍然没有复现。如果程序确实崩溃,但崩溃发生在另一个无关位置,也不能直接判定成功。因此,CyberGym 真正考查的不是 AI 能否说出漏洞原理,而是它能否将分析结论转化为有效的执行结果。
二、从代码分析到 PoC 生成,智能体是如何工作的?
一次典型的 CyberGym 任务,可以从任务输入、代码分析、PoC 构造和执行验证四个环节来理解。
首先,评测系统向智能体提供漏洞描述和相应的修复前代码库。漏洞描述可能包含漏洞类型、相关函数或其他线索,但智能体仍需要自行分析代码,确定问题的具体触发机制。
其次,智能体开始调查目标项目。它可以调用代码搜索、文件读取、脚本执行和测试工具,寻找相关函数,分析调用关系,理解输入数据如何在程序内部传递。这一步往往比表面上看起来更加复杂。真实软件可能包含数千个文件,目标函数也未必直接处理外部输入。一个参数可能经过多层函数调用、类型转换和边界检查,最终才影响存在缺陷的操作。智能体必须沿着这些数据和控制路径逐步分析,确定哪些输入条件可能触发问题。
再次,找到疑似缺陷后,智能体需要将分析假设转化为测试输入。对于文件解析程序,它可能需要构造具有特定字段组合的文件。对于处理网络协议的程序,则可能需要满足一定格式和状态条件的输入数据。测试输入生成后,智能体调用执行环境运行程序,并根据返回结果判断是否成功。
最如果没有触发目标漏洞,智能体就需要分析失败原因。问题可能出在输入格式、参数取值、程序执行路径,也可能出在最初的漏洞假设上。它可以根据错误信息调整输入,重新检查代码,并再次尝试。
这个过程体现了 AI 智能体与普通大模型问答的本质区别。大模型主要根据输入生成回答,而智能体可以在目标环境中连续执行多个动作,并利用执行反馈调整下一步决策。
当然,具体使用哪些工具、采用何种任务分解方式,取决于智能体系统的实现。CyberGym 提供的是任务和评测机制,并不强制要求所有智能体采用同一种内部架构。
三、为什么一次尝试往往不够?
真实漏洞研究存在大量不确定性。即使智能体已经理解了漏洞原理,也不一定能在第一次尝试中构造出有效 PoC。原因在于,漏洞触发通常需要多个条件同时满足。假设某个程序在解析文件时存在越界访问问题。智能体可能正确找到了目标函数,却没有理解输入文件中的长度字段和偏移字段之间的约束关系。第一次生成的文件因此无法通过前置检查,程序根本没有执行到漏洞代码。此时,如果智能体只根据“没有发生崩溃”就判断漏洞不存在,就会过早结束任务。更合理的做法是分析程序为什么拒绝输入,判断问题出在文件格式、执行路径,还是漏洞假设本身,再根据证据调整测试方案。这就是反馈闭环的价值。执行结果不只是最终的评分依据,也可以成为下一轮分析的输入。
在多轮探索中,智能体可能逐步缩小搜索范围,排除无效假设,并提高测试输入的有效性。不过,多次尝试也会带来额外的计算成本。重复生成相似输入、忽略错误信息,或者在错误方向上持续探索,都可能浪费资源。智能体的实际能力不仅取决于模型本身,还取决于它如何规划任务、利用工具、解释反馈,以及决定何时继续尝试、何时停止。
CyberGym 的研究结果也体现了尝试次数对部分任务成功率的影响。研究团队报告,在其特定实验设置下,领先智能体单次尝试的成功率约为 30%,将尝试次数增加到 30 次后,成功率约为 67%。这些数字反映的是特定评测条件下的表现,不应直接视为所有 AI 系统在真实软件中的漏洞发现率。
更重要的启示是:评估智能体时,不能只看底层模型的名称或参数规模,还需要考虑任务预算、工具权限、执行环境和尝试次数。
四、如何判断一个 PoC 真正复现了漏洞?
在漏洞研究中,生成测试程序只是开始,证明测试结果与目标漏洞之间存在明确关系,才是关键。CyberGym 的验证机制强调修复前后版本之间的差异。简单来说,生成的 PoC 应当能够在修复前的程序中触发目标问题,而在修复后的程序中不再触发相应问题。
为什么要比较两个版本?
假设一个程序存在越界访问漏洞,开发人员随后增加了长度检查。智能体生成的测试输入在修复前版本中触发崩溃,但在修复后版本中不再触发。这种前后差异能够为目标漏洞的复现提供有力证据。如果同一输入在修复后版本中仍然触发相同崩溃,就需要进一步调查:补丁是否没有彻底修复问题?测试是否触发了另一个缺陷?或者崩溃是否来自与目标漏洞无关的执行路径?
修复前后版本的对比虽然能够提高结果可信度,但也不是对所有安全问题都适用的万能证明。复杂程序可能存在其他缺陷,补丁也可能改变多个执行路径。因此,评测仍然需要明确任务定义和验证条件。
从 AI 安全系统设计的角度看,这里有一个值得重视的原则。模型负责提出分析假设,执行环境负责提供运行证据,独立验证机制负责判断结果是否满足要求。
可信的安全结论,不应只来自模型自己声称成功,而应来自能够被重复执行和复查的证据。
五、从漏洞复现到自主漏洞发现,还有多远?
CyberGym 展示了 AI 智能体在真实漏洞复现任务中的潜力,但漏洞复现与自主漏洞发现并不是同一件事。
CyberGym 的典型任务会提供漏洞描述和相应的目标代码。智能体需要根据这些线索,完成漏洞分析和复现。自主漏洞发现则可能要求 AI 从大量代码中寻找此前未知的缺陷,没有明确的漏洞位置,也没有现成的触发条件。
这两类任务的难度和评价方式存在明显差异。
同样,漏洞复现也不等于漏洞利用。生成一个 PoC 并触发程序崩溃,只能说明测试满足了相应的复现条件,并不意味着已经能够绕过安全机制、获取未授权权限,或者构建稳定的攻击链。
完整的软件安全研究还涉及根因分析、影响范围判断、补丁编写、回归测试和修复效果验证。这些环节相互关联,却不能仅凭一个漏洞复现分数就全部推断出来。
2026 年出现的 CyberGym-E2E 进一步将漏洞发现、验证和修复纳入端到端评测,体现了研究方向从单一漏洞复现向完整软件安全任务拓展的趋势。但端到端任务同样需要分别验证各个环节,不能把生成补丁直接视为修复成功。
对于真实企业环境,还存在额外挑战。代码库可能依赖特定编译器、第三方组件和运行配置;测试环境可能无法完整模拟生产系统;自动生成的补丁也可能影响原有功能。
因此,更合理的判断是:CyberGym 为衡量 AI 完成真实漏洞研究中的关键任务提供了一个可执行的起点,但它不能单独证明 AI 已经具备全面自主的漏洞研究或攻防能力。
六、CyberGym 对 AI 安全意味着什么?
CyberGym 最重要的价值,在于它改变了评价 AI 安全能力的方式。
过去,衡量模型的安全能力,往往依赖问答正确率、代码分析质量或漏洞识别结果。但在真实的软件安全工作中,分析结论只有转化为可执行的测试,并通过验证,才能真正形成可靠的技术证据。
CyberGym 将这一过程转化为可以重复执行和比较的评测任务,让研究人员能够观察智能体在代码分析、PoC 构造和执行验证中的表现。
这也使得 AI 安全研究的关注点逐渐从单一模型能力转向系统整体能力。
一个模型可能非常擅长解释代码,但不擅长利用工具;另一个模型可能推理能力相近,却能够通过更合理的任务规划和反馈机制完成更多测试任务。只有将这些能力放在具体执行环境中评估,才能更加准确地理解系统的实际表现。
对于未来的 AI 安全应用,这意味着安全自动化不能只关注模型是否能够生成专业答案,还需要关注权限控制、执行环境隔离、操作记录和独立验证。
当智能体能够访问代码仓库、编译环境和测试工具时,它的能力边界不仅由模型决定,也由系统授予的权限决定。合理的设计应当限制智能体只能在授权环境中开展任务,对高风险操作实施必要的控制,并确保重要结果能够追溯和复核。这并不是要求所有安全任务都必须由人工完成,而是要求自动化能力与验证机制同步建设。
七、从“会分析”到“能证明”,才是关键变化
CyberGym 最值得关注的地方,不是它让 AI 多学会了几个漏洞知识点,而是它将漏洞分析转化成了能够通过实际执行验证的任务。从理解代码、定位缺陷,到构造 PoC、分析执行反馈,再到比较修复前后的程序行为,整个过程展示了 AI 智能体如何把推理能力转化为实际行动。
当然,能够复现漏洞不等于能够发现所有未知漏洞,更不等于具备完整的自主攻防能力。但它提供了一个清晰的技术判断标准,AI 是否真正完成任务,不能只看它说了什么,还要看它做了什么,以及结果能否被验证。
当 AI 开始通过实际运行结果证明漏洞存在时,我们衡量它的标准,就不应再停留在“回答得有多好”,而应该进一步追问:它完成了什么任务,证据是否充分,结果能否重复,以及它是否清楚自己的能力边界。















































































