
CVE-Factory
CVE-Factory는 완전 자동화된 엔드투엔드 CVE 재현을 위한 멀티 에이전트 시스템입니다. CVE 레코드가 주어지면 시스템이 자동으로 세부 정보를 조사하고, 테스트 케이스를 생성하며, Docker 환경을 구축하고, 각 취약점이 악용(exploit)과 패치 모두 가능한지 검증합니다. 이 파이프라인은 수동 개입 없이 CVE 메타데이터를 재현 가능하고 테스트 가능한 취약점 환경으로 변환합니다.
⚠️ 보안 경고: 이 시스템은 취약한 소프트웨어가 포함된 Docker 컨테이너를 빌드하고 실행합니다. Docker-in-Docker(DinD) 환경을 반드시 사용하여 CVE 컨테이너를 호스트 시스템에서 격리해야 합니다. CVE-Factory를 호스트 Docker 데몬에서 직접 실행하지 마십시오.
CVE 레코드를 입력하면 완전한 CVE 재현 환경을 얻을 수 있습니다. **Terminal Bench 표준**에 따라 각 생성된 작업 패키지에는 다음이 포함됩니다:
Dockerfile 및 docker-compose.yamltask.yaml(CVE 식별 정보 없음)solution.shrun-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년 CVE 554건에 대한 대규모 평가에서 CVE-Factory는 499건을 성공적으로 재현하여 90.1%의 성공률을 달성했습니다. 또한, 성공 사례 471건에 대한 엄격한 전문가 검토 결과 **312개 작업(66.2%)**이 완전하고 정확하게 재현된 것으로 확인되었습니다!
동일한 초기 정보를 사용한 보안 전문가와 비교했을 때, 당사 시스템은 환경 및 솔루션 구축에서 약 95%의 검증 통과율을 달성하여 자동화된 취약점 재현에서 전문가 수준의 역량을 입증했습니다.
📂 공개 데이터셋:
cve_tasks/디렉토리에서 1,000개 이상의 CVE 작업 환경을 공개합니다:
trainset/(887개 작업): Abacus-cve 훈련에 사용됩니다. Hugging Face 🤗의 4,000개 이상의 증류된 에이전트 트레이스는 Mini SWE-Agent 하네스를 사용하는 Claude Opus 4.5로 이러한 작업들로부터 생성되었습니다.trainset-2/: 상대적으로 난이도가 더 간단한 추가 작업입니다. 훈련 데이터에는 포함되지 않습니다.- 새로운 소식: Hugging Face의
cve_tasks_3k_compressed에서 3,181개의 추가 작업을 확인할 수 있습니다(크기 제한으로 인한 압축 아카이브). Abacus-cve-v1.1 훈련을 위한 18.8k 에이전트 트레이스가 포함되어 있습니다.
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 (base) | 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): Docker 없이 CVE 연구를 수행하고 산출물을 생성합니다.
도구 요구 사항: 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을 생성하며, 엄격성을 보장하기 위해 "블라인드 빌딩"(테스트/솔루션에 접근할 수 없음) 방식으로 작동합니다. |
| 취약점 검증 | 오케스트레이터가 check_env_ready를 통해 test_vuln FAIL + test_func PASS를 검증합니다. 실패하면 Validator 에이전트가 환경을 수정합니다(최대 3회 재시도). |
| 솔루션 검증 | 오케스트레이터가 check_fix_ready를 통해 수정을 검증합니다. 두 테스트 모두 PASS여야 합니다. 실패하면 Solver 에이전트가 솔루션이나 환경을 조정합니다. |
| 종합 검증 | Checker 에이전트가 check_cve_ready 결과와 관계없이 오류를 처리하거나 QA(목업 코드/데이터 정리)를 수행합니다. 최종 E2E 검사로 성공을 확인합니다. |
# 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를 참조하세요.