Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
VulnLLM-R — نموذج لغوي كبير (LLM) متخصص في الاستدلال لكشف الثغرات في الكود المصدري بلغتي C/C++ وPython، مع بناء مجموعات البيانات، وتدريب SFT/DPO، ونصوص برمجية لإعادة إنتاج النتائج. | Kitploit
أدوات/GitHubGitHub/ucsb-mlsec/vulnllm-r
تحليل الشفرة الثابت (SAST)تحليل الثغرات الأمنيةتحليل الكودتعلم الآلةالأوراق والأبحاث
GitHubucsb-mlsec/vulnllm-r

VulnLLM-R

نموذج لغوي كبير (LLM) متخصص في الاستدلال لكشف الثغرات في الكود المصدري بلغتي C/C++ وPython، مع بناء مجموعات البيانات، وتدريب SFT/DPO، ونصوص برمجية لإعادة إنتاج النتائج.

عرض المستودع
3705823منذ 6 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

VulnLLM-R: نموذج لغوي كبير متخصص في الاستدلال لاكتشاف الثغرات الأمنية

  • الورقة: arXiv:2512.07533
  • الكود والبيانات: GitHub
  • العرض التوضيحي: عرض ويب
  • النموذج: نموذج 7B
model_size_vs_f1_scatter_01

البيئة ومجموعة البيانات

🛠️ إنشاء البيئة

  • ثبّت Git LFS واستنسخ المستودع (يتم جلب ملفات LFS تلقائيًا أثناء الاستنساخ)
git lfs install          # one-time setup
git clone https://github.com/ucsb-mlsec/VulnLLM-R.git
cd VulnLLM-R
# If you cloned before installing Git LFS, run: git lfs pull
  • أنشئ بيئة conda جديدة
conda create -n vulnscan python=3.11
conda activate vulnscan
  • ثبّت الحزم المطلوبة
pip install -e . -e ./vulscan/train/LLaMA-Factory -e ./vulscan/model_zoo

لإعادة إنتاج نتائجنا

# generate VulnLLM-R-7B's results
python -m vulscan.test.test --output_dir results/test_data --dataset_path ./datasets/test/function_level/ ./datasets/test/repo_level/ --language python c java --model UCSB-SURFI/VulnLLM-R-7B --requests_per_minute 1000 --save --use_cot --batch_size 4 --tp 2 --vllm --max_tokens 8192 --random_cwe

python -m vulscan.test.test_hf \
      --output_dir results/test_hf \
      --hf_dataset UCSB-SURFI/VulnLLM-R-Test-Data \
      --hf_split repo_level function_level \
      --language c python java \
      --model UCSB-SURFI/VulnLLM-R-7B \
      --save --use_cot --vllm --tp 2

# [optional] generate other models' results with our shell script 
# remember to add your API keys to .env file if you want to run commercial models
# use ./run_test.sh -h for more options
./vulscan/test/run_test.sh -o results/test_data -t 2 # -o means output directory, -t means tensor parallelism
./vulscan/test/run_test.sh -o results/test_data -M o3-mini # -M means model name, which runs only one model.
./vulscan/test/run_test.sh -o results/test_data -M gpt-5.4 -e high # -e sets reasoning effort (e.g., none/low/medium/high/xhigh)
./vulscan/test/run_test.sh -o results/test_data -M claude-opus-4-6 -e high

# [optional] draw plot to compare with other models
python plots/plot_language_comparison_models.py --results-dir results/test_data
python plots/plot_model_size_scatter.py --results-dir results/test_data # Note: Labels may overlap with scatter points. Adjust text positions manually if needed.

مجموعات البيانات المقطّرة الموجودة

  • Distill-DeepSeek
  • Distill-QwQ

نوفر أيضًا نسخة مختصرة الاستدلال من مجموعات البيانات المقطّرة:

  • Reduced-Distill-DeepSeek
  • Reduced-Distill-QwQ

التفاصيل التقنية

📚 بناء مجموعات بيانات التدريب والاختبار

دمج مجموعات البيانات الحالية لاكتشاف الثغرات على مستوى الدوال: PrimeVul [1], SecCodePLT [2], Juliet [3], Sven [4], وArvo [5]. ضمن هذه المجموعات، تحتوي PrimeVul على أكثر الدوال تعقيدًا. ننشئ مجموعتي تدريب: نظيفة (بدون PrimeVul) وصاخبة (مع PrimeVul)، حتى نتمكن من التدريب على مجموعات بسيطة نسبيًا والاختبار على مجموعة PrimeVul المعقدة. لاحظ أن تسميتنا لمجموعة التدريب التي تتضمن PrimeVul باسم "صاخبة" لا تعني أن المجموعة صاخبة (noisy). إنه اسم تعسفي نسبيًا استخدمناه في البداية.

  • بعد تنزيل جميع مجموعات البيانات، يحتوي vulscan/data_process/data_utils على مجموعة من البرامج النصية لمعالجة البيانات ودمجها.
    • raw_to_us.py: دمج البيانات الخام في مجموعتنا وإزالة البيانات المكررة
    • check_cwe_correct.py: حساب الدقة لكل فئة CWE
    • generate_arvo_raw_data.py: توليد بيانات خام منظمة من مجموعة بيانات arvo
    • arvo_to_us.py: إعادة تنسيق البيانات الخام المنظمة من arvo إلى تنسيق مجموعتنا
    • split_good_bad_for_juliet.py: استخراج البيانات من مجموعة Juliet 1.3 الخام وتحويلها إلى التنسيق المطلوب، والتي تشكل جزءًا من مجموعة بياناتنا النظيفة c clean_dataset
    • add_sven_to_clean_dataset.py: استخراج البيانات من مجموعة بيانات Sven، لتشكيل جزء من مجموعة البيانات النظيفة C الخاصة بنا
    • sync_large_small.py: مزامنة التعديلات على noisy_dataset/large_train/c إلى noisy_dataset/small_train/c
    • remove_testing_from_training.py: إضافة وسم human إلى كل بيانات، بمعنى أن النقطة تم التحقق منها بواسطة إنسان وتُستخدم كبيانات اختبار -data_utils.py: إضافة حقل related_cwe إلى مجموعة البيانات.
  • سيتم حفظ البيانات المدمجة في
    • datasets/clean_dataset: بيانات التدريب بدون PrimeVul
      • datasets/clean_dataset/python يحتوي على بيانات من SVEN وSecCodePLT
      • datasets/clean_dataset/c يحتوي على بيانات من Juliet وSVEN
    • datasets/noisy_dataset
      • datasets/noisy_dataset/small_train: يحتوي على بيانات التدريب من PrimeVul وSVEN مع CWEs محددة (نستخدم بيانات PrimeVul في هذه المجموعة كتدريب)
      • datasets/noisy_dataset/large_train: يحتوي على بيانات التدريب من PrimeVul وSVEN وSecCodePLT مع المزيد من CWEs (يمكن استخدام هذه المجموعة لاحقًا لتدريب نماذج أكبر)
      • datasets/noisy_dataset/test: مجموعة اختبار صغيرة من PrimeVul تم التحقق منها بواسطة إنسان
    • datasets/test
      • datasets/test/test_clean: بيانات الاختبار من SVEN وSecCodePLT وJuliet؛ مع CWEs خارج التوزيع (OOD) غير المدرجة في مجموعة التدريب
      • datasets/test/test_primevul_pair: بيانات اختبار PrimeVul الأصلية
  • إحصائيات مجموعة البيانات؛ يمكن تشغيل vulscan/data_process/data_utils/get_cwe_stat.py للحصول على الرسم البياني للمجموعة
DatasetLanguageTrain/testCWE# Benign# Vuln.average length
Clean (seccodeplt)PythonTrain2012811281741
Clean (juliet)C/C++Train22171616533689
Hard (primevul filtered)C/C++Train26271729524689
Long Context (Oss-fuzz)C/C++Train347560412761
Simple (seccodeplt)PythonTest24 (6 ood)7474814
Simple (juliet)C/C++Test38 (14 ood)3583762575
Hard (PrimeVul, SecLLMHolmes)C/C++Test13 (5 ood)1451524545
Long Context (Oss-fuzz)C/C++Test3 (0 ood)032018929
primevul test (noisy)C/C++Test56 (34 ood)4214225341

🤔 توليد بيانات الاستدلال للتدريب

بعد إنشاء مجموعات البيانات، سنقوم بتوليد بيانات الاستدلال لمجموعة التدريب الخاصة بنا. سوف نستعلم من نموذجي الاستدلال DeepSeek-r1 وQwQ لتوليد بيانات الاستدلال وتصفية تلك التي تحتوي على سلاسل استدلال طويلة جدًا. الكود الخاص بتوليد بيانات الاستدلال موجود في vulscan/data_process/generate_reasoning وسيتم حفظ بيانات الاستدلال في datasets/reasoning_data.

cd vulscan/data_process/generate_reasoning
تنزيل الأداة