CVE-Factory 是一个多智能体(Multi-Agent)系统,用于实现完全自动化的端到端 CVE 复现。给定 CVE 记录后,系统会自动研究详细信息、生成测试用例、构建 Docker 环境,并验证每个漏洞既可利用也可被修补。该流水线无需人工干预即可将 CVE 元数据转换为可复现、可测试的漏洞环境。
⚠️ 安全警告:本系统会构建并运行包含易受攻击软件的 Docker 容器。你必须使用 Docker-in-Docker(DinD)环境 将 CVE 容器与宿主机系统隔离。切勿直接在宿主机的 Docker 守护进程上运行 CVE-Factory。
输入 CVE 记录,即可获得完整的 CVE 复现环境。遵循 Terminal Bench 标准,每个生成的任务包包括:
Dockerfile 和 docker-compose.yaml,承载易受攻击的应用task.yaml,包含结构化指令描述(不含 CVE 标识)solution.sh,用于修补漏洞run-tests.sh,用于启动评估专为安全任务设计,我们的测试逻辑分为:
无需人工研究、无需人工编码——从原始 CVE 元数据到经过验证的复现,全程全自动。
生成的工件结构:
CVE-2025-XXXX/
├── task.yaml # Structured Task Metadata
├── Dockerfile # Vulnerable Environment Setup
├── docker-compose.yaml # Service Orchestration
├── task-deps/
├── solution.sh # Verified Patch
└── test/
├── test_func.py # Functionality Check
├── test_vuln.py # Vulnerability Exploit Check
└── run-tests.sh # One-click Evaluation Script
在对 2025 年的 554 个 CVE 进行的大规模评估中,CVE-Factory 成功复现了 499 个案例,成功率达 90.1%。此外,对 471 个成功案例的严格专家审查确认,312 个任务(66.2%) 被完全且准确地复现!
与使用相同初始信息的安全专家相比,我们的系统在环境和解决方案构建方面达到了 约 95% 的验证通过率——展现了自动化漏洞复现方面的专家级能力。
📂 开放数据集:我们在
cve_tasks/目录中发布了 1,000+ 个 CVE 任务环境:
trainset/(887 个任务):用于训练 Abacus-cve。Hugging Face 🤗 上的 4,000+ 条蒸馏智能体轨迹是使用 Claude Opus 4.5 和 Mini SWE-Agent 框架从这些任务生成的。trainset-2/:额外的相对更简单的任务。未包含在训练数据中。- 新增:Hugging Face 上的
cve_tasks_3k_compressed提供了额外的 3,181 个任务(由于大小限制为压缩归档),并带有 18.8k 条智能体轨迹,用于训练 Abacus-cve-v1.1。
在 CVE-Factory 轨迹上进行微调,可在各个安全基准上带来显著提升。Qwen3-32B 在 LiveCVEBench 上实现了约 6.8 倍提升(5.29% → 35.79%),在 PatchEval 上约 4.2 倍提升(5.66% → 23.58%),甚至在 Terminal-Bench 上也显示出显著提升(12.50% → 28.75%)——展现了强大的跨任务泛化能力。
仅凭 4k 条轨迹,Abacus-cve(32B)就超越了 Qwen3-Coder-480B、MiniMax-M2 和 Claude Sonnet 4,在安全任务上接近 Claude Sonnet 4.5 的水平。
新增:基于 18.8k 条轨迹训练的 Abacus-cve-v1.1 取得了进一步提升(LiveCVEBench 上 +3.83,PatchEval 上 +2.38)。扩展的训练数据请参见 cve_train_v1.1。
与僵化的检索工作流或简单的工具调用循环不同,每个智能体都作为一个完整的 Claude Code 会话运行。我们不会硬编码步骤;相反,我们通过其角色(如 Analyzer)、目标(如“构建易受攻击的环境”)、资源(如对特定文档的访问权限)和验证方法(如“必须通过 check_env_ready”)来定义每个智能体。智能体像人类开发者一样行事:它们在其指定的工作空间内自主探索文件、调试错误、阅读日志并迭代解决方案。
CVE-Factory 旨在同时处理多个 CVE。每个 CVE 流水线均异步执行,这意味着较快的任务无需等待较慢的任务即可进入后续阶段。系统采用异步架构,允许您为每种特定智能体类型设置独立的并发限制。例如,您可以对轻量级研究任务(Analyzer)设置较高限制,对资源密集型 Docker 任务(Builder)设置较低限制。这种灵活性可在最大化处理速度的同时防止系统过载。阶段级超时确保挂起的进程不会阻塞处理队列。
该流水线由 6 个独立阶段组成,可单独运行或组合运行。
**阶段 1(Analyzer → Generator)**执行 CVE 研究并生成工件,无需 Docker。
工具要求:Analyzer 智能体依赖
web_search和web_fetch工具。如果您使用第三方 API 提供商,必须确保其支持这些特定的工具能力。
阶段 2(Builder → Validator → Solver → Checker)处理 Docker 环境构建与验证。从环境构建到整体验证,无需任何与网络相关的工具,因为智能体仅与本地文件系统和 Docker 守护进程交互。
每个阶段也可以单独调用,从而能够对复现过程进行细粒度控制,并方便地对特定阶段进行调试。
系统由 6 个阶段组成:
# Start the isolated DinD environment (required for security)
cd dev-env
docker compose up -d
# Enter the development container
docker compose exec cve-factory bash
详见 dev-env/README.md 了解 DinD 的详细配置与故障排查。
将您要复现的 CVE 放入 original_cves_md/ 目录。文件名必须采用 CVE-YYYY-NNNNN.md 格式并包含相关信息。我们建议使用 LiveCVEBench-Preview 中的 cve-sampler 来准备这些输入。
# Inside the DinD development container
cd /workspace
pip install -r requirements.txt
# Verify CVE input files are ready
ls original_cves_md/
# Set API key or use Claude subscription
export ANTHROPIC_API_KEY="your-key"
export ANTHROPIC_BASE_URL="your-url"
# Process a specific CVE
python -m orchestrator.run --cve CVE-2025-XXXXX
# Or process all CVEs in the input directory
python -m orchestrator.run
# Run phases separately
python -m orchestrator.run --phase1 --cve CVE-2025-XXXXX # Analyzer + Generator only (no Docker needed)
python -m orchestrator.run --phase2 --cve CVE-2025-XXXXX # Builder → Checker (requires Docker)
CVE 复现成功的条件为:
config.yaml 中用于优化运行的关键设置:
# Example config.yaml tweak
orchestrator:
max_concurrent_cves: 3 # Lower concurrency for stability
agents:
limits:
builder: 2 # Prevent Docker from consuming all resources
我们正在积极开发 OneFactory,这是一个 统一合成框架,将 Terminal、SWE 和 Security(CVE) 能力整合为全面的 三合一智能体数据流水线。
基于 CVE-Factory,我们开发了 LiveCVEBench,并发布了基准的第一版、训练数据 和 Abacus-cve 模型。我们将继续扩展基准并优化我们的 SFT 和 RL 训练方案。敬请期待更多更新!
我们正在持续扩展和更新这个项目。如果您有任何建议,或者希望加入/为这个项目做出贡献,请通过 [email protected] 联系我们!
MIT 许可证
@misc{luo2026cvefactory,
title={CVE-Factory: Scaling Expert-Level Agentic Tasks for Code Security Vulnerability},
author={Xianzhen Luo and Jingyuan Zhang and Shiqi Zhou and Rain Huang and Chuan Xiao and Qingfu Zhu and Zhiyuan Ma and Xing Yue and Yang Yue and Wencong Zeng and Wanxiang Che},
year={2026},
eprint={2602.03012},
archivePrefix={arXiv},
primaryClass={cs.CR},
url={https://arxiv.org/abs/2602.03012}
}
| 模型 | LiveCVEBench | PatchEval | Terminal-Bench | 平均 |
|---|
| Qwen3-32B(基础) | 5.29 | 5.66 | 12.50 | 7.82 |
| Abacus-cve(我们的) | 35.79 | 23.58 | 28.75 | 29.37 |
| Qwen3-Coder-30B | 10.58 | 9.91 | 13.75 | 11.41 |
| Qwen3-Coder-480B | 19.58 | 19.34 | 36.25 | 25.06 |
| MiniMax-M2 | 24.87 | 19.34 | 37.50 | 27.24 |
| Claude Sonnet 4 | 20.11 | 22.64 | 33.75 | 25.50 |
| Claude Sonnet 4.5 | 34.39 | 28.77 | 45.00 | 36.05 |
| Claude Opus 4.5 | 41.27 | 32.08 | 48.75 | 40.70 |
| 阶段 | 目的 |
|---|
| 信息收集 | Analyzer 将详细信息汇总到 public.md 和特定角色的文档(for_generator.md 等)。如果信息不足则终止。 |
| 文件生成 | Generator 创建逻辑组件:task.yaml、测试(test_func.py、test_vuln.py)、solution.sh、run-tests.sh 以及 docker-reqs.md 指南。 |
| 环境构建 | Builder 生成 Dockerfile 和 docker-compose.yaml,在“盲构建”(无法访问测试/解决方案)下操作以确保严谨性。 |
| 漏洞验证 | Orchestrator 通过 check_env_ready 验证 test_vuln 失败 + test_func 通过。如果失败,Validator 智能体修复环境(最多重试 3 次)。 |
| 解决方案验证 | Orchestrator 通过 check_fix_ready 验证修复。要求两个测试均通过。如果失败,Solver 智能体调整解决方案或环境。 |
| 整体验证 | Checker 智能体处理错误或执行质量保证(清理模拟代码/数据),无论 check_cve_ready 结果如何。最终端到端检查确认成功。 |
| 部分 | 设置 | 描述 |
|---|
| Orchestrator | max_concurrent_cves | 控制同时处理的 CVE 数量。如果遇到 API 速率限制,请降低此值。 |
| Agents | limits | 为特定阶段设置并发上限(例如,限制 builder 以节省磁盘/CPU)。 |
| Models | models.default | 切换底层大语言模型(例如,Claude 4.5 Sonnet 与 Opus)。 |