
اتخذ الخطوات الأولى في CodeQL لـ Python بكتابة استعلام للعثور على CVE-2024-32022
المتطلبات الأساسية • الموارد • ورشة العمل
يمكنك الاختيار بين خيارين لتشغيل تمارين ورشة العمل:
استخدم تثبيت CodeQL محلياً للعمل على تمارين ورشة العمل.
git مثبتان على جهازك المحلي.curl -L -O "https://github.com/sylwia-budzynska/codeql-workshop/releases/download/v1/test-app-db.zip" curl -L -O "https://github.com/sylwia-budzynska/codeql-workshop/releases/download/v1/kohya_ss-db.zip"
3. في VS Code: ملف -> **فتح مساحة العمل من ملف...** `vscode-codeql-starter.code-workspace`
4. تابع مع [اختيار قاعدة بيانات CodeQL](#select-codeql-database)
5. ثم [اختبر تثبيتك](#test-your-installation)
### الخيار ب: GitHub Codespace
استخدم مساحة عمل عن بُعد من GitHub Codespace للعمل على تمارين الورشة.
#### المتطلبات الأساسية
* حساب GitHub ([سجّل](https://github.com/) مجانًا)
* متصفح (يمكنك إجراء الورشة بأكملها في متصفح - هذه هي أسرع طريقة) أو [Visual Studio Code](https://code.visualstudio.com/download) (VS Code) مع تثبيت إضافة [GitHub Codespaces](https://marketplace.visualstudio.com/items?itemName=GitHub.codespaces) على جهازك المحلي.
ملاحظة: أول 120 ساعة لكل نواة من استخدام Codespace مجانية شهريًا، نستخدم مساحة عمل مع 4 أنوية لهذه الورشة نظرًا لأن 4 أنوية هو الحد الأقصى الحالي للحسابات المجانية. (إذا كان لديك حساب Pro، ننصح بالتبديل إلى جهاز بـ 8 أنوية.)
#### التعليمات
1. سجّل الدخول إلى حساب [GitHub](https://github.com/login) الخاص بك
2. اذهب إلى المستودع https://github.com/sylwia-budzynska/codeql-workshop
3. انقر على Code -> Codespaces
4. انقر على علامة الجمع (+) لإنشاء مساحة عمل جديدة.
<img src="https://assets.kitploit.com/production/public/readmes/33098/c86e537f9e7891fb6bdb5da727cae5b6ad0b2c9ac94f67854d48296f2dad89cb.png" width="439" alt="لقطة شاشة: إنشاء مساحة عمل، انقر على الجمع">
سيبدأ VS Code في متصفحك وسيتم بناء مساحة عمل عن بُعد. قد يستغرق هذا بضع دقائق.
إذا طُلب منك فتح مساحة العمل `vscode-codeql-starter.code-workspace`، انقر على "Open Workspace".
5. إذا كنت تريد استخدام VS Code محليًا، اضغط على زر الخطوط الثلاثة في الزاوية اليسرى العليا واختر "Open VS Code Desktop". قد يستغرق ظهور هذا الخيار بضع دقائق.
<img src="https://assets.kitploit.com/production/public/readmes/33098/f2c8c2fe6da80142344b17c208da31a23c3fa68a3917a124f0e2f7871b6a20f7.png" width="300" alt="لقطة شاشة: اضغط على زر الخطوط الثلاثة واختر فتح في VS Code Desktop">
6. تابع مع [اختيار قاعدة بيانات CodeQL](#select-codeql-database)
7. ثم [اختبر تثبيتك](#test-your-installation)
يمكنك رؤية مساحات العمل الخاصة بك على [github.com/codespaces](https://github.com/codespaces). سيتم إيقاف تشغيل مساحة العمل تلقائيًا بعد بضع ساعات من عدم استخدامها، ولكن لضمان عدم استخدام ساعات إضافية من الـ 120 ساعة المجانية، تذكر الانتقال إلى [github.com/codespaces](https://github.com/codespaces) > النقاط الثلاث > "Stop codespace" بعد الورشة.
#### استكشاف أخطاء التثبيت وإصلاحها
في حال ظهرت أخطاء مثل:
* `Failed to run query: Could not resolve library path for [..]`
* `Could not resolve module [..]`
* `Could not resolve type [..]`
من المحتمل جدًا أنك نسيت استنساخ الوحدات الفرعية git (أي مستودع ql). لإصلاح ذلك، قم بتشغيل `git submodule init && git submodule update --recursive`.
### اختيار قاعدة بيانات CodeQL
1. تأكد من أن مساحة العمل `vscode-codeql-starter.code-workspace` مفتوحة في VS Code.
2. انقر على أيقونة "QL" في اللوحة اليسرى للانتقال إلى عرض CodeQL.
3. انقر على "Choose Database from Archive" واختر ملف `test-app-db.zip` في جذر المستودع.
ملاحظة: في هذه المرحلة قد تواجه خطأ في VSCode مع رسالة منبثقة تطلب تثبيت CodeQL CLI. قبول هذا التثبيت يجب أن يحل المشكلة. بعد انتهاء تثبيت CLI، يجب أن تكون قادرًا على إكمال اختيار قاعدة البيانات أعلاه.
<img src="https://assets.kitploit.com/production/public/readmes/33098/65cc5790b8b49113623bc9a9b34a1be61575b05bea2428c46f83115e2271148b.png" alt="لقطة شاشة: رسالة خطأ VSCode بخصوص CodeQL">
<img src="https://assets.kitploit.com/production/public/readmes/33098/c3bf9c304d9c1f6199f591c9bcbf6e446ee4f5388ab209e30887326698129f84.png" alt="لقطة شاشة: VSCode يقوم بتثبيت CodeQL CLI">
### اختبر تثبيتك
#### المتطلبات الأساسية
تأكد من أن قاعدة بيانات CodeQL المختارة سابقًا محددة في عرض CodeQL. (انقر على "Select" إذا لم تكن كذلك)
عند تحديد قاعدة البيانات، يجب أن تبدو هكذا (لاحظ علامة الاختيار):
<img src="https://assets.kitploit.com/production/public/readmes/33098/fee6e47c0d9b0754c7ac9e29e2f0b3a721093aa5ce882615b3839a99f4862506.png" alt="لقطة شاشة: تم تحديد قاعدة بيانات CodeQL">
#### التعليمات
1. في VS Code: اذهب إلى مجلد مساحة العمل: `codeql-custom-queries-python`
2. أنشئ ملفًا جديدًا `test.ql`
3. أضف المحتوى التالي: `select "Hello World!"`
4. احفظ الملف، انقر بزر الماوس الأيمن في منطقة الملف واختر "CodeQL: Run Query on Selected Database"
5. يجب أن ترى علامة تبويب جديدة تفتح مع النتيجة "Hello World!"
## :books: الموارد
- [دروس QL](https://codeql.github.com/docs/writing-codeql-queries/ql-tutorials/)
- [دليل لغة CodeQL للغة Python](https://codeql.github.com/docs/codeql-language-guides/codeql-for-python/)
- [توثيق CodeQL](https://codeql.github.com/docs/)
- [مرجع لغة QL](https://codeql.github.com/docs/ql-language-reference/)
- [مكتبة CodeQL للغة Python](https://codeql.github.com/codeql-standard-libraries/python/)
- [الاستعلام الأساسي لرمز Python](https://codeql.github.com/docs/codeql-language-guides/basic-query-for-python-code/)
- [فئات QL](https://codeql.github.com/docs/ql-language-reference/types/#classes)
- [CodeQL من الصفر إلى الاحتراف الجزء 1: أساسيات التحليل الثابت لأبحاث الثغرات](https://github.blog/2023-03-31-codeql-zero-to-hero-part-1-the-fundamentals-of-static-analysis-for-vulnerability-research/)
- [CodeQL من الصفر إلى الاحتراف الجزء 2: البدء مع CodeQL](https://github.blog/2023-06-15-codeql-zero-to-hero-part-2-getting-started-with-codeql/)
- [CodeQL من الصفر إلى الاحتراف الجزء 3: أبحاث الأمان](https://github.blog/2024-04-29-codeql-zero-to-hero-part-3-security-research-with-codeql/)
- [CodeQL من الصفر إلى الاحتراف الجزء 4: دراسة حالة Gradio](https://github.blog/security/vulnerability-research/codeql-zero-to-hero-part-4-gradio-framework-case-study/)
- [CodeQL من الصفر إلى الاحتراف الجزء 5: تصحيح أخطاء الاستعلامات](https://github.blog/security/vulnerability-research/codeql-zero-to-hero-part-5-debugging-queries/)
## ورشة العمل
مرحبًا بكم في ورشة العمل "العثور على الثغرات باستخدام CodeQL"!
ستقدم هذه الجلسة أساسيات أبحاث الأمان والتحليل الثابت المستخدم عند البحث عن الثغرات في البرامج. سنستخدم مثالًا لثغرة بسيطة، ونسير خطوة بخطوة عبر كيفية اكتشاف CodeQL لها، ونقدم أمثلة حول كيفية استخدام الجمهور لـ CodeQL للعثور على الثغرات بأنفسهم.
قبل البدء، من المهم أن تكون جميع المتطلبات الأساسية مستوفاة حتى تتمكن من المشاركة في ورشة العمل.