
كود VulTriage: توسيع السياق عبر ثلاث مسارات للكشف عن الثغرات الأمنية المعتمد على LLM

إطار عمل ذكي لكشف الثغرات الأمنية يعتمد على نماذج اللغة الكبيرة وتحليل الشيفرة البرمجية الثابتة، ويدعم تقييم مجموعات بيانات متعددة ودراسات الاجتثاث.

هذا المشروع هو إطار عمل ذكي لكشف الثغرات الأمنية يعتمد على نموذجي GPT-4o وBGE-M3، ويجمع بين:
pip install -r requirements.txt
سيتم تنزيل النموذج تلقائياً، أو يمكنك تنزيله يدوياً:
git clone https://huggingface.co/BAAI/bge-m3
# Note: BGE-M3 related dependencies can be installed via FlagEmbedding. For details, refer to: pip install -U FlagEmbedding
تأكد من وجود الملفات cwec_latest.xml/cwec_v4.19.1.xml و1435.csv/1435_filtered_columns.csv (بيانات فهرس CWE) في الدليل الجذر للمشروع.
ملاحظة: يستخدم هذا المشروع قائمة CWE لأخطر 25 نقطة ضعف برمجية. الملفات ذات الصلة مضمّنة بالفعل في الدليل الجذر للمشروع.
ضع الملفات التالية في الدليل الجذر للمشروع:
primevul_test_paired.jsonl (مجموعة بيانات PrimeVul)LLM4Vul-main/LLM4Vul-main/data/kotlin_data.csv (مجموعة بيانات Kotlin)عدّل إعدادات OpenAI API في main.py أو hyperparam_exp.py:
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.poixe.com/v1"
)
ملاحظة: تعذّر تحليل الرابط الحالي
https://api.poixe.com/v1. قد يكون نوع صفحة ويب غير مدعوم أو رابطاً معطلاً. يُرجى التحقق من صحة الرابط أو التبديل إلى مزوّد API آخر.
python main.py --wotask all --jsonl_file primevul_test_paired.jsonl
# Without control flow information
python main.py --wotask wo_ctrl_info_pth --jsonl_file primevul_test_paired.jsonl
# Without RAG knowledge
python main.py --wotask wo_rag_pth --jsonl_file primevul_test_paired.jsonl
# Without code understanding
python main.py --wotask wo_exp_pth --jsonl_file primevul_test_paired.jsonl
# Without any auxiliary information
python main.py --wotask nan --jsonl_file primevul_test_paired.jsonl
# Pairwise evaluation mode
python hyperparam_exp.py --mode pairwise --input_file primevul_test_paired.jsonl --detail_level C --info_comb all --desc_level concise --max_vuln 2
# Single-sample evaluation mode
python hyperparam_exp.py --mode single --input_file LLM4Vul-main/LLM4Vul-main/data/kotlin_data.csv
يتم حفظ نتائج الكشف في الوقت الفعلي في metrics_log.txt وتُعرض ملخصات التقييم النهائية على الطرفية:
| السكربت | الغرض |
|---|---|
main.py | السكربت الرئيسي لكشف الثغرات مع دعم دراسة الاجتثاث |
hyperparam_exp.py | تجارب فرط المعلمات والتقييم متعدد الأوضاع |
retrieval.py | وحدة استرجاع قاعدة معرفة CWE (استرجاع هجين يعتمد على نموذج BGE-M3) |
metrics_tracker.py | متتبع فوري للمقاييس مع دعم حفظ السجلات والتصور البياني |
| المعامل | الافتراضي | الوصف |
|---|---|---|
--wotask | all | وضع الاجتثاث: all (الوظائف الكاملة)، wo_ctrl_info_pth (بدون معلومات البنية الثابتة)، wo_rag_pth (بدون معرفة RAG)، wo_exp_pth (بدون فهم الشيفرة)، nan (بدون معلومات مساعدة) |
--jsonl_file | primevul_test_paired.jsonl | مسار مجموعة بيانات JSONL |
--metrics_file | metrics_log.txt | ملف إخراج المقاييس |
| المعامل | الافتراضي | الوصف |
|---|---|---|
--mode | pairwise | وضع التقييم: pairwise أو single |
--input_file | مطلوب | مسار ملف الإدخال (بتنسيق JSONL أو CSV) |
--detail_level | C | مستوى تفصيل تحليل الشيفرة: C (كامل)، B (قياسي)، A (مختصر) |
--info_comb | all | تركيبة المعلومات: all، no_ast، no_cfg، no_dfg |
--desc_level | concise | مستوى الوصف: concise، normal، detailed |
--max_vuln | 2 | الحد الأقصى لعدد الثغرات: 2 أو 4 |
func وtarget)code وlabel)| المكتبة | الإصدار | الترخيص |
|---|---|---|
| FlagEmbedding | 1.4.0 | MIT |
| openai | 2.26.0 | Apache 2.0 |
عدّل base_url وapi_key في main.py أو hyperparam_exp.py.
1435.csv/1435_filtered_columns.csv بشكل صحيح وتأكد من صحة تنسيق بيانات فهرس CWE؛git clone https://huggingface.co/BAAI/bge-m3؛عدّل طريقة update_pair_metrics في metrics_tracker.py لإضافة أو تعديل منطق حساب المقاييس.
نزّل ملفات النموذج مباشرة من موقع HuggingFace، واستخرجها إلى الدليل الجذر للمشروع، أو تحقق من اتصال الشبكة وأعد تنفيذ الأمر git clone https://huggingface.co/BAAI/bge-m3.