معلومات المستشار
| الاسم الكامل | GitHub | البريد الإلكتروني | LinkedIn | الموقع الإلكتروني |
|---|
| Keyvan Arasteh |
معلومات الطالب
| الاسم الكامل | رقم الطالب |
|---|
| Batuhan Seydi Çelik | 2520****1006 |
معلومات المقرر
| اسم المقرر | رمز المقرر | الساعات المعتمدة | المتطلبات المسبقة | الفصل الدراسي |
|---|
| اختبار الاختراق وتحليل الثغرات | BGT006 | 3 ECTS | أساسيات الشبكات، CLI لينكس | ربيع 2025-2026 |
📌 حول المشروع (CVE-2023-4863)
تم إعداد هذا المشروع لتحليل ثغرة CVE-2023-4863 (تجاوز سعة المخزن المؤقت في الكومة لمكتبة libwebp) لأغراض تعليمية، ولإظهار كيفية اكتشاف مثل هذه الحالات الشاذة في الأنظمة من جانب الدفاع (الفريق الأزرق) بشكل عملي.
تفاصيل الثغرة
- معرف CVE: CVE-2023-4863
- المكون المستهدف: libwebp (مكتبة معالجة تنسيق الصور WebP)
- نوع الثغرة: تجاوز سعة المخزن المؤقت في الكومة (Heap Buffer Overflow)
- مستوى الخطورة: حرج (CVSS 10.0)
نطاق تأثير الثغرة
أثرت هذه الثغرة بشكل مباشر على العديد من النظم البيئية في عالم الويب:
- متصفحات الويب المبنية على Chromium مثل Google Chrome وMicrosoft Edge وBrave وOpera
- تطبيقات سطح المكتب التي تستخدم بنية Electron / Chromium مثل 1Password وSignal وDiscord وSkype
- التطبيقات المحمولة ومكونات الرسوميات في أنظمة التشغيل التي تستخدم libwebp
كيف يحدث الهجوم؟
- يقوم المهاجم بإنشاء ملف WebP (بتنسيق VP8L بدون فقدان) يحتوي على جدول Huffman غير متماثل وخبيث معدة خصيصاً.
- عندما يحاول النظام المستهدف معالجة الصورة، تقوم الدالة
ReadHuffmanCodes بتخصيص مساحة في الذاكرة للجدول أقل من اللازم.
- أثناء إنشاء الجدول (
BuildHuffmanTable)، يحدث كتابة تتجاوز حدود الذاكرة المخصصة (Out-Of-Bounds Write).
- نتيجة لتجاوز الذاكرة، يمكن للمهاجم الكتابة فوق هياكل التحكم المجاورة في منطقة الكومة، مما قد يمنحه صلاحية تنفيذ التعليمات البرمجية عن بُعد (RCE).
مكونات الدفاع والاختبار (موجهة للفريق الأزرق)
استناداً إلى مبادئ الأمان، لا يتم تضمين أي كود هجومي حقيقي (exploit) في النظام. يتم اختبار الثغرة بشكل هيكلي.
src/blue_team/webp_scanner.py: يقوم بفحص هياكل أجزاء (chunks) WebP بشكل ثابت واكتشاف الأحجام غير الطبيعية.
src/blue_team/WebpValidator.java: مثال على كود جافا دفاعي يحاكي سيناريوهات رفع الملفات (file upload)، ويمنع التزوير في الحجم باستخدام منطق الفشل السريع (fail-fast)، ويعمل دون تعطل في حالة الملفات التالفة (لا يلقي استثناءات).
src/red_team/poc.py: مُنتج اختبار تعليمي لا يحتوي على أي حمولة حقيقية، ولكنه يُبلغ عن حجم جزء زائف (60MB) عن قصد لاختبار ما إذا كانت أدوات تحليل الفريق الأزرق ستنبه.
- Docker وValgrind: معمل معزول بالكامل تم إنشاؤه باستخدام
libwebp-1.3.1 المصابة. تحليل ديناميكي عبر Valgrind باستخدام سكريبت analyze_memory.sh لفحص أخطاء الذاكرة (كتابة غير صحيحة).
لوحة المعلومات على الويب
يتم تسجيل نتائج الأمان عبر نظام تسجيل JSON، ويتم تصورها بشكل غير متزامن ومباشر باستخدام لوحة تحكم الفريق الأزرق (HTML/JS/CSS) الموجودة في مجلد src/public.
عرض تجريبي للواجهة
