
إطار عمل تجميعي لاكتشاف وإصلاح الثغرات الأمنية في البرمجيات باستخدام نماذج لغوية كبيرة متعددة، مع أدوات لتحليل توافق الآراء وتقييم المفاضلة بين الدقة والاستدعاء.
التنفيذ الرسمي والقطعة الأثرية للبحث العلمي:
"DVDR-LLM: متى تكون النماذج اللغوية الكبيرة أفضل معًا لاكتشاف وإصلاح الثغرات البرمجية؟"
DVDR-LLM هو إطار عمل تنسيقي (Ensemble) يدرس بشكل منهجي المفاضلات الأساسية في تجميع نماذج لغوية كبيرة متعددة (LLMs) لاكتشاف وإصلاح الثغرات البرمجية. يكشف تقييمنا الشامل عن رؤى حاسمة حول موازنة الدقة والاستدعاء (Precision-Recall)، وفوائد تنوع النماذج، والمناهج القائمة على توافق الآراء في التطبيقات الحساسة أمنيًا.
DVDR_LLM/
├── dvdr_llm/ # الحزمة الرئيسية (هيكل احترافي)
│ ├── __init__.py # تصديرات الحزمة
│ ├── cli.py # واجهة سطر الأوامر
│ ├── config.py # إعدادات التهيئة
│ ├── core/ # الوظائف الأساسية
│ │ ├── api_client.py # التواصل مع واجهة برمجة تطبيقات LLM
│ │ ├── detector.py # صنف VulnerabilityDetector
│ │ └── prompts.py # أدوات توليد المطالبات
│ ├── analysis/ # وحدات التحليل
│ │ ├── consensus.py # تحليل توافق الآراء
│ │ └── metrics.py # مقاييس الأداء
│ ├── evaluation/ # تقييم النماذج
│ │ └── evaluator.py # صنف ModelEvaluator
│ ├── visualization/ # الرسم والتصور
│ │ └── plotter.py # صنف ResultsPlotter
│ └── tools/ # أدوات إضافية
├── utils/ # الوحدات المساعدة الأصلية
│ ├── api.py # أدوات التفاعل مع واجهة برمجة تطبيقات LLM
│ ├── database.py # دوال مساعدة لـ SQLite
│ └── config.py # ثوابت الإعدادات
├── data/ # مجموعات البيانات وقواعد البيانات
│ ├── vulnerabilities.csv # بيانات الثغرات
│ └── vulnerable and patched codes.sqlite
├── output/ # النتائج وقواعد البيانات المُنشأة
│ ├── database_*.sqlite # قواعد بيانات خاصة بكل نموذج
│ ├── consensus_analysis/ # نتائج تحليل توافق الآراء
│ ├── metrics/ # مقاييس الأداء
│ └── database_exports/ # البيانات المُصدَّرة
├── examples/ # أمثلة الاستخدام
│ └── basic_usage.py # عرض أساسي للاستخدام
├── docs/ # التوثيق
│ └── README_consensus_analysis.md
├── paper/ # البحث العلمي
│ ├── main.pdf # الورقة المنشورة
│ └── main.tex # مصدر LaTeX
├── setup.py # تثبيت الحزمة
├── requirements.txt # التبعيات
├── CHANGELOG.md # سجل التغييرات
├── LICENSE # رخصة MIT
└── README.md # هذا الملف
استنساخ المستودع:
git clone https://github.com/Erroristotle/DVDR_LLM.git
cd DVDR_LLM
تثبيت التبعيات:
pip install -r requirements.txt
pip install -e . # تثبيت الحزمة في وضع التطوير
التحقق من التثبيت:
python verify_package.py
# تشغيل اكتشاف الثغرات مع التنسيق
dvdr-llm detect --models llama3-8b,codellama-7b --database data/vulnerabilities.sqlite
# تحليل أنماط توافق الآراء (RQ2)
dvdr-llm analyze consensus --input results/metrics/model_predictions.csv --threshold 0.6
# توليد تصور نمط التضارب (الشكل في الورقة)
python dvdr_llm/visualization/conflict_pattern_plot.py results/metrics/reviewer_insights_disagreement_patterns.csv -o reviewer_insights
# تقييم أداء التنسيق عبر مستويات التجريد (RQ3)
dvdr-llm evaluate --models-dir output/ --abstraction-analysis
from dvdr_llm import VulnerabilityDetector, ConsensusAnalyzer, ModelEvaluator
# Initialize vulnerability detector
detector = VulnerabilityDetector("llama3-8b-instruct")
# Connect to database
detector.connect_to_database("data/vulnerabilities.sqlite")
# Analyze code for vulnerabilities
code = """
void vulnerable_function(char *input) {
char buffer[100];
strcpy(buffer, input); // Buffer overflow
}
"""
# Get CVE predictions
cve_names = detector.analyze_code_for_cves(code, 2023)
print(f"Identified CVEs: {cve_names}")
# Detect vulnerability
is_vulnerable = detector.detect_vulnerability(code)
print(f"Is vulnerable: {is_vulnerable}")
# Process database entries
stats = detector.process_database_entries(limit=100)
print(f"Processed {stats['processed']} entries")
# Clean up
detector.close()
# Multi-model consensus analysis
model_databases = {
"llama3-8b": "output/database_llama3-8b-instruct.sqlite",
"codellama-7b": "output/database_codellama-7b-instruct.sqlite",
"gemma2-9b": "output/database_gemma2-9b.sqlite"
}
analyzer = ConsensusAnalyzer()
consensus_results = analyzer.run_full_analysis(model_databases)
# Model evaluation
evaluator = ModelEvaluator()
evaluation_results = evaluator.evaluate_multiple_models(
model_databases,
"data/ground_truth.csv"
)
# توليد الجدول 2 (مقارنة النماذج مع نسب التغير المئوية)
python dvdr_llm/tools/model_contribution_analysis.py results/metrics/model_predictions.csv --compare-ensemble --threshold 0.7
# تحليل الأداء الفردي مقابل أداء التنسيق
dvdr-llm evaluate --comparison-analysis --threshold 0.7
# توليد الشكل 3 (تحليل حساسية العتبة)
python dvdr_llm/tools/threshold_analysis.py results/metrics/model_predictions.csv --range 0.3-0.8
# التحقق الإحصائي من اختيار العتبة
python dvdr_llm/analysis/statistical_validation.py --threshold-analysis
# توليد الجدول 3 (تحليل مستوى التجريد)
python dvdr_llm/evaluation/evaluator.py --abstraction-analysis --threshold 0.6
# تقييم الأداء الخاص بكل مستوى
dvdr-llm evaluate --abstraction-levels 1,2,3 --ensemble
# تحليل مقاييس جودة التصحيح (ROUGE، CodeBLEU، التعقيد)
python dvdr_llm/tools/patch_quality_analysis.py results/patches/ --weighted-scoring
# توليد الشكل 4 (تحليل تشابه التصحيحات وتعقيدها)
dvdr-llm visualize --patch-analysis --metrics results/patch_metrics.csv
# الشكل الرئيسي لتحليل نمط التضارب (الشكل 2)
python dvdr_llm/visualization/conflict_pattern_plot.py results/metrics/reviewer_insights_disagreement_patterns.csv -o reviewer_insights
# تحليل حساسية العتبة (الشكل 3)
python dvdr_llm/visualization/enhanced_figure3_generator.py results/metrics/model_predictions.csv
# مخططات التحقق الإحصائي (الملحق)
python dvdr_llm/analysis/statistical_significance_analysis.py --generate-plots
قم بتعديل dvdr_llm/config.py لإعداد نقاط نهاية النماذج اللغوية الكبيرة:
LLM_MODELS = {
"llama3_8b": "ollama run llama3:8b-instruct",
"codellama_7b": "ollama run codellama:7b-instruct",
"mistral_7b": "ollama run mistral:7b-instruct",
# Add your model configurations
}