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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2022-0185-Case-Study — دراسة حالة تعليمية ودليل تطوير استغلال لـ CVE-2022-0185، وهو تجاوز سعة المخزن المؤقت في الكومة (heap) لنواة لينكس (Linux kernel) يتيح رفع الامتيازات المحلية. يشمل POC، وتصحيح QEMU، واستغلال Ubuntu مع تحليل فني مفصل. | Kitploit
أدوات/GitHubGitHub/dcheng69/cve-2022-0185-case-study
تصعيد الامتيازاتتحليل الثغرات الأمنيةالاستغلالCTFالتعلم والتعليماستغلال الملفات الثنائيةمختبرات وتدريب عملي
GitHubdcheng69/cve-2022-0185-case-study

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2022-0185-Case-Study

دراسة حالة تعليمية ودليل تطوير استغلال لـ CVE-2022-0185، وهو تجاوز سعة المخزن المؤقت في الكومة (heap) لنواة لينكس (Linux kernel) يتيح رفع الامتيازات المحلية. يشمل POC، وتصحيح QEMU، واستغلال Ubuntu مع تحليل فني مفصل.

عرض المستودع
3130منذ 2 سنواتلم تتم المراجعة بعد

CVE-2022-0185-دراسة-حالة

دراسة الحالة هذه هي نتيجة لواجب لمقرر ECE 9069: مقدمة في القرصنة : https://whisperlab.org/introduction-to-hacking/

CVE-2022-0185 نظرة عامة

CVE-2022-0185 هو ثغرة من نوع تجاوز سعة المخزن المؤقت في الكومة (heap-based buffer overflow) تم العثور عليها في الطريقة التي تتحقق بها دالة legacy_parse_param في وظيفة سياق نظام الملفات (Filesystem Context) في نواة لينكس من طول المعاملات المقدمة. يمكن لمستخدم محلي غير مميز (في حالة تمكين مساحات أسماء المستخدمين غير المميزة، وإلا فإنه يحتاج إلى صلاحية CAP_SYS_ADMIN في مساحة الاسم) قادر على فتح نظام ملفات لا يدعم واجهة برمجة تطبيقات سياق نظام الملفات (وبالتالي يتراجع إلى المعالجة القديمة) استغلال هذه الثغرة لرفع صلاحياته على النظام. [1]

بعد الإبلاغ عن هذه الثغرة، تم إصدار تصحيح لإصلاح هذا الخلل:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=722d94847de2

https://ubuntu.com/security/CVE-2022-0185#impact-score

هناك شرح مفصل من المستكشف: https://www.hackthebox.com/blog/CVE-2022-0185:_A_case_study

في هذا المستودع سأشرح الخطوات الأساسية والمعلومات الخلفية ذات الصلة لإعادة إنتاج هذه الثغرة. أيضًا، إذا كان هناك أي شيء غير واضح، يمكنك إرسال بريد إلكتروني لي على: [email protected]. يسعدني جدًا الإجابة على الأسئلة.

1. مقدمة

تم نشر ثغرة CVE-2022-0185 في 11/02/2022، بدرجة أساسية CVSS 3.x تبلغ 8.4 (عالية). [1] هذه الثغرة هي تجاوز سعة المخزن المؤقت في الكومة، ناتج عن تجاوز عدد صحيح غير موقع (unsigned integer underflow).

تم إدخال الثغرة في نواة لينكس الإصدار v5.1، مما أثر على جميع توزيعات لينكس ذات إصدارات نواة أعلى من 5.1. على سبيل المثال، كان Ubuntu 20.04 LTS (focal) عرضة لهذا الخلل. ومع ذلك، تم إصدار تصحيح وهو متاح منذ الإصدار 5.4.0-96.109. [3]

يسمح استغلال هذه الثغرة لمستخدم محلي غير مميز برفع صلاحياته على النظام، مما قد يعرض النظام بأكمله للخطر. [1] [2] فيما يلي تحليل مفصل لدرجة CVSS: الدرجة الأساسية: 8.4، مما يشير إلى خطر أمني كبير يتطلب اهتمامًا فوريًا. درجة التأثير: 5.9، مما يشير إلى ضرر محتمل كبير إذا تم استغلالها. تساهم قيم السرية العالية والتكامل العالي والتوفر العالي في هذه الدرجة. درجة قابلية الاستغلال: 2.5، مما يشير إلى قابلية استغلال عالية نسبيًا. يساهم متجه الهجوم المحلي والتكامل العالي والتوفر العالي في هذه الدرجة.

يقدم الجدول 1.1 والجدول 1.2 مزيدًا من المعلومات حول هذه الدرجات ومكوناتها.

شدة CVSS v3.1القيمة
الدرجة الأساسية8.4 عالية
درجة التأثير5.9
درجة قابلية الاستغلال2.5

الجدول 1.1 درجات شدة CVSS [1]

مقاييس CVSS v3.1القيمة
متجه الهجوم (AV)محلي
الصلاحيات المطلوبة (PR)لا شيء
تفاعل المستخدم (UI)لا شيء
السرية (C)عالية
التكامل (I)عالية
التوفر (A)عالية

الجدول 1.2 متجه CVSS [1]

2. الخلفية والمفاهيم ذات الصلة

2.1 تجاوز العدد الصحيح غير الموقع

2.1.1 المكمل الثنائي (Two’s Complement)

يوجد نوعان من الأعداد الصحيحة في أجهزة الكمبيوتر الحديثة: الموقعة وغير الموقعة. يتضمن تمثيل الأعداد الموقعة عادةً عملية تسمى المكمل الثنائي. [4] "يستخدم المكمل الثنائي الرقم الثنائي ذو القيمة المكانية الأكبر كإشارة للإشارة إلى ما إذا كان الرقم الثنائي موجبًا أم سالبًا" [4]

يؤدي إدخال المكمل الثنائي إلى تحويل عملية الطرح إلى جمع، وبالتالي تبسيط تصميم وتنفيذ وحدة المعالجة المركزية. يتضمن إنشاء المكمل الثنائي لعدد صحيح ثلاث خطوات: [4]

  • الخطوة 1: "البدء بالتمثيل الثنائي للرقم، مع كون البت الأكثر أهمية هو بت الإشارة"؛
  • الخطوة 2: "قلب جميع البتات"؛
  • الخطوة 3: "إضافة 1 إلى الرقم المقلوب بالكامل، وتجاهل أي تجاوزات"

يوضح الشكل 2.1.1.1 عملية التحويل في رسم تخطيطي مع مثال فعلي لتحويل "-6" إلى تنسيق المكمل الثنائي الخاص به.

twos_complement.drawio

الشكل 2.1.1.1 تحويل المكمل الثنائي

يوضح الشكل 2.1.1.2 عملية إضافة المكمل الثنائي لـ '-6' إلى '+6'. يوضح هذا كيفية استخدام المكمل الثنائي للسماح باستخدام الجمع كبديل للطرح.

twos_complement-Page-2.drawio

الشكل 2.1.1.2 الجمع باستخدام المكمل الثنائي

2.1.2 تمثيل الأرقام في ذاكرة الوصول العشوائي (RAM)

من القسم 2.1.1، نحن نفهم بالفعل ما هو المكمل الثنائي. الآن، دعنا نلقي نظرة على سيناريو تجاوز العدد الصحيح غير الموقع في أجهزة الكمبيوتر. في أجهزة الكمبيوتر الحديثة، عند استخدام أعداد غير موقعة، لا يتم التعامل مع البت الأكثر أهمية كبت إشارة؛ بدلاً من ذلك، هو جزء من الرقم غير الموقع نفسه. هذا الوضع يعني أنه عند إجراء عملية طرح باستخدام أعداد غير موقعة، يجب أن نكون حذرين، حيث قد يؤدي ذلك إلى حالة تعرف باسم تجاوز العدد الصحيح غير الموقع. [5]

يوضح الشكل 2.1.2.1 حالة طرح 6 من 5 لعدد غير موقع مكون من 8 بتات. النتيجة النهائية هي 255 بسبب التفاف العدد غير الموقع. عندما يحدث هذا التجاوز في عبارة شرطية، فلديه القدرة على تعطيل وظيفة العبارة.

twos_complement-Page-3.drawio

الشكل 2.1.2.1 تجاوز العدد الصحيح غير الموقع

2.2 ذاكرة نواة لينكس

2.2.1 الشرائح في ذاكرة الكومة (Slabs in Heap Memory)

في نواة لينكس، يُعد مُخصص الشرائح (Slab Allocator) آلية لإدارة الذاكرة تُستخدم للتخصيص والإلغاء الفعال لقطع صغيرة من الذاكرة. يوفر أداءً من خلال الحفاظ على العديد من ذاكرات التخزين المؤقت للشرائح، يحتوي كل منها على كتل ذاكرة ذات حجم ثابت. عادةً، يخصص kmalloc-32 32 بايت من الذاكرة، وهو عبارة عن شريحة kmalloc-32، بينما يخصص kmalloc-4k 4096 بايت من الذاكرة، وهو عبارة عن شريحة kmalloc-4k. [6]

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

img

الشكل 2.2.1.1 مُخصص الشرائح في لينكس [7] (مؤلف هذا الشكل هو https://leviathan.vip/)

3 التحليل الفني للثغرة

3.1 إثبات المفهوم (Proof of Concept)

إذا كنت ترغب في إعادة إنتاج العملية باستخدام نواة لينكس مترجمة ذاتيًا، فيرجى قراءة ملفات markdown التالية للحصول على المعلومات الخلفية:

  1. أولاً، اقرأ markdown حول كيفية ترجمة نواة لينكس: https://github.com/dcheng69/CVE-2022-0185-Case-Study/blob/main/compile_linux/compile.md
  2. ثم اقرأ markdown حول كيفية إعداد نظام ملفات ram لإجراء إثبات المفهوم: https://github.com/dcheng69/CVE-2022-0185-Case-Study/blob/main/ramfs/ramfs.md
  3. أخيرًا، اتبع markdown الخاص بإثبات المفهوم: https://github.com/dcheng69/CVE-2022-0185-Case-Study/blob/main/Poc/poc.md

ملاحظة:

جميع ملفات markdown وكذلك الكود والبرامج النصية موجودة في مجلدات مختلفة من هذا المستودع، كل مجلد يأتي مع ملف markdown خاص به، اقرأه قبل محاولة فعل أي شيء!

3.1.1 التجاوز غير الموقع في النواة (Unsigned Underflow in Kernel)

في القسم 2.1، شرحنا كيفية عمل التجاوز غير الموقع. الآن، سندرس وظيفة النواة التي تحتوي على هذه الثغرة.

تنزيل الأداة