
CVE-Factory
CVE-Factory هو نظام متعدد الوكلاء (Multi-Agent) لإعادة إنتاج ثغرات CVE آليًا بالكامل ومن البداية إلى النهاية. عند تلقّي سجلات CVE، يبحث النظام تلقائيًا في التفاصيل، وينشئ حالات الاختبار، ويبني بيئات Docker، ويتحقق من أن كل ثغرة يمكن استغلالها وتصحيحها على حد سواء. يحوّل خط الأنابيب بيانات CVE الوصفية إلى بيئات ثغرات قابلة لإعادة الإنتاج والاختبار دون أي تدخل يدوي.
⚠️ تحذير أمني: يبني هذا النظام حاويات Docker تحتوي على برمجيات قابلة للاستغلال ويشغّلها. يجب عليك حتمًا استخدام بيئة Docker-in-Docker (DinD) لعزل حاويات CVE عن نظام المضيف. لا تشغّل CVE-Factory أبدًا مباشرة على برنامج Docker الخفي (daemon) الخاص بالمضيف.
أدخل سجلات 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. إذا كنت تستخدم مزود واجهة برمجة تطبيقات تابعًا لجهة خارجية، فيجب عليك التأكد من أنه يدعم هاتين الأداتين المحددتين.
المرحلة 2 (من Builder إلى Validator إلى Solver إلى Checker): تتولى بناء بيئة Docker والتحقق منها. من بناء البيئة إلى التحقق الشامل، لا تتطلب أي أدوات مرتبطة بالويب، إذ يتفاعل الوكلاء حصريًا مع نظام الملفات المحلي وبرنامج Docker الخفي (daemon).
يمكن أيضًا استدعاء كل مرحلة على حدة، مما يتيح تحكمًا دقيقًا في عملية إعادة الإنتاج وسهولة تصحيح أخطاء مراحل محددة.
يتكون النظام من 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
راجع dev-env/README.md للحصول على تفاصيل إعداد DinD واستكشاف الأخطاء وإصلاحها.
ضع ثغرات 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، وهو إطار تركيبي موحّد (Unified Synthetic Framework) يدمج قدرات Terminal وSWE والأمان (CVE) في خط أنابيب بيانات وكيلي متكامل 3-in-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 ونجاح test_func عبر check_env_ready. عند الفشل، يصلح وكيل Validator البيئة (3 محاولات كحد أقصى). |
| التحقق من الحل | يتحقق Orchestrator من الإصلاح عبر check_fix_ready. يتطلب نجاح الاختبارين معًا. عند الفشل، يعدّل وكيل Solver الحل أو البيئة. |
| التحقق الشامل | يتعامل وكيل Checker مع الأخطاء أو يجري ضمان الجودة (QA) (تنظيف الكود/البيانات الوهمية) بغض النظر عن نتيجة check_cve_ready. يؤكد الفحص النهائي الشامل (E2E) النجاح. |
| القسم | الإعداد | الوصف |
|---|
| Orchestrator | max_concurrent_cves | التحكم في عدد ثغرات CVE التي تتم معالجتها بالتوازي. خفّض هذه القيمة إذا وصلت إلى حدود معدل واجهة برمجة التطبيقات. |
| Agents | limits | تعيين حدود التزامن لمراحل محددة (مثل تحديد builder لتوفير مساحة القرص/المعالج). |
| Models | models.default | تبديل نماذج اللغة الأساسية (مثل Claude 4.5 Sonnet مقابل Opus). |