Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Vulnhalla — خط أنابيب تحليل أمني آلي يقوم بتشغيل استعلامات CodeQL على مستودعات GitHub ويستخدم نماذج اللغة الكبيرة (LLMs) لتصنيف وتصفية الثغرات الحقيقية من الإيجابيات الكاذبة. | Kitploit
أدوات/GitHubGitHub/cyberark/vulnhalla
التحليل الثابتتحليل الثغرات الأمنيةتحليل الكودDevSecOpsتعلم الآلةالتعلم والتعليمأمن الذكاء الاصطناعي
GitHubcyberark/vulnhalla

Vulnhalla

خط أنابيب تحليل أمني آلي يقوم بتشغيل استعلامات CodeQL على مستودعات GitHub ويستخدم نماذج اللغة الكبيرة (LLMs) لتصنيف وتصفية الثغرات الحقيقية من الإيجابيات الكاذبة.

عرض المستودع
2014149منذ شهر واحدتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

Vulnhalla

تحليل CodeQL آلي مع تصنيف LLM

Vulnhalla

للحصول على نظرة عامة مفصلة حول البحث والدافع وراء Vulnhalla، راجع مقالة مدونة CyberArk لبحوث التهديدات الرسمية:

Vulnhalla: انتقاء الثغرات الحقيقية من كومة قش CodeQL

Vulnhalla تؤتمت مسار تحليل الأمان الكامل:

  1. جلب المستودعات للغة برمجة معينة من GitHub
  2. تنزيل قواعد بيانات CodeQL المقابلة (إذا كانت متوفرة)
  3. تشغيل استعلامات CodeQL على قواعد البيانات تلك لاكتشاف مشكلات الأمان أو جودة الكود
  4. معالجة لاحقة للنتائج باستخدام LLM (ChatGPT، Gemini، إلخ) لتصنيف المشكلات وتصفيتها

🚀 بداية سريعة

الخطوة 1: المتطلبات الأساسية

قبل البدء، تأكد من أن لديك:

Python 3.10 – 3.13 (يوصى باستخدام Python 3.11 أو 3.12)

  • Python 3.14+ غير مدعومة (تستخدم هذه الأداة grpcio الذي لا يدعم Python 3.14+)
  • التحميل من python.org
  • CodeQL CLI

    • التحميل من إصدارات CodeQL CLI
    • تأكد من أن codeql موجود في PATH، أو ستقوم بتعيين المسار في .env (انظر الخطوة 2)
  • (اختياري) رمز GitHub API

    • للحصول على حدود معدل أعلى عند تنزيل قواعد البيانات
    • احصل عليه من GitHub Settings > Tokens
  • مفتاح API لـ LLM

    • بيانات اعتماد OpenAI، Azure، Gemini، أو Bedrock (حسب المزود الذي تختاره)
  • الخطوة 2: تكوين البيئة

    كل الإعدادات موجودة في ملف واحد: .env

    1. استنساخ المستودع:
    root@kitploit:~
    git clone https://github.com/cyberark/Vulnhalla
    cd Vulnhalla
    
    1. انسخ .env.example إلى .env:
    root@kitploit:~
    cp .env.example .env # macOS / Linux
    Copy-Item .env.example .env # Windows (PowerShell)
    
    1. حرّر .env واملأ القيم الخاصة بك:

    مثال لـ OpenAI:

    root@kitploit:~
    CODEQL_PATH=codeql
    GITHUB_TOKEN=ghp_your_token_here
    PROVIDER=openai
    MODEL=gpt-4o
    OPENAI_API_KEY=your-api-key-here
    LLM_TEMPERATURE=0.2
    LLM_TOP_P=0.2
    
    # اختياري: تكوين التسجيل
    LOG_LEVEL=INFO                  # DEBUG, INFO, WARNING, ERROR
    LOG_FILE=                       # اختياري: مسار ملف السجل (مثل logs/vulnhalla.log)
    LOG_FORMAT=default              # default أو json
    # LOG_VERBOSE_CONSOLE=false     # إذا كان true، WARNING/ERROR يستخدمان التنسيق الكامل (الطابع الزمني - المسجل - المستوى - الرسالة)
    

    📖 للمرجعية الكاملة للتكوين: انظر مرجع التكوين أدناه لجميع المزودين المدعومين (OpenAI، Azure، Gemini، Bedrock)، والمتغيرات المطلوبة/الاختيارية، والأمثلة التفصيلية.

    الخطوة 3: تثبيت Poetry (موصى به: pipx)

    Windows (PowerShell):

    root@kitploit:~
    # قائمة إصدارات Python المتاحة
    py -0p
    
    # اختر أي إصدار Python مدعوم: 3.10 / 3.11 / 3.12 / 3.13
    py -3.12 -m pip install --user -U pipx
    py -3.12 -m pipx ensurepath
    # أغلق وأعد فتح الطرفية (مطلوب)
    pipx install poetry
    poetry --version
    

    macOS / Linux:

    root@kitploit:~
    # تحقق من إصدار Python
    python3 --version
    
    # استخدم أي Python مدعوم: 3.10 / 3.11 / 3.12 / 3.13
    python3 -m pip install --user -U pipx
    python3 -m pipx ensurepath
    # أعد تشغيل الطرفية (مطلوب)
    pipx install poetry
    poetry --version
    

    الخطوة 4: تثبيت التبعيات والإعداد

    Windows (PowerShell):

    root@kitploit:~
    # اختر إصدارًا واحدًا مدعومًا لديك: 3.10 / 3.11 / 3.12 / 3.13
    poetry env use 3.12  # فرض Poetry لاستخدام إصدار Python مدعوم إذا كان لديك عدة إصدارات مثبتة
    poetry install
    poetry run vulnhalla-setup
    

    macOS / Linux:

    root@kitploit:~
    # اختر إصدارًا واحدًا مدعومًا لديك: 3.10 / 3.11 / 3.12 / 3.13
    poetry env use 3.12  # فرض Poetry لاستخدام إصدار Python مدعوم إذا كان لديك عدة إصدارات مثبتة
    poetry install
    poetry run vulnhalla-setup
    

    الخطوة 5: تشغيل المسار

    root@kitploit:~
    # تحليل مستودع معين، على سبيل المثال:
    poetry run vulnhalla redis/redis
    
    # إعادة التنزيل حتى لو كانت قاعدة البيانات موجودة بالفعل
    poetry run vulnhalla redis/redis --force
    
    # عرض المساعدة
    poetry run vulnhalla --help
    

    هذا سيقوم تلقائيًا بما يلي:

    1. جلب قواعد بيانات CodeQL
    2. تشغيل استعلامات CodeQL على جميع قواعد البيانات التي تم تنزيلها
    3. تحليل النتائج باستخدام LLM وحفظها في output/results/
    4. فتح واجهة المستخدم لتصفح النتائج

    استخدام قاعدة بيانات CodeQL محلية

    إذا كان لديك بالفعل قاعدة بيانات CodeQL على القرص (على سبيل المثال، تم إنشاؤها يدويًا أو من تشغيل سابق)، يمكنك تخطي خطوة جلب GitHub باستخدام العلم --local / -l:

    Windows (PowerShell):

    root@kitploit:~
    poetry run vulnhalla --local C:\path\to\my-codeql-db
    

    macOS / Linux:

    root@kitploit:~
    poetry run vulnhalla --local /path/to/my-codeql-db
    

    ملاحظة: العلم --local يتوقع دليل قاعدة بيانات CodeQL، وليس مجلد كود مصدر. يمكنك التحقق من ذلك عن طريق التأكد من أن المجلد يحتوي على ملف codeql-database.yml.

    أوامر إضافية

    root@kitploit:~
    # فتح واجهة المستخدم لعرض النتائج الموجودة (دون تشغيل التحليل)
    poetry run vulnhalla-ui
    
    # التحقق من صحة التكوين: CodeQL, LLM, التسجيل (دون تشغيل التحليل)
    poetry run vulnhalla-validate
    
    # عرض قائمة المستودعات التي تم تحليلها وأعداد المشكلات فيها
    poetry run vulnhalla-list
    
    # تشغيل المسار النموذجي (يحلل videolan/vlc وredis/redis)
    poetry run vulnhalla-example
    

    🖥️ واجهة المستخدم (UI)

    تتضمن Vulnhalla واجهة مستخدم كاملة المواصفات لتصفح واستكشاف نتائج التحليل.

    تشغيل واجهة المستخدم

    root@kitploit:~
    poetry run vulnhalla-ui
    

    تخطيط واجهة المستخدم

    تعرض واجهة المستخدم منطقة علوية بلوحين مع شريط تحكم سفلي:

    المنطقة العلوية (جنبًا إلى جنب، قابلة لتغيير الحجم):

    • اللوحة اليسرى (قائمة المشكلات):

      • جدول بيانات يعرض: المعرف، المستودع، اسم المشكلة، الملف، قرار LLM، القرار اليدوي
      • عدد المشكلات ومؤشر الفرز
      • مربع إدخال بحث في الأسفل، يتم التحديث أثناء الكتابة (غير حساس لحالة الأحرف).
    • اللوحة اليمنى (التفاصيل):

      • قسم قرار LLM: يعرض تصنيف LLM (إيجابي حقيقي، إيجابي كاذب، أو يحتاج إلى مزيد من البيانات)
      • قسم البيانات الوصفية: اسم المشكلة، المستودع، الملف، السطر، النوع، اسم الدالة
      • قسم الكود:
        • 📌 سياق الكود الأولي (أول مقتطف كود رآه LLM)
        • 📥 كود إضافي (الكود الذي طلبه LLM أثناء المحادثة) - يظهر فقط إذا كان هناك كود إضافي
        • السطر الضعيف مُظلل باللون الأحمر
      • قسم الملخص: الإجابة/القرار النهائي لـ LLM
      • تحديد القرار اليدوي: قائمة منسدلة في الأسفل لتعيين الحكم اليدوي (إيجابي حقيقي، إيجابي كاذب، غير مؤكد، أو غير معين)

    شريط التحكم السفلي:

    • اللغة: C (اللغة الوحيدة المدعومة حاليًا)
    • قائمة تصفية حسب قرار LLM: الكل، إيجابي حقيقي، إيجابي كاذب، يحتاج إلى مزيد من المعلومات للبت
    • أزرار الإجراءات: تحديث، تشغيل التحليل
    • نص مساعدة ربط المفاتيح

    روابط المفاتيح

    • ↑/↓ - التنقل في قائمة المشكلات (صفًا تلو الآخر)
    • Tab / Shift+Tab - تبديل التركيز بين اللوحات
    • Enter - عرض التفاصيل للمشكلة المحددة
    • / - تركيز مربع إدخال البحث (في اللوحة اليسرى)
    • Esc - مسح البحث وإعادة التركيز إلى جدول المشكلات
    • r - إعادة تحميل النتائج من القرص
    • [ / ] - تغيير حجم اللوحات اليسرى/اليمنى (ضبط موضع الانقسام)
    • q - إنهاء التطبيق

    الميزات التفاعلية

    فرز الأعمدة

    • انقر على أي رأس عمود للفرز حسب هذا العمود
    • الفرز الافتراضي: حسب المستودع (تصاعدي)، ثم حسب المعرف (تصاعدي)

    اللوحات القابلة لتغيير الحجم

    • فاصل قابل للسحب بين لوحتي قائمة المشكلات والتفاصيل
    • الماوس: انقر واسحب الفاصل لتغيير الحجم
    • لوحة المفاتيح: استخدم [ لتحريك الفاصل لليسار، ] لتحريكه لليمين
    • يتم تذكر موضع الانقسام أثناء الجلسة

    📊 هيكل المخرجات

    بعد تشغيل المسار، يتم تنظيم النتائج في output/results/<LANG>/<ISSUE_TYPE>/:

    root@kitploit:~
    output/results/c/Copy_function_using_source_size/
    ├── 1_raw.json      # بيانات مشكلة CodeQL الأصلية
    ├── 1_final.json    # محادثة LLM وتصنيفه
    ├── 2_raw.json
    ├── 2_final.json
    └── ...
    

    يحتوي كل ملف *_final.json على:

    • محادثة LLM كاملة (أوامر النظام، رسائل المستخدم، ردود المساعد، استدعاءات الأدوات)
    • رمز الحالة النهائي (1337 = ضعيف، 1007 = آمن، 7331/3713 = يحتاج إلى مزيد من المعلومات)

    يحتوي كل ملف *_raw.json على:

    • بيانات مشكلة CodeQL الأصلية
    • سياق الدالة
    • مسار قاعدة البيانات (يتضمن معلومات org/repo: output/databases/<LANG>/<ORG>/<REPO>)
    • موقع المشكلة

    🛠 استكشاف الأخطاء وإصلاحها

    • CodeQL CLI غير موجود: قم بتعيين CODEQL_PATH في ملف .env الخاص بك إلى المسار الكامل لملف CodeQL التنفيذي. في Windows: يجب أن ينتهي المسار بـ .cmd (مثل C:\path\to\codeql\codeql.cmd).

    • حدود معدل GitHub: قم بتعيين GITHUB_TOKEN في ملف .env الخاص بك (احصل على الرمز من https://github.com/settings/tokens).

    • مشكلات LLM: تحقق من مفاتيح API الخاصة بك في ملف .env تطابق المزود الذي اخترته.

    • أخطاء الاستيراد في واجهة المستخدم: تأكد من أنك تشغل من الدليل الجذر للمشروع، أو استخدم python examples/ui_example.py الذي يتعامل مع إعداد المسار.


    ⚙️ مرجع التكوين

    متغيرات البيئة

    يتم إدارة جميع الإعدادات من خلال متغيرات البيئة في ملف .env الخاص بك. إليك المرجع الكامل:

    المتغيرات المطلوبة

    المتغيرمطلوب لـالوصف
    CODEQL_PATHالكلالمسار إلى ملف CodeQL التنفيذي. القيمة الافتراضية هي codeql إذا كان CodeQL في PATH. استخدم المسار الكامل إذا لم يكن في PATH (مثل C:\path\to\codeql\codeql.cmd في Windows)
    PROVIDERالكلمزود LLM: openai, azure, gemini, bedrock, anthropic, mistral, groq, openrouter, ollama, إلخ.
    MODELالكلاسم النموذج (على سبيل المثال gpt-4o, gpt-4-turbo, gemini-2.5-flash)

    المتغيرات المطلوبة الخاصة بمزود معين

    OpenAI:

    المتغيرالوصف
    OPENAI_API_KEYمفتاح API الخاص بـ OpenAI من platform.openai.com

    Azure OpenAI:

    المتغيرالوصف
    AZURE_OPENAI_API_KEY أو AZURE_API_KEYمفتاح API الخاص بـ Azure OpenAI
    AZURE_OPENAI_ENDPOINT أو AZURE_API_BASEURL نقطة النهاية الخاصة بـ Azure OpenAI (مثل https://your-resource.openai.azure.com)
    AZURE_OPENAI_API_VERSION أو AZURE_API_VERSIONإصدار API (القيمة الافتراضية: 2024-08-01-preview)

    Gemini (Google):

    المتغيرالوصف
    GOOGLE_API_KEYمفتاح Google API الخاص بك من Google AI Studio

    AWS Bedrock:

    المتغيرمطلوبالوصف
    AWS_REGION_NAMEنعممنطقة AWS (مثل us-east-1, us-west-2)
    AWS_PROFILEلا*اسم ملف تعريف AWS لمصادقة SSO/ملف بيانات الاعتماد
    AWS_ACCESS_KEY_IDلا*مفتاح الوصول AWS (إذا كنت لا تستخدم ملف تعريف)
    AWS_SECRET_ACCESS_KEYلا*المفتاح السري AWS (إذا كنت لا تستخدم ملف تعريف)
    AWS_SESSION_TOKENلارمز الجلسة لبيانات اعتماد STS المؤقتة

    * المصادقة: استخدم AWS_PROFILE أو AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY (+ AWS_SESSION_TOKEN اختياري لـ STS).

    مثال .env لـ Bedrock (SSO):

    root@kitploit:~
    PROVIDER=bedrock
    MODEL=anthropic.claude-3-5-sonnet-20241022-v2:0
    AWS_REGION_NAME=us-east-1
    AWS_PROFILE=your-profile
    

    ⚠️ المتطلبات الأساسية:

    • يجب تكوين بيانات اعتماد AWS (SSO، ملف تعريف IAM، أو مفاتيح الوصول) مع أذونات لاستدعاء نماذج Bedrock
    • لمستخدمي SSO: قم بتشغيل aws sso login --profile your-profile قبل استخدام Vulnhalla

    🔧 هام - اختيار النموذج: عند اختيار نموذج Bedrock، تأكد من أنه يدعم استدعاء الأدوات/الدوال (ليس كل نماذج Bedrock تفعل ذلك). استدعاء الأدوات هو جزء أساسي من تدفق تحليل Vulnhalla، لذا فإن اختيار نموذج متوافق يُحدث فرقًا كبيرًا في الوظائف والنتائج. النماذج المتوافقة تشمل: Claude 3.x، Mistral، أو Cohere Command R.

    المتغيرات الاختيارية

    المتغيرالقيمة الافتراضيةالوصف
    GITHUB_TOKEN-رمز GitHub API لزيادة حدود المعدل. احصل عليه من GitHub Settings > Tokens
    GITHUB_API_URLhttps://api.github.comURL API GitHub. لـ GitHub Enterprise، قم بتعيينه إلى URL API الخاص بالخادم الخاص بك (مثل https://github.your-company.com/api/v3)
    GITHUB_SSL_VERIFYtrueالتحقق من شهادة SSL. قم بتعيينه إلى false لـ GitHub Enterprise مع شهادات موقعة ذاتيًا أو شهادات CA داخلية
    LLM_TEMPERATURE0.2درجة حرارة LLM (0.0-2.0). الأقل = أكثر حتمية. موصى به: ابقِه عند 0.2
    LLM_TOP_P0.2أخذ عينات top-p لـ LLM (0.0-1.0). الأقل = أكثر تركيزًا. موصى به: ابقِه عند 0.2
    LOG_LEVELINFOمستوى التسجيل: DEBUG, INFO, WARNING, أو ERROR. يتحكم في كثافة إخراج وحدة التحكم
    LOG_FILE-مسار اختياري لملف السجل (مثل logs/vulnhalla.log). إذا تم تعيينه، تتم كتابة السجلات في كل من وحدة التحكم والملف. يستخدم تسجيل الملف مستوى DEBUG لمخرجات مفصلة
    LOG_FORMATdefaultنمط تنسيق السجل: default (قابل للقراءة البشرية)، أو json (تنسيق JSON منظم)
    LOG_VERBOSE_CONSOLEfalseإذا كان true، WARNING/ERROR/CRITICAL تستخدم التنسيق الكامل (الطابع الزمني - المسجل - المستوى - الرسالة). الافتراضي: WARNING/ERROR تستخدم التنسيق البسيط (LEVEL - message)، INFO دائمًا بسيط (message فقط)
    THIRD_PARTY_LOG_LEVELERRORمستوى السجل للمكتبات الخارجية (LiteLLM, urllib3, requests). الخيارات: DEBUG, , , . الافتراضي يثبط معظم ضوضاء الطرف الثالث

    ⚠️ هام: لا تزيد LLM_TEMPERATURE أو LLM_TOP_P إلا إذا كنت تفهم التأثير تمامًا. القيم المنخفضة تحافظ على استقرار النموذج وحتميته، وهو أمر بالغ الأهمية لتحليل الأمان. قد تؤدي القيم الأعلى إلى عدم اتساق النموذج أو إبداعه أو هلوسة النتائج.

    📝 ملاحظة: للحصول على أمثلة إضافية للتكوين، راجع ملف .env.example في جذر المشروع.

    التحقق من صحة التكوين

    يتحقق Vulnhalla من صحة تكوينك عند بدء التشغيل. إذا كانت المتغيرات المطلوبة مفقودة أو غير صالحة، سترى رسائل خطأ واضحة تشير إلى ما يجب إصلاحه.

    أخطاء التحقق الشائعة:

    • مفتاح API مفقود للمزود المحدد
    • اسم مزود غير صالح (انظر PROVIDER للقيم المدعومة)
    • نقطة نهاية Azure مفقودة (مطلوب لمزود Azure)
    • بيانات اعتماد AWS أو المنطقة مفقودة (مطلوب لمزود Bedrock)
    • مسار CodeQL غير صالح (إذا تم تعيين CODEQL_PATH ولكن الملف غير موجود)

    📝 رموز الحالة

    يستخدم LLM رموز الحالة التالية:

    • 1337: تم العثور على ثغرة أمنية (إيجابي حقيقي)
    • 1007: الكود آمن، لا توجد ثغرة (إيجابي كاذب)
    • 7331: هناك حاجة إلى مزيد من الكود/المعلومات للتحقق من الأمان
    • 3713: على الأرجح ليست مشكلة أمنية، ولكن هناك حاجة إلى مزيد من المعلومات (يستخدم مع 7331)

    تقوم واجهة المستخدم بتعيين هذه إلى:

    • 1337 ← "إيجابي حقيقي"
    • 1007 ← "إيجابي كاذب"
    • 7331 أو 3713 ← "يحتاج إلى مزيد من البيانات"

    🔧 التطوير

    تشغيل الاختبارات

    يتضمن المشروع بنية اختبار أساسية باستخدام pytest:

    root@kitploit:~
    # تشغيل جميع الاختبارات
    poetry run pytest
    
    # تشغيل مع إخراج مفصل
    poetry run pytest -v
    

    تتضمن مجموعة الاختبارات اختبارات دخان للتحقق من إعداد بنية الاختبار بشكل صحيح.

    التحقق من الأنواع

    يستخدم المشروع mypy للتحقق الثابت من الأنواع:

    root@kitploit:~
    poetry run mypy src
    

    تم تكوين التحقق من الأنواع في pyproject.toml تحت [tool.mypy]. يستخدم التكوين خط أساس محافظ مع تجاوزات لكل وحدة للسماح بالتبني التدريجي.

    تبعيات المشروع

    يتم إدارة التبعيات عبر Poetry في pyproject.toml:

    • requests - طلبات HTTP لواجهة GitHub API
    • pySmartDL - مدير تنزيل ذكي لقواعد بيانات CodeQL
    • litellm - واجهة LLM موحدة تدعم مزودين متعددين
    • python-dotenv - إدارة متغيرات البيئة
    • PyYAML - تحليل YAML لملفات حزم CodeQL
    • textual - إطار واجهة مستخدم طرفية
    • pytest - إطار اختبار (تبعية تطوير)
    • mypy - مدقق أنواع ثابت (تبعية تطوير)

    استعلامات CodeQL

    يتم تنظيم استعلامات CodeQL في data/queries/<LANG>/:

    • issues/ - استعلامات اكتشاف مشكلات الأمان
    • tools/ - استعلامات مساعدة (أشجار الدوال، الفئات، المتغيرات العامة، الماكرو)

    يحتوي كل دليل على ملف qlpack.yml يحدد حزمة CodeQL.


    📄 الترخيص

    حقوق النشر (ج) 2025 CyberArk Software Ltd. جميع الحقوق محفوظة.

    هذا المستودع مرخص بموجب رخصة Apache، الإصدار 2.0 - راجع LICENSE.txt لمزيد من التفاصيل.


    🤝 المساهمة

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


    مدونة قواعد السلوك

    يرجى قراءة واتباع مدونة قواعد السلوك. نحن ملتزمون بتوفير بيئة ترحيبية وشاملة لجميع المساهمين.


    📧 الاتصال

    لا تتردد في الاتصال بنا عبر مشكلات GitHub إذا كان لديك أي طلبات ميزات أو مشكلات في المشروع.

    تنزيل الأداة
    INFO
    WARNING
    ERROR