CyberForge:代码库级漏洞注入与差分PoV验证,开源Agent修复率提升14.7分

CyberForge: Verified Vulnerability Injection at Repository Level for Cybersecurity Agent Training

论文原文 ↗ 论文发布 解读发布 解读:AI前沿分享

CyberForge:代码库级漏洞注入与差分PoV验证,开源Agent修复率提升14.7分 论文图示

在网络安全的大模型对抗演化中,攻守双方的天平正发生令人担忧的倾斜。攻击者往往只需要找到软件复杂防御面上的单一破绽,便能发起破坏性的有效载荷;而防御者面对高速膨胀的代码资产,必须穷尽一切盲区、持续且准确地完成全量修复。近期的行业动态已经印证了这种不平衡:无论是 Anthropic 披露其自动化智能体在操作系统与浏览器中挖掘出数千个零日漏洞,还是 OpenAI 发现评估中的大模型能够自主串联零日漏洞并攻入生产基础设施,通用智能体展示出的自主利用能力都在急速攀升。

ArXiv URL:https://arxiv.org/abs/2608.06471v1

然而,一旦将评估场景切换至要求更高的代码库级防御基准——即不仅要在庞大工程中精确定位漏洞,还要编写出能复现利用的漏洞概念验证(Proof of Vulnerability, PoV)并完成可靠补丁修复时,即便是最前沿的防御模型也会显露疲态。制约防御型智能体进化的核心瓶颈,不在于模型参数规模,而在于极其匮乏的带可执行验证环境的真实项目级安全训练数据

来自法国国家科学研究中心(CNRS)、美国国家标准与技术研究院(NIST)、马里兰大学帕克分校与格勒诺布尔-阿尔卑斯大学的研究团队推出了 CyberForge。该框架改变了过去依赖公开披露 CVE 逆向清洗的被动局面,通过主动在真实 C/C++ 项目中进行代码库级别的漏洞注入与端到端差分动态验证,构建出可运行、可复现的高质量安全训练集。

该工作在 80 个开源项目中自动化生成了包含 1034 个通过严格差分验证的漏洞语料库,覆盖 63 类常见缺陷。基于这些语料提炼的轨迹微调开源小模型后,在权威安全基准 SEC-bench 上的漏洞补丁修复成功率获得了 $+3.3$ 到 $+14.7$ 个百分点的全面提升;其中 31B 规模的学生模型更是取得了 72.7% 的修复率,逼近其强大的 GPT-5.4-mini 导师(74.0%)。这一框架不仅破解了安全数据合成的动态验证困局,也为开源防御型智能体的自主演进铺平了道路。

CyberForge 总体架构图

安全数据合成的深水区:为什么代码缺陷不能照搬通用软件工程?

在通用软件工程领域,利用开源代码库构建智能体训练环境已经相对成熟。例如 SWE-bench 等基准通过搜集 GitHub 上的 Pull Request,利用单元测试作为天然的判定依据:缺陷版本至少跑挂一个测试,而修复补丁应用后所有测试全部变绿。这种以测试用例为核心的二元闭环,催生了大量高水平的软件工程 Agent。

但在安全漏洞领域,这种逻辑完全失效。安全缺陷与普通功能 Bug 存在本质差异:

以往针对安全场景的数据生成大多止步于函数级别的代码片段重写。诸如 VGX 或 AVIATOR 等工作,虽然能通过语法树替换合成漏洞,但它们脱离了项目完整的构建依赖与调用上下文,且只能依赖静态规则或文本分类器做近似过滤。这类函数级数据训练出来的模型,一旦放入包含复杂宏定义、长调用链路和动态内存管理的大型工程中,漏洞定位和修复能力往往会出现断崖式下跌。

另一方面,依靠人工挖掘历史披露的 CVE 记录,其扩展速率又受到安全社区实际披露周期的物理限制,且环境重建的成功率极低。CyberForge 采用的思路跳出了“历史挖掘”的局限,转向“受控主动注入”,其核心在于如何保证注入漏洞的真实度与可验证性。

软硬兼施的双流水线注入设计

为了在真实代码库中精准埋入漏洞,CyberForge 选择了被工业界广泛采用的开源模糊测试基础设施 OSS-Fuzz。该平台自带高度标准化的 Docker 镜像、编译链路、AddressSanitizer(ASAN)与 UndefinedBehaviorSanitizer(UBSAN)插桩配置,以及为底层核心函数定制的 libFuzzer Harness。这让跨项目的自动化无干预构建成为可能。

在环境准入阶段,CyberForge 建立了严苛的质量门槛:候选项目必须能够在无人值守条件下顺利编译,原始无修改代码上的所有测试必须连续 5 次运行达到 100% 的通过率,彻底剔除存在偶发性失败的不稳定项目。在完成环境锁定的 100 个合格项目中,最终有 80 个成功落地了至少一个通过全流程检验的合成漏洞。针对不同深度的代码区域,CyberForge 设计了两套互补的注入流水线。

模糊测试引导的精准注入(Fuzzer-Guided Pipeline)

这一流水线专攻现有模糊测试 Harness 能够直接触达的代码区域。借助 Harness 现成的输入解析通道,系统可以显著降低 PoV 构建的试错开销。

整个过程首先对 OSS-Fuzz 的静态与动态元数据进行解析,结合 Fuzz Introspector 报告,绘制出所有可由既有 Harness 触达的函数图谱。随后,算法从两个维度对这些函数打分:其一是考察函数自身结构特征的功能得分(如是否处于协议解析入口、缓冲区写入、编解码转换等安全敏感区域);其二是评估注入故障能否被浅层测试输入触发的可触发性得分(考量安全防护检查与下游受保护操作之间的距离、中间阻断条件的密集程度等)。

得分最高的候选位置会交由代码修改 Agent。Agent 会接收到该代码段的输入格式上下文(例如某种特定字体解析格式、压缩包头结构等)以及精确的 CWE 弱化约束。它的任务并非胡乱破坏代码,而是在保持单文件修改、不新增冗余分支的前提下,对现有安全边界进行极简修改——例如微调比较操作符、制造单字节越界或略去特定长度校验。修改后的代码必须通过原始单元测试,随后 Agent 生成一段确定性的单次执行 PoV 脚本,并结合后验的定向 libFuzzer 变异运行,共同确保注入缺陷能够被稳定激活。

专家协同的上下文智能体注入(Agentic In-Context Pipeline)

对于那些现有 Harness 覆盖盲区中的核心代码,CyberForge 启用了第二套完全基于自主智能体与静态分析的深度注入流程。这一流水线通过两种机制挖掘深层注入位点:

一方面,系统采用结构与语义混合检索机制,利用抽象语法树(AST)节点序列 $n$-gram 与代码密集向量嵌入,将目标工程与已知的历史 CVE 代码库进行双向拓扑匹配,检索出真实历史漏洞的“结构镜像”,为模型提供上下文注入模板。另一方面,系统引入由规划者与多类别缺陷专家组成的 Agent 团队,利用 CodeQL 追踪跨过程调用链路与数据流污点路径。

在确认从外部输入到达目标危险槽点的可达路径后,注入 Agent 完成缺陷嵌入,并利用 ASAN/UBSAN 产生的精确错误回溯、内存泄漏日志与执行侧效应,闭环迭代生成针对性的 PoV 利用脚本。如果在既定轮次内无法形成自洽的差分触发,流程将自动回滚重试。

差分验证预言机:从“看似合理”到“真实可用”

在自动化合成代码领域,“生成看起来像漏洞的代码”很容易,但“生成能够通过动态执行验证的真实漏洞”却极其严苛。CyberForge 的核心技术壁垒,在于两套流水线最终汇总接入的共享差分验证预言机(Differential PoV Oracle)

这一预言机设置了双重不可逾越的验收标准:

  1. 潜伏性检验(Condition 1):包含注入漏洞的代码库在完整编译后,必须能够毫无阻碍地通过该项目原生的全部单元测试套件。这保证了漏洞不会引起非预期的破坏,契合真实软硬件产品中未暴露缺陷的生存状态。

  2. 唯一有效性检验(Condition 2):对应的 PoV 脚本在输入相同配置的情况下,在原始安全构建上必须完全正常退出且无任何警告,但在注入构建上必须精准触发预期的 Sanitizer 致命报错或崩溃。

这种严苛的校验逻辑排除了大量“假性漏洞”。在 Pipeline 2 的消融实验中,如果仅使用朴素的单次 Agent 生成,虽然有 68.2% 的修改版本能够顺利编译并通过原有单元测试,但最终在差分验证阶段的通过率直接为零——因为模型写出的利用脚本要么根本无法触发深层路径,要么触发了与注入位点完全无关的系统偶发错误。而在引入代码结构检索、CodeQL 污点流感知与针对性重试循环后,看似合理的注入通过率微升至 77.6%,但经过差分验证的最终可用率从 0% 跃升到了 7.5%。这表明在软件安全场景中,单纯依靠语言模型的大脑臆测毫无胜算,紧密挂接底层静态分析与动态运行环境的反馈外脑,才是获得有效资产的关键。

最终,CyberForge 在总计 16172 次注入尝试中,仅保留了 1034 个完全通过验证的高质量漏洞实例。针对编辑局部性的分析表明,这些注入修改在函数层级的位置特征分布,与真实 CVE 修复补丁在统计噪声阈值内高度吻合,证明了合成数据的形态高度接近真实的软件工程缺陷。

轨迹收集与多尺度模型蒸馏

获得高质量可执行漏洞后,研究人员逆转了任务视角:以注入的代码库作为漏洞起点,以差分 PoV 作为验证目标,训练防御型智能体在完整代码工程中自主排查并生成修复补丁。

为了保证训练过程的严谨性,智能体在由 OSS-Fuzz 容器包装的隔离环境中运行,彻底切断外网连接,并且严格剥离任何关于参考答案补丁的提示信息。模型必须完全依赖项目代码、构建日志与 PoV 触发的崩溃堆栈进行环境交互。只有当智能体生成的补丁能够让整个项目重新编译通过、原单元测试全绿、且此前能够触发崩溃的 PoV 完全失效时,其生成的交互轨迹才被视作有效数据收录。

基于这套机制,团队分别采用业界顶尖的闭源模型 GPT-5.4-mini 与开源模型 Gemma 4 31B 作为导师,采集了通过差分验证的优质轨迹,随后对三个不同尺度的开源模型(Gemma 4 31B、12B 与轻量级端侧模型 E4B)进行了参数高效微调(LoRA, $r=32, \alpha=64$)。

在由 24 个真实项目构成的真实漏洞修复基准 SEC-bench 上,微调展现了立竿见影的收益。不论是针对哪种学生参数规模、无论由哪位导师监督,所有 6 组对比实验全部呈现显著正增长,补丁修复率的绝对提升幅度在 $+3.3$ 到 $+14.7$ 个百分点之间。

最亮眼的突破出现在 31B 学生模型上:在 GPT-5.4-mini 的轨迹蒸馏下,Gemma 4 31B 的 SEC-bench 修复成功率从基础版本的 58.0% 增长至 72.7%,已经非常接近导师自身取得的 74.0% 成绩。即便在 Gemma 4 31B 自我蒸馏(Self-Distillation)的设定下,该模型也依靠清洗后的高质量可信轨迹,将自身基准成绩拉升到了 68.0%,印证了高质量可复现验证轨迹对模型推理潜力的唤醒作用。

更具实用价值的是跨语言的零样本泛化能力。CyberForge 的注入语料库 100% 来源于 C/C++ 项目,但在完全由 Go、JavaScript 和 Python 构成的跨语言修复基准 PatchEval(包含 230 个测试用例)上,所有微调配置同样全部取得了性能增长。31B 规模的学生模型在非自身训练语言的测试集上,甚至超越了 GPT-5.4-mini 导师的原始得分。这表明在项目级环境中学会的“根据崩溃堆栈定位故障、局部推导安全边界、动态执行验证”的防御元能力,并不受特定编程语言语法的桎梏。

智能体行为模式的深层重构

模型得分的跃升究竟来自何处?通过对智能体在交互窗口内的动作分布进行追踪,研究人员揭示了一个极具启发性的机制。

在代码修复任务中,智能体的行为可以被粗略分为三类:探索检索(Explore)、代码编辑(Edit)与运行验证(Verify)。一次有效的修复尝试,必须构成一个闭环:修改代码之后必须紧跟编译验证或运行 PoV。SEC-bench 的总体得分可以精确解构为两个独立维度的乘积:

\[\mathrm{score} = c \cdot q_{v} + (1 - c) \cdot q_{u}\]

其中 $c$ 代表工作流覆盖率(Workflow Coverage),即智能体在遇到漏洞时,真正走通“编辑后立即验证”(Edit $\rightarrow$ Verify)行为闭环的概率;$q_{v}$ 是成功进入该闭环后的实际解决概率,而 $q_{u}$ 则是未进入完整闭环下的偶然解决概率。

数据分析显示,CyberForge 的微调精准修复了不同尺度模型各自最薄弱的决策信道:

对于 12B 规模的底座模型,其最致命的软肋在于缺乏验证意识。在未微调状态下,12B 模型的工作流覆盖率 $c$ 仅有凄惨的 20.7%,中位数显示其在多数情况下甚至根本不发起任何验证命令。它只是盲目地向代码库抛出密集的修改指令(平均每个任务高达 14 次),一旦改坏便引发死循环。经过 CyberForge 轨迹训练后,12B 模型的覆盖率 $c$ 发生骤增,从 20.7% 跃升到了 82.7%,模型迅速习得了“修改后必须检验”的基本工程纪律,无效格式错误与死循环大幅收敛。

而在 31B 规模的底座模型上,情况完全不同。作为具备成熟代码理解能力的大模型,其原始工作流覆盖率本身就已经处于 92.7% 的高位,几乎不会出现盲目修改不验证的问题。微调带给 31B 模型的,是其深度推演能力 $q_{v}$ 的实质性跃升——在闭环内的修复成功率绝对提高了 10.1 个百分点。

此外,轨迹蒸馏还展现了微妙的行为指纹迁移。GPT-5.4-mini 具备一种高效的专家习惯:在单轮 Shell 命令中通过管道或脚本将代码修改与验证命令合并执行(批处理),其发生频次高达 51%;而原始开源底座模型的批处理比例仅在 7% 到 11% 之间。接受其微调监督后,12B 学生的批处理行为比例迅速攀升至 55%,31B 学生也提升至 22%。这一现象说明,智能体不仅在模仿导师输出的代码文本,更在系统性地吸收导师在交互探索空间中的行为节奏与求解拓扑。

迈向可持续迭代的防御体系

CyberForge 展示了一种极具延展性的安全研发范式:在攻防博弈日趋自动化的大模型时代,防御方不能再寄希望于靠人类安全专家手动整理披露样本来追赶模型的演化速度。

通过将模糊测试生态沉淀的基础设施、动静态程序分析工具与自主生成 Agent 融为一体,CyberForge 将漏洞数据的供给体系从“被动开采”变成了“可控工业化制造”。它构建的 1034 个高质量代码库级漏洞,不仅成功让 31B 级别的开源中等规模模型在实际修复能力上平视顶尖商用模型,更重要的是,它向社区证明了通过环境反馈与差分约束生成可信数据的可行性。

当防御型智能体拥有了取之不尽、可自动编译、且具备严格安全差分判定的训练数据源时,攻守不对称的天平,或许终于有机会被重新扳回。