
CVE-Factory
CVE-Factory ist ein Multi-Agenten-System für die vollautomatische End-to-End-Reproduktion von CVEs. Ausgehend von CVE-Einträgen recherchiert das System automatisch Details, generiert Testfälle, erstellt Docker-Umgebungen und validiert, dass jede Schwachstelle sowohl ausgenutzt als auch gepatcht werden kann. Die Pipeline wandelt CVE-Metadaten ohne manuelles Eingreifen in reproduzierbare, testbare Schwachstellenumgebungen um.
⚠️ Sicherheitswarnung: Dieses System erstellt und startet Docker-Container, die verwundbare Software enthalten. Du MUSST die Docker-in-Docker-Umgebung (DinD) verwenden, um die CVE-Container von deinem Host-System zu isolieren. Führe CVE-Factory niemals direkt auf deinem Host-Docker-Daemon aus.
CVE-Einträge eingeben, eine vollständige CVE-Reproduktionsumgebung erhalten. Dem Terminal-Bench-Standard folgend enthält jedes generierte Aufgabenpaket:
Dockerfile und docker-compose.yaml zum Hosten der verwundbaren Anwendungtask.yaml mit strukturierten Anweisungsbeschreibungen (ohne CVE-Identität)solution.sh zum Patchen der Schwachstellerun-tests.sh zum Starten der EvaluierungUnsere Testlogik ist speziell für Sicherheitsaufgaben ausgelegt und gliedert sich in:
Keine manuelle Recherche, keine manuelle Programmierung - vollautomatisch von den rohen CVE-Metadaten bis zur validierten Reproduktion.
Struktur der generierten Artefakte:
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
In einer groß angelegten Evaluierung von 554 CVEs aus dem Jahr 2025 reproduzierte CVE-Factory erfolgreich 499 Fälle, was einer Erfolgsquote von 90,1 % entspricht. Darüber hinaus bestätigte eine strenge Expertenprüfung von 471 erfolgreichen Fällen, dass 312 Aufgaben (66,2 %) vollständig und präzise reproduziert wurden!
Im Vergleich zu Sicherheitsexperten, die identische Ausgangsinformationen verwendeten, erreichte unser System eine Verifizierungs-Bestehensquote von ~95 % beim Aufbau von Umgebung und Lösung — ein Beleg für Fähigkeiten auf Expertenniveau bei der automatisierten Schwachstellenreproduktion.
📂 Offener Datensatz: Wir veröffentlichen über 1.000 CVE-Aufgabenumgebungen im Verzeichnis
cve_tasks/:
trainset/(887 Aufgaben): Wird für das Training von Abacus-cve verwendet. Die über 4.000 destillierten Agenten-Traces auf Hugging Face 🤗 werden aus diesen Aufgaben mit Claude Opus 4.5 und einem Mini-SWE-Agent-Harness generiert.trainset-2/: Zusätzliche Aufgaben mit vergleichsweise geringerem Schwierigkeitsgrad. Nicht in den Trainingsdaten enthalten.- NEU: Weitere 3.181 Aufgaben sind unter
cve_tasks_3k_compressedauf Hugging Face verfügbar (komprimiertes Archiv aufgrund von Größenbeschränkungen), mit 18,8k Agenten-Traces zum Training von Abacus-cve-v1.1.
Feinabstimmung (Fine-Tuning) mit CVE-Factory-Traces führt zu dramatischen Verbesserungen bei Sicherheits-Benchmarks. Qwen3-32B erreicht eine ~6,8-fache Verbesserung bei LiveCVEBench (5,29 % → 35,79 %), ~4,2-fach bei PatchEval (5,66 % → 23,58 %) und zeigt sogar deutliche Zugewinne bei Terminal-Bench (12,50 % → 28,75 %) — was eine starke aufgabenübergreifende Generalisierung demonstriert.
Mit nur 4k Traces übertrifft Abacus-cve (32B) Qwen3-Coder-480B, MiniMax-M2 und Claude Sonnet 4 und erreicht bei Sicherheitsaufgaben nahezu das Niveau von Claude Sonnet 4.5.
NEU: Abacus-cve-v1.1, trainiert auf 18,8k Traces, erzielt weitere Zugewinne (+3,83 bei LiveCVEBench, +2,38 bei PatchEval). Die erweiterten Trainingsdaten findest du unter cve_train_v1.1.
Anders als starre Retrieval-Workflows oder einfache Tool-Nutzungsschleifen arbeitet jeder Agent als vollwertige Claude-Code-Session. Wir kodieren keine Schritte fest; stattdessen definieren wir jeden Agenten über seine Rolle (z. B. Analyzer), sein Ziel (z. B. „Eine verwundbare Umgebung aufbauen"), seine Ressourcen (z. B. Zugriff auf bestimmte Dokumente) und seine Verifikationsmethode (z. B. „Muss check_env_ready bestehen"). Die Agenten agieren wie menschliche Entwickler: Sie erkunden eigenständig Dateien, beheben Fehler, lesen Logs und iterieren innerhalb ihres zugewiesenen Arbeitsbereichs an Lösungen.
CVE-Factory ist dafür ausgelegt, mehrere CVEs gleichzeitig zu verarbeiten. Jede CVE-Pipeline läuft asynchron ab, d. h. schnellere Aufgaben gehen zu den nachfolgenden Stufen über, ohne auf langsamere zu warten. Das System nutzt eine asynchrone Architektur, mit der du die Parallelitätsgrenzen für jeden Agententyp separat festlegen kannst. So kannst du beispielsweise ein höheres Limit für leichte Rechercheaufgaben (Analyzer) und ein niedrigeres Limit für ressourcenintensive Docker-Aufgaben (Builder) festlegen. Diese Flexibilität verhindert eine Systemüberlastung und maximiert gleichzeitig die Verarbeitungsgeschwindigkeit. Timeouts auf Stufenebene stellen sicher, dass hängende Prozesse die Verarbeitungswarteschlange nicht blockieren.
Die Pipeline besteht aus 6 unabhängigen Stufen, die getrennt oder kombiniert ausgeführt werden können.
Phase 1 (Analyzer → Generator) führt die CVE-Recherche durch und generiert Artefakte, ohne dass Docker erforderlich ist.
Tool-Anforderung: Der Analyzer-Agent ist auf die Tools
web_searchundweb_fetchangewiesen. Wenn du einen Drittanbieter-API-Provider verwendest, musst du sicherstellen, dass dieser diese spezifischen Tool-Fähigkeiten unterstützt.
Phase 2 (Builder → Validator → Solver → Checker) übernimmt die Erstellung und Validierung der Docker-Umgebung. Von der Umgebungserstellung bis zur ganzheitlichen Validierung sind keine webbasierten Tools erforderlich, da die Agenten ausschließlich mit dem lokalen Dateisystem und dem Docker-Daemon interagieren.
Jede Stufe kann auch einzeln aufgerufen werden, was eine feingranulare Kontrolle über den Reproduktionsprozess und ein einfaches Debugging einzelner Stufen ermöglicht.
Das System besteht aus 6 Stufen:
# 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
Detaillierte DinD-Konfiguration und Fehlerbehebung findest du unter dev-env/README.md.
Lege die CVEs, die du reproduzieren möchtest, im Verzeichnis original_cves_md/ ab. Die Dateien müssen im Format CVE-YYYY-NNNNN.md benannt sein und die relevanten Informationen enthalten. Wir empfehlen, zur Vorbereitung dieser Eingaben den cve-sampler aus LiveCVEBench-Preview zu verwenden.
# 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)
Eine CVE-Reproduktion gilt als erfolgreich, wenn:
Wichtige Einstellungen in config.yaml, um deinen Lauf zu optimieren:
# Example config.yaml tweak
orchestrator:
max_concurrent_cves: 3 # Lower concurrency for stability
agents:
limits:
builder: 2 # Prevent Docker from consuming all resources
Wir entwickeln aktiv OneFactory, ein einheitliches synthetisches Framework, das Terminal-, SWE- und Security- (CVE)-Fähigkeiten in eine umfassende 3-in-1-Agenten-Datenpipeline integriert.
Auf Basis von CVE-Factory haben wir LiveCVEBench entwickelt und die erste Version des Benchmarks, die Trainingsdaten und das Abacus-cve-Modell veröffentlicht. Wir werden den Benchmark weiter ausbauen und unsere SFT- & RL-Trainingsrezepte optimieren. Bleib gespannt auf weitere Updates!
Wir erweitern und aktualisieren dieses Projekt kontinuierlich. Wenn du Vorschläge hast oder an diesem Projekt mitwirken möchtest, kontaktiere uns bitte unter [email protected]!
MIT-Lizenz
@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}
}
| Modell | LiveCVEBench | PatchEval | Terminal-Bench | Ø |
|---|
| Qwen3-32B (Basis) | 5,29 | 5,66 | 12,50 | 7,82 |
| Abacus-cve (Unser) | 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 |
| Stufe | Zweck |
|---|
| Informationssammlung | Der Analyzer sammelt Details in public.md und rollenspezifischen Dokumenten (for_generator.md usw.). Bricht ab, wenn die Informationen unzureichend sind. |
| Dateigenerierung | Der Generator erstellt logische Komponenten: task.yaml, Tests (test_func.py, test_vuln.py), solution.sh, run-tests.sh und docker-reqs.md als Leitfaden. |
| Umgebungsaufbau | Der Builder erstellt Dockerfile und docker-compose.yaml und arbeitet dabei nach dem Prinzip des „blinden Aufbaus" (ohne Zugriff auf Tests/Lösung), um die Stringenz zu gewährleisten. |
| Schwachstellenverifizierung | Der Orchestrator verifiziert über check_env_ready, dass test_vuln FAIL und test_func PASS ergeben. Bei einem Fehlschlag repariert der Validator-Agent die Umgebung (max. 3 Wiederholungen). |
| Lösungsverifizierung | Der Orchestrator verifiziert den Fix über check_fix_ready. Erfordert, dass beide Tests PASS ergeben. Bei einem Fehlschlag passt der Solver-Agent die Lösung oder die Umgebung an. |
| Ganzheitliche Validierung | Der Checker-Agent behandelt Fehler oder führt QA durch (Bereinigung von Mock-Code/Daten), unabhängig vom Ergebnis von check_cve_ready. Eine abschließende E2E-Prüfung bestätigt den Erfolg. |
| Abschnitt | Einstellung | Beschreibung |
|---|
| Orchestrator | max_concurrent_cves | Steuert, wie viele CVEs parallel verarbeitet werden. Reduziere diesen Wert, wenn du auf API-Ratenlimits stößt. |
| Agenten | limits | Legt Parallelitäts-Obergrenzen für bestimmte Stufen fest (z. B. builder begrenzen, um Speicher/CPU zu schonen). |
| Modelle | models.default | Wechselt die zugrunde liegenden LLMs (z. B. Claude 4.5 Sonnet vs. Opus). |