
CVE-Factory
CVE-Factory é um sistema Multi-Agente para reprodução de CVEs totalmente automatizada, de ponta a ponta. Dados registros de CVE, o sistema automaticamente pesquisa detalhes, gera casos de teste, constrói ambientes Docker e valida que cada vulnerabilidade pode ser tanto explorada quanto corrigida. O pipeline transforma metadados de CVE em ambientes de vulnerabilidade reproduzíveis e testáveis, sem intervenção manual.
⚠️ Aviso de Segurança: Este sistema constrói e executa contêineres Docker contendo software vulnerável. Você DEVE usar o ambiente Docker-in-Docker (DinD) para isolar os contêineres de CVE do seu sistema host. Nunca execute o CVE-Factory diretamente no seu daemon Docker host.
Insira registros de CVE e obtenha um ambiente completo de reprodução de CVE. Seguindo o padrão Terminal Bench, cada pacote de tarefa gerado inclui:
Dockerfile e docker-compose.yaml hospedando a aplicação vulneráveltask.yaml contendo descrições de instruções estruturadas (sem identidade de CVE)solution.sh para corrigir a vulnerabilidaderun-tests.sh para iniciar a avaliaçãoProjetado especificamente para tarefas de segurança, nossa lógica de teste é dividida em:
Sem pesquisa manual, sem codificação manual — totalmente automatizado de metadados brutos de CVE até reprodução validada.
Estrutura de Artefato Gerado:
CVE-2025-XXXX/
├── task.yaml # Metadados Estruturados da Tarefa
├── Dockerfile # Configuração do Ambiente Vulnerável
├── docker-compose.yaml # Orquestração de Serviços
├── task-deps/
├── solution.sh # Correção Verificada
└── test/
├── test_func.py # Verificação de Funcionalidade
├── test_vuln.py # Verificação de Exploração de Vulnerabilidade
└── run-tests.sh # Script de Avaliação com Um Clique
Em uma avaliação em larga escala de 554 CVEs de 2025, o CVE-Factory reproduziu com sucesso 499 casos, alcançando uma taxa de sucesso de 90,1%. Além disso, uma revisão rigorosa de especialistas em 471 casos bem-sucedidos confirmou que 312 tarefas (66,2%) foram reproduzidas completa e precisamente!
Quando comparado a especialistas em segurança usando informações iniciais idênticas, nosso sistema alcançou uma taxa de aprovação de verificação de ~95% na construção de ambiente e solução — demonstrando capacidade de nível especialista em reprodução automatizada de vulnerabilidades.
📂 Conjunto de Dados Aberto: Lançamos mais de 1.000 ambientes de tarefas CVE no diretório
cve_tasks/:
trainset/(887 tarefas): Usado para treinar Abacus-cve. Os mais de 4.000 traços de agentes destilados no Hugging Face 🤗 são gerados a partir dessas tarefas usando Claude Opus 4.5 com um harness Mini SWE-Agent.trainset-2/: Tarefas adicionais com dificuldade relativamente mais simples. Não incluídas nos dados de treinamento.- NOVO: 3.181 tarefas adicionais disponíveis em
cve_tasks_3k_compressedno Hugging Face (arquivo compactado devido a limites de tamanho), com 18,8k traços de agentes para treinar Abacus-cve-v1.1.
O fine-tuning em traços do CVE-Factory produz melhorias dramáticas em benchmarks de segurança. Qwen3-32B alcança uma melhoria de ~6,8× no LiveCVEBench (5,29% → 35,79%), ~4,2× no PatchEval (5,66% → 23,58%) e ainda mostra ganhos significativos no Terminal-Bench (12,50% → 28,75%) — demonstrando forte generalização entre tarefas.
Com apenas 4 mil traços, o Abacus-cve (32B) supera Qwen3-Coder-480B, MiniMax-M2 e Claude Sonnet 4, aproximando-se do nível Claude Sonnet 4.5 em tarefas de segurança.
NOVO: Abacus-cve-v1.1 treinado com 18,8 mil traços alcança ganhos adicionais (+3,83 no LiveCVEBench, +2,38 no PatchEval). Veja cve_train_v1.1 para os dados de treinamento expandidos.
Diferente de workflows rígidos de recuperação ou loops simples de uso de ferramentas, cada agente opera como uma sessão Claude Code completa. Não codificamos etapas; em vez disso, definimos cada agente por sua Função (ex: Analyzer), Objetivo (ex: "Construir um ambiente vulnerável"), Recursos (ex: Acesso a documentos específicos) e Método de Verificação (ex: "Deve passar em check_env_ready"). Os agentes agem como desenvolvedores humanos: exploram arquivos autonomamente, depuram erros, leem logs e iteram em soluções dentro de seu espaço de trabalho designado.
O CVE-Factory foi projetado para lidar com múltiplos CVEs simultaneamente. Cada pipeline de CVE executa de forma assíncrona, o que significa que tarefas mais rápidas prosseguem para os estágios subsequentes sem esperar pelas mais lentas. O sistema usa uma arquitetura assíncrona que permite separar limites de concorrência para cada tipo específico de agente. Por exemplo, você pode definir um limite maior para tarefas de pesquisa leves (Analyzer) e um limite menor para tarefas Docker que consomem muitos recursos (Builder). Essa flexibilidade evita sobrecarga do sistema enquanto maximiza a velocidade de processamento. Timeouts em nível de estágio garantem que processos travados não bloqueiem a fila de processamento.
O pipeline consiste em 6 estágios independentes que podem ser executados separadamente ou combinados.
Fase 1 (Analyzer → Generator) realiza pesquisa de CVE e gera artefatos sem exigir Docker.
Requisito de Ferramenta: O agente Analyzer depende das ferramentas
web_searcheweb_fetch. Se você usar um provedor de API de terceiros, deve garantir que ele suporte essas capacidades de ferramenta específicas.
Fase 2 (Builder → Validator → Solver → Checker) lida com a construção e validação do ambiente Docker. Da Construção do Ambiente à Validação Holística, nenhuma ferramenta relacionada à web é necessária, pois os agentes interagem apenas com o sistema de arquivos local e o daemon Docker.
Cada estágio também pode ser invocado individualmente, permitindo controle refinado sobre o processo de reprodução e fácil depuração de estágios específicos.
O sistema consiste em 6 estágios:
# Inicie o ambiente DinD isolado (necessário por segurança)
cd dev-env
docker compose up -d
# Entre no contêiner de desenvolvimento
docker compose exec cve-factory bash
Veja dev-env/README.md para configuração detalhada do DinD e solução de problemas.
Coloque os CVEs que deseja reproduzir no diretório original_cves_md/. Os arquivos devem ser nomeados no formato CVE-YYYY-NNNNN.md e conter informações relevantes. Recomendamos usar o cve-sampler do LiveCVEBench-Preview para preparar essas entradas.
# Dentro do contêiner de desenvolvimento DinD
cd /workspace
pip install -r requirements.txt
# Verifique se os arquivos de entrada de CVE estão prontos
ls original_cves_md/
# Defina a chave da API ou use assinatura do Claude
export ANTHROPIC_API_KEY="sua-chave"
export ANTHROPIC_BASE_URL="sua-url"
# Processar um CVE específico
python -m orchestrator.run --cve CVE-2025-XXXXX
# Ou processar todos os CVEs no diretório de entrada
python -m orchestrator.run
# Executar fases separadamente
python -m orchestrator.run --phase1 --cve CVE-2025-XXXXX # Apenas Analyzer + Generator (sem Docker)
python -m orchestrator.run --phase2 --cve CVE-2025-XXXXX # Builder → Checker (requer Docker)
Uma reprodução de CVE é considerada bem-sucedida quando:
Configurações principais em config.yaml para otimizar sua execução:
# Exemplo de ajuste no config.yaml
orchestrator:
max_concurrent_cves: 3 # Menor concorrência para estabilidade
agents:
limits:
builder: 2 # Impedir que o Docker consuma todos os recursos
Estamos desenvolvendo ativamente o OneFactory, um Framework Sintético Unificado que integra capacidades de Terminal, SWE e Segurança (CVE) em um pipeline de dados agêntico 3 em 1 abrangente.
Com base no CVE-Factory, desenvolvemos o LiveCVEBench e lançamos a primeira versão do benchmark, dados de treinamento e o modelo Abacus-cve. Continuaremos a expandir o benchmark e otimizar nossas receitas de treinamento SFT & RL. Fique atento para mais atualizações!
Estamos continuamente expandindo e atualizando este projeto. Se você tiver alguma sugestão ou quiser participar/contribuir com este projeto, entre em contato pelo e-mail [email protected]!
Licença 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}
}
| Model | LiveCVEBench | PatchEval | Terminal-Bench | Avg |
|---|
| Qwen3-32B (base) | 5.29 | 5.66 | 12.50 | 7.82 |
| Abacus-cve (Ours) | 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 |
| Estágio | Propósito |
|---|
| Coleta de Informações | Analyzer coleta detalhes em public.md e documentos específicos da função (for_generator.md, etc.). Termina se a informação for insuficiente. |
| Geração de Arquivos | Generator cria componentes lógicos: task.yaml, testes (test_func.py, test_vuln.py), solution.sh, run-tests.sh e orientação docker-reqs.md. |
| Construção do Ambiente | Builder produz Dockerfile e docker-compose.yaml, operando sob "construção cega" (sem acesso a testes/solução) para garantir rigor. |
| Verificação de Vulnerabilidade | Orchestrator verifica test_vuln FALHAR + test_func PASSAR via check_env_ready. Se falhar, o agente Validator corrige o ambiente (máx. 3 tentativas). |
| Verificação de Solução | Orchestrator verifica a correção via check_fix_ready. Exige que AMBOS os testes PASSEM. Se falhar, o agente Solver ajusta a solução ou o ambiente. |
| Validação Holística | Agente Checker lida com erros ou realiza QA (limpeza de código/dados mock) independentemente do resultado de check_cve_ready. Verificação final E2E confirma o sucesso. |
| Seção | Configuração | Descrição |
|---|
| Orchestrator | max_concurrent_cves | Controla quantos CVEs são processados em paralelo. Reduza se atingir limites de taxa da API. |
| Agents | limits | Define limites de concorrência para estágios específicos (ex.: limitar builder para economizar disco/CPU). |
| Models | models.default | Alternar entre LLMs subjacentes (ex.: Claude 4.5 Sonnet vs Opus). |