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%)——展现了强大的跨任务泛化能力。
| 模型 | 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 |
仅凭 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 个阶段组成:
| 阶段 | 目的 |
|---|---|
| 信息收集 | 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 结果如何。最终端到端检查确认成功。 |
# 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 中用于优化运行的关键设置: