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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
qlcoder — إطار عامل لتوليف استعلامات CodeQL | Kitploit
أدوات/GitHubGitHub/neuralprogram/qlcoder
التحليل الثابتماسحات الثغرات الأمنيةتحليل الثغرات الأمنيةتحليل الكودالأوراق والأبحاثالهندسة العكسية بمساعدة الذكاء الاصطناعي
GitHubneuralprogram/qlcoder

qlcoder

إطار عامل لتوليف استعلامات CodeQL

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

الأكثر شعبية

عرض الكل →

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

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

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

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

QLCoder

إطار عمل وكيل لتوليد استعلامات CodeQL

جدول المحتويات

  • نظرة عامة
  • التثبيت
    • Docker (موصى به)
    • التثبيت المحلي (Linux)
  • الاستخدام
  • بدء سريع
  • أدوات التطوير
  • أمثلة
  • بيئة الورقة البحثية
  • المساهمات
  • الفريق
  • الاستشهاد
  • المشاريع المرتبطة

نظرة عامة

QLCoder Iterative Refinement

QLCoder هو إطار عمل لاستخدام نماذج اللغة الكبيرة (LLMs) لتوليد استعلامات CodeQL شاملة لاكتشاف الثغرات الأمنية. بالنظر إلى بيانات تعريف CVE موجودة، ونموذج لغوي كبير، ووكيل برمجي، يقوم QLCoder بتوليد استعلام CodeQL بشكل تكراري لاكتشاف الـ CVE الموجود. الاستعلام الابتدائي هو قالب استعلام مسار CodeQL يتم تعبئته بواسطة AST مستخرج من الـ diff. أثناء توليد الاستعلام، يمتلك الوكيل البرمجي أدوات للتفاعل مع قاعدة بيانات RAG وخادم لغة CodeQL. بعد ذلك، يمكن استخدام الاستعلام لتحليل متعدد المتغيرات، أو اختبار الانحدار، أو كدليل لكتابة استعلامات CodeQL.

التثبيت

Docker (موصى به)

الخطوة 1: تثبيت CodeQL

ملاحظة - في الورقة البحثية، تم استخدام إصدار CodeQL 2.22.2. ومع ذلك، يمكن استخدام أي إصدار (وأي لغة). يخزن QLCoder حزم QL الخاصة بإصدار CodeQL المحلي في قاعدة البيانات المتجهة. يتم تكوين المسارات في .env.

قم بتنزيل إصدار مناسب من حزمة CodeQL Action من صفحة إصدارات CodeQL Action.

  • للإصدار الأحدث: قم بزيارة أحدث إصدار وقم بتنزيل الحزمة المناسبة لنظام التشغيل الخاص بك:

    • codeql-bundle-osx64.tar.gz لنظام macOS
    • codeql-bundle-linux64.tar.gz لنظام Linux
  • لإصدار محدد (مثل 2.22.2): انتقل إلى صفحة إصدارات CodeQL Action، وابحث عن الإصدار الموسوم بـ codeql-bundle-v2.22.2، وقم بتنزيل الحزمة المناسبة لمنصتك.

قم بفك الضغط إلى ~/codeql (أو مسار آخر — قم بتحديث CODEQL_HOME في .env وفقًا لذلك):

root@kitploit:~
tar -xzf codeql-bundle-<platform>.tar.gz -C ~/

الخطوة 2: تثبيت خادم CodeQL LSP MCP

قم باستنساخ خادم CodeQL LSP MCP وبناؤه.

root@kitploit:~
git clone https://github.com/neuralprogram/codeql-lsp-mcp ~/codeql-lsp-mcp
cd ~/codeql-lsp-mcp
npm install
npm run build

الخطوة 3: تكوين وبدء الخدمات

root@kitploit:~
cp .env.example .env
echo "APP_UID=$(id -u)" >> .env
echo "APP_GID=$(id -g)" >> .env

قم بتعبئة مفتاح API الخاص بك ومسارات CodeQL في .env:

root@kitploit:~
ANTHROPIC_API_KEY=...

# مسارات حزم QL تعتمد على إصدار CodeQL الخاص بك.
# ابحث عن أرقام الإصدارات باستخدام:
#   ls ~/codeql/qlpacks/codeql/java-queries/   → استخدمها لـ SECURITY_QLPACK_PATH
#   ls ~/codeql/qlpacks/codeql/java-all/        → استخدمها لـ LIBRARY_QLPACK_PATH
SECURITY_QLPACK_PATH=~/codeql/qlpacks/codeql/java-queries/<version>/Security/CWE
LIBRARY_QLPACK_PATH=~/codeql/qlpacks/codeql/java-all/<version>/semmle/code/java

ثم قم ببدء تطبيق QLCoder وChromaDB:

root@kitploit:~
docker compose up -d

الخطوة 4: استرجاع مستودعات CVE

يجب أن يكون الـ CVE مدرجًا في data/project_info.csv. يقوم هذا باستنساخ المستودع عند الالتزام الذي يحتوي على الخطأ وتوليد diff الإصلاح.

root@kitploit:~
docker compose run --rm app python3 scripts/get_cve_repos.py --cve CVE-2025-27818
# أو عدة CVEs دفعة واحدة:
docker compose run --rm app python3 scripts/get_cve_repos.py --cves CVE-2025-27818,CVE-2025-0851
# معالجة CVEs من ملف (معرف CVE واحد في كل سطر)
docker compose run --rm app python3 scripts/get_cve_repos.py --cve-file cves.txt
# معالجة جميع CVEs
docker compose run --rm app python3 scripts/get_cve_repos.py --all
# فرض إعادة توليد الـ diffs الموجودة
docker compose run --rm app python3 scripts/get_cve_repos.py --cve CVE-2018-9159 --force

الخطوة 5: إنشاء قواعد بيانات CodeQL

يتم إنشاء قواعد البيانات باستخدام --build-mode=none — لا حاجة لأدوات البناء.

root@kitploit:~
# لبناء قواعد بيانات CodeQL لـ CVE محدد
docker compose run --rm app python3 scripts/build_codeql_dbs.py --cve-id CVE-2025-27818

يقوم هذا بإنشاء cves/CVE-2025-27818/CVE-2025-27818-vul و cves/CVE-2025-27818/CVE-2025-27818-fix.

root@kitploit:~
# لبناء قواعد بيانات CodeQL لجميع مستودعات CVE المسترجعة
docker compose run --rm app python3 scripts/build_codeql_dbs.py

الخطوة 6: تعبئة قاعدة بيانات RAG

قم بتشغيل هذه البرامج النصية لتعبئة قاعدة البيانات المتجهة. codeql_docs_fetcher.py و cwe_fetcher.py هما إعداد لمرة واحدة؛ يجب إعادة تشغيل cves_fetcher.py بعد إضافة CVEs جديدة.

root@kitploit:~
docker compose run --rm app python3 scripts/codeql_docs_fetcher.py
docker compose run --rm app python3 scripts/cwe_fetcher.py
docker compose run --rm app python3 scripts/cves_fetcher.py

التثبيت المحلي (Linux)

الخطوة 1: تثبيت CodeQL

ملاحظة - في الورقة البحثية، تم استخدام إصدار CodeQL 2.22.2. ومع ذلك، يمكن استخدام أي إصدار (وأي لغة). يخزن QLCoder حزم QL الخاصة بإصدار CodeQL المحلي في قاعدة البيانات المتجهة. يتم تكوين المسارات في .env.

قم بتنزيل إصدار مناسب من حزمة CodeQL Action من صفحة إصدارات CodeQL Action.

  • للإصدار الأحدث: قم بزيارة أحدث إصدار وقم بتنزيل الحزمة المناسبة لنظام التشغيل الخاص بك:

    • codeql-bundle-linux64.tar.gz لنظام Linux
  • لإصدار محدد (مثل 2.22.2): انتقل إلى صفحة إصدارات CodeQL Action، وابحث عن الإصدار الموسوم بـ codeql-bundle-v2.22.2، وقم بتنزيل الحزمة المناسبة لمنصتك.

بعد التنزيل، قم بفك ضغط الأرشيف في الدليل الجذر للمشروع:

root@kitploit:~
tar -xzf codeql-bundle-<platform>.tar.gz

يجب أن يؤدي هذا إلى إنشاء دليل فرعي codeql/ يحتوي على الملف التنفيذي codeql بداخله.

أضف مسار هذا الملف التنفيذي إلى متغير البيئة PATH الخاص بك:

root@kitploit:~
export PATH="$PWD/codeql:$PATH"

الخطوة 2: تثبيت خادم CodeQL LSP MCP

قم باستنساخ خادم CodeQL LSP MCP وبناؤه.

root@kitploit:~
git clone https://github.com/neuralprogram/codeql-lsp-mcp
cd codeql-lsp-mcp
npm install
npm run build

الخطوة 3: إعداد بيئة Conda

root@kitploit:~
conda env create -f environment.yml
conda activate qlcoder

الخطوة 4: تكوين .env

root@kitploit:~
cp .env.example .env

قم بتعبئة مفتاح API الخاص بك ومسارات CodeQL في .env:

root@kitploit:~
ANTHROPIC_API_KEY=...
CODEQL_HOME=~/codeql
CODEQL_LSP_MCP_HOME=~/codeql-lsp-mcp

# مسارات حزم QL تعتمد على إصدار CodeQL الخاص بك.
# ابحث عن أرقام الإصدارات باستخدام:
#   ls ~/codeql/qlpacks/codeql/java-queries/   → استخدمها لـ SECURITY_QLPACK_PATH
#   ls ~/codeql/qlpacks/codeql/java-all/        → استخدمها لـ LIBRARY_QLPACK_PATH
SECURITY_QLPACK_PATH=~/codeql/qlpacks/codeql/java-queries/<version>/Security/CWE
LIBRARY_QLPACK_PATH=~/codeql/qlpacks/codeql/java-all/<version>/semmle/code/java

الخطوة 5: استرجاع مستودعات CVE

يجب أن يكون الـ CVE مدرجًا في data/project_info.csv. يقوم هذا باستنساخ المستودع عند الالتزام الذي يحتوي على الخطأ وتوليد diff الإصلاح.

root@kitploit:~
python3 scripts/get_cve_repos.py --cve CVE-2025-27818
# أو عدة CVEs دفعة واحدة:
python3 scripts/get_cve_repos.py --cves CVE-2025-27818,CVE-2025-0851
# معالجة CVEs من ملف (معرف CVE واحد في كل سطر)
python3 scripts/get_cve_repos.py --cve-file cves.txt
# معالجة جميع CVEs
python3 scripts/get_cve_repos.py --all
# فرض إعادة توليد الـ diffs الموجودة
python3 scripts/get_cve_repos.py --cve CVE-2018-9159 --force

الخطوة 6: إنشاء قواعد بيانات CodeQL

يتم إنشاء قواعد البيانات باستخدام --build-mode=none — لا حاجة لأدوات البناء.

root@kitploit:~
# لبناء قواعد بيانات CodeQL لـ CVE محدد
python3 scripts/build_codeql_dbs.py --cve-id CVE-2025-27818
root@kitploit:~
# لبناء قواعد بيانات CodeQL لجميع مستودعات CVE المسترجعة
python3 scripts/build_codeql_dbs.py 

يقوم هذا بإنشاء cves/CVE-2025-27818/CVE-2025-27818-vul و cves/CVE-2025-27818/CVE-2025-27818-fix.

الخطوة 7: بدء ChromaDB

قم ببدء ChromaDB في محطة طرفية منفصلة وأبقِه قيد التشغيل لهذه الخطوة وعند تشغيل الوكيل.

root@kitploit:~
chroma run --path data/chroma_db

الخطوة 8: تعبئة قاعدة بيانات RAG

قم بتشغيل هذه البرامج النصية لتعبئة قاعدة البيانات المتجهة. codeql_docs_fetcher.py و cwe_fetcher.py هما إعداد لمرة واحدة؛ يجب إعادة تشغيل cves_fetcher.py بعد إضافة CVEs جديدة.

root@kitploit:~
python3 scripts/codeql_docs_fetcher.py
python3 scripts/cwe_fetcher.py
python3 scripts/cves_fetcher.py

بدء سريع

بعد اتباع تعليمات التثبيت، يشرح البدء السريع مثالًا على توليد استعلام CodeQL لـ CVE معين.

  1. استرجع مستودع CVE وdiff إصلاح CVE.
root@kitploit:~
python3 scripts/get_cve_repos.py --cve CVE-2025-27818
  1. أنشئ قواعد بيانات CodeQL للـ CVE.
root@kitploit:~
python3 scripts/build_codeql_dbs.py --cve-id CVE-2025-27818
  1. قم بتعبئة أو تحديث قاعدة بيانات RAG.
root@kitploit:~
python3 scripts/cves_fetcher.py
  1. قم بتشغيل خط الأنابيب.
root@kitploit:~
./run_cve.sh CVE-2025-27818

يمكن تمرير خيارات إضافية بعد معرف CVE:

root@kitploit:~
./run_cve.sh CVE-2025-27818 --model sonnet-4.5 --max-iteration 10

الاستخدام

فيما يلي التكوينات المتاحة لـ QLCoder.

المهلة: تحتوي كل نافذة سياق وكيل على مهلة shell افتراضية (مثل 300 ثانية). قم بزيادة المهلة في طريقة التنفيذ الخاصة بالخلفية ذات الصلة إذا لزم الأمر عند مواجهة أخطاء "Context window failed".

ملاحظة: يتم اختبار دعم الوكيل مقابل الإصدارات المدرجة في بيئة الورقة البحثية. قد تتطلب الإصدارات الأحدث من الوكلاء البرمجيين تحديثات للخلفية. نرحب بطلبات السحب (PRs) التي تضيف دعمًا للإصدارات الأحدث، والوكلاء البرمجيين الآخرين، والمزيد من النماذج!

النماذج (--model): sonnet-4 (الافتراضي)، sonnet-4.5 (Claude)؛ gemini-2.5-pro، gemini-2.5-flash (Gemini)؛ gpt-5 (Codex)

الوكلاء (--agent): claude (الافتراضي)، gemini (Gemini CLI)، codex (نماذج OpenAI والنماذج مفتوحة المصدر)

أوضاع الاستئصال (--ablation-mode):

الوضعالوصفالوكلاء المتاحون
fullجميع أدوات QLCoder مفعلة (الافتراضي) واستخراج ASTClaude Code، Codex (GPT، GPT-OSS)، Gemini
no_toolsبدون أدوات وبدون استخراج ASTClaude Code، Codex (GPT، GPT-OSS)، Gemini
no_lspبدون أدوات CodeQL LSPClaude Code
no_docsبدون استرجاع وثائق CodeQLClaude Code
no_astبدون استخراج AST من الـ diffClaude Code

ملاحظات خاصة بالنموذج (GPT-5)

بشكل افتراضي، قمنا بتعيين جهد الاستدلال إلى متوسط. يمكنك تجاوز هذا في codex_backend.py.

وضع بدون أدوات، بدون وثائق (تفاصيل الورقة البحثية)

عند عدم استخدام Chroma لجلب وصف CVE، يتم حقن وصف تم جلبه مسبقًا مباشرة في المطالبة عبر task.cve_description. استخدم scripts/cves_fetcher.py لتعبئة ملف JSON محلي للأوصاف:

root@kitploit:~
python scripts/cves_fetcher.py --descriptions-file data/cve_descriptions.json 

يقوم الملف بتعيين معرفات CVE إلى سلاسل وصف CVE الخاصة بها ويتم الإلحاق به في كل تشغيل (يتم تخطي الإدخالات الموجودة). عند التشغيل باستخدام --ablation-mode no_tools أو --ablation-mode no_docs، يقوم QLCoder تلقائيًا بتحميل هذا الملف وتعيين task.cve_description للـ CVE الذي يتم تحليله.

أدوات التطوير

الأدوات التالية موصى بها أثناء استخدام QLCoder:

حذف المجموعات من تشغيلات QLCoder - لتنظيف Chroma، إليك برنامج نصي لحذف المجموعات من استخدام QLCoder.

chromadb-ops - أداة سطر أوامر لفحص وصيانة Chroma.

root@kitploit:~
# مفيدة لتنظيف chroma
chops db clean data/chroma_db

أمثلة

أمثلة على استعلامات QLCoder المولدة

  • Java
  • C

تكوينات QLCoder MCP

فيما يلي أمثلة على تكوينات MCP عند استخدام QLCoder. يجب أن يكون التكوين مشابهًا لهذه الملفات في مساحة عمل الوكيل.

  • Claude Code
  • Codex
  • Gemini CLI

بيئة الورقة البحثية

تم استخدام الإصدارات التالية لإنتاج النتائج في ورقة QLCoder البحثية.

الأداةالإصدار
CodeQL2.22.2
Claude Code1.0.120
Gemini CLI0.6.0
Codex CLI0.38.0

المساهمات

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

الفريق

QLCoder هو جهد تعاوني بين باحثين في جامعة كورنيل، وجامعة جونز هوبكنز، وجامعة بنسلفانيا. يرجى التواصل معنا إذا كان لديك أي أسئلة.

Claire Wang - طالبة دكتوراه في علوم الحاسوب بجامعة بنسلفانيا

Ziyang Li - أستاذ في جامعة جونز هوبكنز

Saikat Dutta - أستاذ في جامعة كورنيل

Mayur Naik - أستاذ في جامعة بنسلفانيا

الاستشهاد

فكر في الاستشهاد بورقتنا البحثية ICLR'26:

root@kitploit:~
@misc{wang2025qlcoderquerysynthesizerstatic,
      title={QLCoder: A Query Synthesizer For Static Analysis of Security Vulnerabilities}, 
      author={Claire Wang and Ziyang Li and Saikat Dutta and Mayur Naik},
      year={2025},
      eprint={2511.08462},
      archivePrefix={arXiv},
      primaryClass={cs.CR},
      url={https://arxiv.org/abs/2511.08462}, 
}

رابط Arxiv

المشاريع المرتبطة

فيما يلي المشاريع المرتبطة بمؤلفي QLCoder. لا تتردد في الاطلاع عليها.

  • IRIS - مصادر/مصارف محددة بواسطة LLM مضافة إلى استعلامات CodeQL الأمنية الموجودة لمستودع معين. QLCoder هو امتداد لبعض أفكار IRIS. رابط Arxiv
  • CWE-Bench-Java - معيار للثغرات الأمنية في Java يحتوي على بيانات تعريف CVE ومستودعات وتسميات مصادر/مصارف.
تنزيل الأداة