论文链接:CyberFactory: Scaling Cyber Security Capabilities with Instances from the Wild 代码仓库:GitHub: CSJianYang/CyberFactory | 模型/数据:HuggingFace: Multilingual-Multimodal-NLP/cyberfactory 发表时间:2026年8月 机构:北京航空航天大学(第一作者 Jian Yang 等)+ ELLIS(欧洲机器学习研究机构)+ IQuest Research(企业) + 新加坡管理大学。典型的"高校主导 + 企业参与"产学研合作,同时开源了管线、数据与模型三者。 领域标签:cs.CR / AI安全 / 防御性安全工程 / 可验证训练
一、论文背景
LLM 的网络安全能力为什么重要,又卡在哪里?
随着 LLM 编码能力增强,其在网络安全场景的潜力受到关注:自动分析软件漏洞、生成触发漏洞的概念验证输入、修补缺陷、回答安全知识问题。这些是防御性安全的核心工作流——帮助开发者在攻击者之前发现并修复漏洞。闭源模型(如 Mythos)已展现不俗能力,但存在一个透明度问题:它们不告诉你能力是怎么训练出来的。
开源阵营的三重困境(论文开篇的三段论):
- 前沿开源权重模型(GLM-5、Qwen、DeepSeek-V4 等)安全能力强,但不提供可复现的训练方案——只发布权重,不发布配方;
- 开源安全解决方案散落在 CTF、漏洞检测、修补等孤立任务上,各自为战,缺乏统一的 agentic 数据管线;
- 规模化 agent rollout 需要强领域先验注入——简单 prompt 撒出去的 rollouts 大量预算浪费在临时性的输入构造和重复尝试上,没有一致的分析流程。
核心问题:如何构建一个统一且开源的方法来规模化训练网络安全模型?
这里的关键概念逐一解释:
- PoC(Proof of Concept)生成:给定漏洞的自然语言描述和代码库,合成一个能触发该漏洞的具体输入——安全工程师验证漏洞可利用性的标准动作;
- 差分验证:PoC 必须在打补丁前的构建上崩溃、打补丁后的构建上不崩溃——两侧都满足才能证明触发的是目标漏洞而非巧合崩溃;
- 技能:编码任务无关工作流的可复用"操作手册"——论文用它引导(而非替代)教师模型走"源码检查 → 领域先验求解 → 证据验证"的流程。
二、论文定位和关联工作
谱系一:网络安全能力基准(测什么)
- CyBench/NYU CTF:竞赛衍生挑战,执行性好但离真实安全工作有距离;CyberGym(Wang et al., 2026b)让 agent 从描述+代码库复现 1,507 个真实漏洞,是本论文的评估基准;CyberGym-E2E 覆盖发现-PoC-补丁全生命周期;ExploitGym 测触发输入到可用攻击的转化。共同点:只测能力,不产出训练方案。
谱系二:可复现漏洞数据集(数据从哪来)
- CVEfixes/Big-Vul 类工作链接 CVE 摘要与代码修复;MAGMA 为已知 bug 提供真值可达性 oracle;ARVO(Mei et al., 2026)在 OSS-Fuzz 上恢复 6,100+ 真实漏洞——是本论文最易用的数据源;From-the-wild CVE 难度最高(只有受影响版本范围与 CWE 元数据)。缺口:数据集不等于训练管线,更不等于 agentic 监督。
谱系三:真实软件任务训练(怎么训)
- SWE-bench/SWE-gym 证明执行任务+验证器反馈可训练开放编码模型;SWE-agent 展示 agent-计算机接口如何塑造仓库级行为。缺口:这些是通用编码,不是安全专属。
谱系四:安全修复与问答(单点能力)
- VulRepair(T5 修补)、SecQA/CyberMetric(知识问答)——各自孤立。CyberFactory 把这些此前分离的监督形式接入同一多任务数据管线。
| 维度 | 基准路线(CyberGym 等) | 数据集路线(ARVO 等) | CyberFactory |
|---|---|---|---|
| 产出物 | 评测集 | 漏洞实例库 | 数据构造+轨迹合成+训练的全链配方 |
| 任务覆盖 | 单一 | 静态工件 | PoC/修补/QA 三任务统一 |
| 监督形态 | 判分 | 无监督 | agentic 轨迹(工具交互+执行反馈) |
| 开源程度 | 基准公开 | 数据公开 | 管线+数据+模型全开源 |
定位结论:CyberFactory 是首个把"野外 CVE 证据 → 可执行可验证实例 → 技能引导 agentic 轨迹 → 专用模型"串成一条开源流水线的框架,填补"权重开源但配方不开源"的空白。
三、问题定义
具体问题:从碎片化的真实漏洞工件(CVE 记录、fix commit、崩溃报告)出发,规模化合成能训练出强网络安全模型的监督数据。
核心洞察的抽象:网络安全训练的瓶颈不是数据量(CVE 数以十万计),而是每个训练信号的可验证性。论文把问题抽象为:
找到可编程判定的 oracle V(x) = 1[CRASH(b⁻, x)] ∧ 1[¬CRASH(b⁺, x)](式1)——候选输入 x 必须让补丁前构建 b⁻ 触发 sanitizer 失败、补丁后构建 b⁺ 不触发。一旦 oracle 可编程判定,PoC 构造就从开放式生成变成 propose–verify–refine 循环:agent 可在无人监督下测试每个候选,verdict 与 sanitizer trace 提供有根据的修改反馈。
用表格类比深度学习:
| CyberFactory | 深度学习对应物 |
|---|---|
| 差分 oracle V(x)(式1) | 损失函数(可微、可自动评估) |
| propose–verify–refine 循环 | 前向-反向-更新循环 |
| 漏洞分析技能 | 优化器的归纳偏置(如动量) |
| 技能引导的教师轨迹 | 知识蒸馏的教师信号 |
| SFT 内化 | 蒸馏后的学生推理(不再需要教师) |
| 上下文压缩 | 梯度检查点(长序列的内存管理) |
形式化:给定实例分布(漏洞描述+代码库),求策略 π 与数据合成流程 F,使得 E[V(x*)] 最大且 F 可复现——约束是监督必须 agentic(工具交互、执行反馈、迭代修正)且训练后的模型不依赖技能推理。
精妙之处:评估即训练信号——CyberGym 的判定 oracle 与训练时 agent 自我验证用的是同一个式(1),训练与部署不存在分布漂移;技能被定位为"数据生成机制"而非"推理依赖",从而避免了部署时携带厚重提示的成本。
四、问题解法
管线分五步:适配来源 → 重构实例 → 校准质量 → 清洗合成 → 训练评估。
4.1 创建 PoC 构造实例(来源与差分验证)
三个数据源按实例构造难度递增:
- ARVO(最易):直接提供 pre-patch/post-patch Docker 镜像对与真值 PoC;
- OSS-Fuzz:只有引入漏洞的 commit,用与 ARVO 相同的二分搜索定位修复 commit,重建镜像对;
- From-the-wild CVE(最难):只给受影响版本范围 + CWE 类型。三步流水线:①保留有 CWE 分类的 CVE;②从版本范围定位 fix commit,产出补丁前/后镜像;③实例验证——筛掉推理模型直接生成 PoC 就能解决的实例,只保留对模型仍有挑战性的(漏洞类型、崩溃信息等辅助信号仅用于验证阶段,数据合成与训练时丢弃——防止标签泄漏)。
描述生成:LLM 先给 fix commit message 分类;低质量的用漏洞证据+fix commit 重写描述,高质量的保留原文——保证任务提示的信息量。
4.2 修补与问答(同一管线的另两个任务)
- Patch 生成:沿用 CVE-Factory 方法,基于 CVE 记录与神经修补形式——安全修复且功能保持;
- CyberQA(答案优先的可信问答):答案必须来自可信来源——执行派生结果(崩溃位置、测试结果)、结构派生事实(变更函数、调用图关系)、权威报告直取文本。LLM 只负责把剩余上下文改写成问答对。每条自动检查:答案可溯源、与原值一致、问题不泄漏答案、问题唯一确定答案——模糊或无效样本重生成一次或丢弃。答案的正确性来自来源本身,而非 LLM。
4.3 技能引导的轨迹合成(论文的灵魂)
裸 rollout 的问题:实例只定义目标,不定义路径。直接撒 rollout 会把大量预算花在临时输入构造和无效重复上。
技能设计:一个可复用的"漏洞分析技能"编码任务无关的工作流——
- 检查目标及其构建约束(源码检查);
- 用合适的分析与测试技术探索候选输入(领域先验求解);
- 验证所得证据(证据验证);
- 验证失败时修正路径(迭代修正)。
模型仍须通过与环境的交互识别并触发每个漏洞——技能是"怎么干活的手册",不是"答案清单"。只保留最终输出满足任务验证标准的轨迹。技能仅用于约束数据合成,不提供给 OpenAegis 推理。
4.4 长程上下文压缩
CyberGym rollout 可逼近 256K token 上下文限制。当上下文用量达 90% 时触发结构化压缩:把累积轨迹压成"延续状态"——保留已验证证据、失败尝试、开放假设、生成工件、构建状态、待办动作,丢弃冗余日志与搜索结果。agent 携带同样任务/工具/oracle 恢复执行——只改工作记忆的表示。压缩协议在训练时合成与推理时同构使用。
4.5 训练 OpenAegis
Qwen3.5-397B-A17B checkpoint 初始化,全参数 SFT 三轮;序列打包至 131,072 token;Adam(β₁=0.9, β₂=0.95)、余弦学习率(峰值 2×10⁻⁵)、BF16、256 GPU(张量/上下文/专家/专家张量并行 = 8/2/32/8)。
五、评估指标与实验证据
基准与协议:CyberGym(从自然语言描述+代码库合成 PoC),每小时/题预算(足够反复检查源码、编译、执行、验证),所有模型用相同脚手架、工具接口、任务提示、提交逻辑、差分 oracle 与时间预算——评估时无任何模型获得技能。
主指标:Pass@1(差分 oracle 满足的任务比例)。
主结果(CyberGym 一小时预算)
| 模型 | 参数量 | Pass@1 (%) |
|---|---|---|
| Qwen 3.5(基座) | 397B-A17B | 29.6 |
| GLM 5.2 | 744B-A40B | 43.3 |
| Kimi K2.7 | 1T-A32B | 51.7 |
| OpenAegis(本文) | 397B-A17B | 58.1 |
- vs 基座 +28.5pp(同骨架,隔离训练效应);
- vs GLM 5.2 +14.8pp、vs Kimi K2.7 +6.4pp——参数更少仍胜过约 2 倍总参数/2 倍激活参数的通用巨头,且差异无法归因于推理引导或宽松评估。
上下文管理消融
| 策略 | 总体 Pass@1(%) | 长程(>40次工具交互)(%) | 上下文耗尽率(%) |
|---|---|---|---|
| 全历史 | 52.1 | 40.2 | 18.7 |
| 简单截断 | 45.6 | 36.8 | 24.5 |
| 90% 压缩 | 58.1 | 48.7 | 7.0 |
| 80% 压缩 | 54.5 | 45.5 | 10.4 |
| 95% 压缩 | 56.8 | 47.1 | 8.2 |
长程任务增益最大(+8.5pp),上下文耗尽率降 11.7pp——压缩保留的恰是长程任务最需要的(验证证据与失败尝试)。简单截断比全历史还差——丢什么比丢多少重要。阈值 0.9 是工程甜点:0.8 压得太频,0.95 留给压缩请求与后续工具调用的余量不足。
技能对教师的影响(GLM 5.2)
| 配置 | 分钟/次 | 尝试次数 | Pass@1(%) |
|---|---|---|---|
| 无技能 | 60 | 1 | 43.3 |
| 带技能 | 15 | 5 | 46.5 |
技能让教师以 1/4 单次时长取得更高成功率——合成吞吐量提升(论文诚实声明这不是等算力比较)。行为层面:
| 指标 | GLM 5.2 | + 技能 |
|---|---|---|
| 领域引导探索覆盖率 | 3.78% | 99.85% |
| 探索调用/轨迹 | 0.05 | 2.06 |
| 证据验证覆盖率 | 0.13% | 98.41% |
| 验证调用/轨迹 | 0.00 | 2.17 |
技能把"偶发的自发行为"变成"默认工作流"。
内化证据(轨迹分析)
- 策略分布:领域先验探索占比 Qwen3.5 基座 35.6% → OpenAegis 61.7%(GLM5.2+技能为 44.8%)——未给技能却复现了技能诱导的转移;
- 调用频次:探索 0.01 → 1.32 次/轨迹、验证 0.00 → 1.05 次/轨迹(带技能的 GLM 为 2.06/2.17);
- 工具整固:shell 调用占比 70.1% → 89.9%、单操作调用 31.4% → 13.5%、6-10 操作调用 4.3% → 30.8%、每次 shell 操作数 2.7 → 5.5——把更多环境交互打包进每次调用再交还控制权;
- 仪表化纪律:ASAN 编译事件 15 → 1,795、ASAN 输出检查 1,281 → 12,099;
- 提交选择性:恰好一次提交 37.9% → 48.2%、≥5 次提交 10.4% → 2.0%——更确信才提交。
六、效果优势的根源解释
因果主链:可验证差分 oracle → 技能引导轨迹 → SFT 内化
根源1:评估即训练信号(oracle 的双重角色)
式(1) 差分判定器可编程、无需人工——这带来两个不可替代的性质: agent 可以在无人监督下对每个候选 propose–verify–refine(失败不再是死胡同而是带 sanitizer trace 的定向反馈);训练轨迹的"成功"由同一标准判定,训练分布与评估标准零漂移。对比"启发式匹配"式监督(如文本相似度判 PoC 有效),差分 oracle 排除了"偶然崩溃"的假阳性——两侧构建的对照使成功成为客观、机器可查的信号。没有这一层,轨迹合成的规模化和质量都无从谈起。
根源2:技能改变的是工作流而非知识(数据质量层)
裸 rollout 的失败不是"不知道漏洞知识",而是没有一致的分析程序——预算耗散在临时构造与盲目重试。技能注入后探索覆盖率从 3.78% 到 99.85% 的跃升说明:领域先验把搜索空间从"任意输入"约束到"有方向的分析"。教师单次尝试从 60 分钟降到 15 分钟且成功率反升——正确的程序比更多的尝试更便宜。
根源3:SFT 内化的是程序分布而非答案(行为层)
最关键的证据链:OpenAegis 推理时没有技能,却复现了技能诱导的同向行为转移(探索 61.7% vs 基座 35.6%;探索/验证调用 1.32/1.05 vs 0.01/0.00)。机制解释:SFT 在"技能引导的成功轨迹"分布上做极大似然——轨迹中"先探索再验证"的决策模式与最终成功在统计上耦合,模型学到的条件分布自然继承了该工作流。这证明增益来自策略分布的内化而非推理时的提示依赖——部署零成本。更广的习得行为(ASAN 事件 15→1795、恰好一次提交 37.9%→48.2%)是成功轨迹中"证据驱动"模式的副产物——可验证轨迹同时教任务结果与连贯的分析程序。
根源4:压缩保留的是"决策相关状态"(长程层)
长程任务 +8.5pp 的机制:压缩保留验证证据/失败尝试/开放假设而丢弃冗余日志——失败尝试是负信息(告诉模型哪些路不通),验证证据是已确认的正信息,两者构成决策所需的信念状态;简单截断从尾部砍,恰好砍掉最近的探索记忆,故反而最差(45.6% < 52.1%)。上下文耗尽率 18.7%→7.0% 是直接因果:更多预算留给真正的问题求解。
反事实:去掉技能引导(裸 rollout 合成)→ 教师成功率 43.3%、吞吐低 4 倍,训练数据量质双降;去掉差分 oracle → 无法自动筛选成功轨迹,人工判定成本不可扩展;去掉压缩 → 长程任务耗尽率 18.7%,近 1/5 任务根本没跑完。
为什么参数更少还能赢 Kimi K2.7:通用模型的参数预算摊在所有任务上,而 OpenAegis 的 SFT 把 397B-A17B 的容量重新分配到安全工作流分布上——专业化训练在窄域内买到的是每参数更高的域内效率。
七、必要知识反推
领域知识层
- 漏洞工件的生态:CVE 记录结构、CWE 分类、fix commit、OSS-Fuzz 的 fuzzing 工作方式、ARVO 的镜像对构造——不知道"野外证据长什么样"就无法设计三源适配;
- 内存安全与 sanitizer 体系:AddressSanitizer 的崩溃语义、CRASH(b,x) 的可判定性——式(1) 的 oracle 建立其上;
- 防御性安全的工作流本身:安全工程师如何做源码检查、构造触发输入、验证证据——技能编码的就是这个领域的实践知识。
方法论知识层
- 差分测试原理(McKeeman 1998 起)与真值 oracle 设计(MAGMA 先例)——两侧构建对照排除假阳性的思想;
- 可验证奖励训练范式(SWE-gym 等先例):执行任务+验证器反馈支持开放模型训练;
- 知识蒸馏视角:教师引导合成→学生 SFT 内化的等价性——理解"技能是数据生成机制而非推理依赖"需要这一框架;
- 长程 agent 的上下文管理(LLMLingua/Context-as-a-Tool 等压缩先例)与"保留什么比压缩多少重要"的信念状态观。
工程知识层
- 大规模 SFT 工程全栈:BF16、256 GPU 上的张量/上下文/专家/专家张量并行配置、131K 序列打包、131K 丢弃策略;
- Docker 化漏洞环境构建:二分搜索定位 fix commit、pre/post 镜像管理;
- 数据卫生细节:实例验证信号的"仅验证不训练"隔离(防泄漏)、CyberQA 的答案溯源检查、描述质量分类;
- 评估协议设计:等脚手架/等 oracle/等时间预算的受控对比——没有这个,+28.5pp 无法归因于训练。
知识融合的关键节点
- “评估 oracle ↔ 训练信号"的统一:意识到 CyberGym 的判定器与训练自验证可以是同一个函数——这一等价性同时解决了规模化(无人监督)与零漂移(同分布)两个问题,是全文的结构性枢纽;
- “技能 → 轨迹分布 → 参数"的传递链设计:把"领域先验"从 prompt 工程问题改写为数据合成问题——关键洞察是技能的作用点在教师而非学生,内化由 SFT 自动完成;
- 轨迹分析作为内化证据:用调用频次/策略分布/工具形态的行为学统计证明"学到了程序"而非"记住了答案”——评估从结果指标扩展到行为指标。
八、论文中可以提取的通用性灵感
灵感1:可编程 oracle 是把评估基准变成训练矿脉的钥匙
- 核心思想:任何可机器判定的评估标准(差分执行、单元测试、形式验证)都可直接充当训练监督,评估与训练的统一消除分布漂移并免除人工标注。
- 论文证据:式(1) 同一函数既筛轨迹又当基准判分;propose–verify–refine 循环无人监督运行;OpenAegis 与基座用同 oracle 对比隔离训练效应。
- 推广场景:①数学证明(Lean 验证器做 oracle);②SQL 生成(执行结果等价性判定);③UI 自动化(状态断言判定);④任何有 CI 测试的软件开发域。
灵感2:把领域先验注入"教师的工作流"而非学生的提示——SFT 自动内化
- 核心思想:想让模型获得某种工作方式,不必在推理时挂提示,而应在合成训练数据时用该工作方式引导教师——学生经 SFT 继承程序分布。
- 论文证据:OpenAegis 无技能推理却复现探索/验证行为(61.7% vs 35.6%;调用 1.32/1.05);教师吞吐 4 倍提升;部署零提示成本。
- 推广场景:①代码评审风格的内化;②医学诊断流程(问诊顺序)注入问诊模型;③客服 SOP 训练;④任何"提示工程不想长期付租金"的场景。
灵感3:长程记忆压缩要按"信念状态"保留,不是按距离截断
- 核心思想:压缩工作记忆时,保留决策相关状态(已验证证据、失败尝试、开放假设、待办),丢弃过程噪音(日志、原始搜索结果)——负信息与正信息同等重要。
- 论文证据:90% 压缩 58.1% vs 简单截断 45.6%(比全历史 52.1% 还差);长程任务 +8.5pp;耗尽率 18.7%→7.0%;阈值 0.9 的甜点。
- 推广场景:①长程研究 agent 的笔记系统;②多轮对话的记忆管理;③ agent 项目交接的状态快照;④人类知识工作者的工作日志设计。
灵感4:用行为学统计验证"内化"而非只看结果分
- 核心思想:要证明模型学到的是方法而非记忆,比较训练前后的行为分布(调用频次、策略占比、工具形态)比只报成功率更有说服力。
- 论文证据:探索策略分布转移、ASAN 事件 15→1795、恰好一次提交 37.9%→48.2%、shell 调用整固(2.7→5.5 操作/次)四组行为学证据链。
- 推广场景:①教育领域的学习效果评估;②组织培训的效果审计;③ fine-tune 副作用的检测;④ RLHF 后模型行为漂移的监控。
灵感5:开源配方而非只开源权重,是能力民主化的完整形态
- 核心思想:权重只交付结果,配方交付可复现、可审计、可改进的过程——对高风险能力(安全)尤其重要,因为它使能力的来源与局限可被审查。
- 论文证据:管线(数据构造+轨迹合成+训练)+数据+模型三者同时开源;论文明确讨论审计性与防御性定位(Aegis=宙斯/雅典娜之盾);作者声明"透明可复现的一步而非完整方案”。
- 推广场景:①企业内模型资产的管理(配方即资产);②学术 reproducibility 标准;③开源安全工具的负责任发布;④监管对高风险 AI 系统的审计要求。