
CVE-Factory — это мультиагентная система для полностью автоматизированного сквозного воспроизведения CVE. На основе записей о CVE система автоматически исследует детали, генерирует тест-кейсы, создаёт Docker-окружения и проверяет, что каждая уязвимость может быть как эксплуатирована, так и устранена. Конвейер преобразует метаданные CVE в воспроизводимые и тестируемые окружения с уязвимостями без ручного вмешательства.
⚠️ Предупреждение о безопасности: эта система собирает и запускает Docker-контейнеры, содержащие уязвимое программное обеспечение. Вы ОБЯЗАНЫ использовать окружение Docker-in-Docker (DinD) для изоляции CVE-контейнеров от вашей хост-системы. Никогда не запускайте CVE-Factory напрямую на демоне Docker вашего хоста.
Введите записи 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
В ходе масштабной оценки 554 CVE за 2025 год CVE-Factory успешно воспроизвёл 499 случаев, достигнув 90,1% успеха. Кроме того, строгая экспертная проверка 471 успешного случая подтвердила, что 312 задач (66,2%) были воспроизведены полностью и точно!
При сравнении с экспертами по безопасности, использовавшими идентичную исходную информацию, наша система достигла ~95% доли прохождения проверки при создании окружений и решений — что демонстрирует возможности экспертного уровня в автоматизированном воспроизведении уязвимостей.
📂 Открытый набор данных: Мы публикуем более 1 000 CVE-окружений для задач в каталоге
cve_tasks/:
trainset/(887 задач): используется для обучения Abacus-cve. Более 4 000 дистиллированных трейсов агентов на Hugging Face 🤗 сгенерированы на основе этих задач с помощью Claude Opus 4.5 и каркаса Mini SWE-Agent.trainset-2/: дополнительные задачи относительно более простой сложности. Не включены в обучающие данные.- НОВОЕ: ещё 3 181 задача доступна в
cve_tasks_3k_compressedна Hugging Face (сжатый архив из-за ограничений размера), с 18,8 тыс. трейсов агентов для обучения Abacus-cve-v1.1.
Дообучение на трейсах CVE-Factory даёт значительные улучшения на бенчмарках в области безопасности. Qwen3-32B достигает ~6,8× улучшения на LiveCVEBench (5,29% → 35,79%), ~4,2× на PatchEval (5,66% → 23,58%) и даже показывает существенный прирост на Terminal-Bench (12,50% → 28,75%) — что демонстрирует сильное обобщение между задачами.
Всего лишь с 4 тыс. трейсов Abacus-cve (32B) превосходит Qwen3-Coder-480B, MiniMax-M2 и Claude Sonnet 4, приближаясь к уровню Claude Sonnet 4.5 на задачах безопасности.
НОВОЕ: модель Abacus-cve-v1.1, обученная на 18,8 тыс. трейсов, даёт дополнительный прирост (+3,83 на LiveCVEBench, +2,38 на PatchEval). Расширенные обучающие данные см. в 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
Подробную конфигурацию DinD и устранение неполадок см. в dev-env/README.md.
Поместите CVE, которые нужно воспроизвести, в каталог original_cves_md/. Файлы должны называться в формате CVE-YYYY-NNNNN.md и содержать релевантную информацию. Для подготовки входных данных мы рекомендуем использовать cve-sampler из LiveCVEBench-Preview.
# 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) в комплексный агентный конвейер данных «3-в-1».
На основе 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 проверяет test_vuln FAIL + test_func PASS через check_env_ready. При неудаче агент Validator исправляет окружение (максимум 3 попытки). |
| Проверка решения | Orchestrator проверяет исправление через check_fix_ready. Требуется PASS обоих тестов. При неудаче агент Solver корректирует решение или окружение. |
| Комплексная проверка | Агент Checker обрабатывает ошибки или выполняет QA (очистку мок-кода/данных) независимо от результата check_cve_ready. Финальная сквозная проверка подтверждает успех. |
| Раздел | Параметр | Описание |
|---|
| Orchestrator | max_concurrent_cves | Управляет количеством одновременно обрабатываемых CVE. Уменьшите его, если упираетесь в лимиты API. |
| Agents | limits | Задаёт ограничения параллелизма для конкретных этапов (например, ограничьте builder, чтобы сэкономить диск/CPU). |
| Models | models.default | Переключает базовые LLM (например, Claude 4.5 Sonnet vs Opus). |