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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
DirtyPipe-Exploit — إثبات المفهوم لـ CVE-2022-0847 | Kitploit
أدوات/GitHubGitHub/karanlvm/dirtypipe-exploit
تصعيد الامتيازاتتحليل الثغرات الأمنيةالاستغلالالأوراق والأبحاثالتعلم والتعليماستغلال الملفات الثنائية
GitHubkaranlvm/dirtypipe-exploit

DirtyPipe-Exploit

إثبات المفهوم لـ CVE-2022-0847

عرض المستودع
21منذ 10 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

CSE 5380: ورقة أمن المعلومات CVE-2022-0847 (Dirty Pipe)

بقلم

Karan Vasudevamurthy (UTA ID: 1002164438)

ما هو CVE؟

قائمة الثغرات والتعرضات الشائعة (CVE) هي قائمة بالثغرات والتعرضات الأمنية للمعلومات التي تم الكشف عنها علنًا. قدمت مؤسسة MITRE نظام CVE في عام 1999 لتحديد وتصنيف الثغرات في البرمجيات والبرامج الثابتة (firmware). MITRE هي منظمة غير ربحية تدير مراكز بحث وتطوير ممولة اتحاديًا في الولايات المتحدة. يهدف CVE إلى تسهيل مشاركة المعلومات حول الثغرات المعروفة بحيث يمكن تحديث خطط الأمن السيبراني لتعكس أحدث القضايا ونقاط الضعف الأمنية. للقيام بذلك، يقوم CVE بتعيين معرّف فريد لكل ثغرة أو تعرض. وذلك من خلال معرّفات CVE، والتي تُعرف أيضًا بأسماء CVE أو أرقام CVE. نظام تسجيل الثغرات الشائع (CVSS) هو مجموعة من المعايير المفتوحة لتعيين رقم لثغرة معينة لتقييم مدى خطورتها. يتراوح نطاق درجة CVSS من 0.0 إلى 10.0. تزداد درجة الخطورة الأمنية كلما زاد الرقم. يتم تنسيق كل معرّف CVE بالشكل CVE-YYYY-NNNNN. جزء YYYY هو السنة التي تم فيها تعيين معرّف CVE أو السنة التي تم فيها الكشف عن الثغرة للعامة.

ما هي الأنابيب؟

في سياق CVE-2022-0847، من الأهمية بمكان فهم الأعمال الداخلية للأنابيب، ولا سيما السمات المرتبطة بمخزن الأنبوب المؤقت (pipe buffer). تساعد الأنابيب في Linux على نقل البيانات بين العمليات، حيث يصبح مخرج إحدى العمليات مدخلًا لعملية أخرى. تسهّل هذه الآلية التواصل والتنسيق بين العمليات المختلفة التي تعمل على النظام. الأنابيب في Linux أحادية الاتجاه، مما يعني أن البيانات تتدفق في اتجاه واحد فقط. يتكون مخزن الأنبوب المؤقت عادةً من بنية بيانات ثابتة الحجم من نوع "أولًا داخل أولًا خارج" (FIFO) تحتفظ مؤقتًا بالبيانات التي يتم نقلها بين العمليات. عندما تكتب عملية ما بيانات إلى أنبوب، يتم تخزينها في المخزن حتى تقرأها عملية أخرى. بمجرد قراءة البيانات، يتم إزالتها من المخزن، مما يسمح بكتابة بيانات جديدة.

الثغرة

بالنسبة إلى CVE-2022-0847، من المهم فهم وظيفتين داخل مخزن الأنبوب المؤقت-

  1. copy_page_to_iter_pipe: هذه الوظيفة مسؤولة عن نسخ البيانات من صفحة إلى مكرر (iterator) مرتبط بمخزن الأنبوب المؤقت. في سياق التواصل بين العمليات عبر الأنابيب، عندما تكتب إحدى العمليات بيانات إلى أنبوب، يجب نسخها إلى مخزن الأنبوب المؤقت حتى تتمكن عملية أخرى من قراءتها. تسهّل وظيفة "copy_page_to_iter_pipe" عملية النسخ هذه، مما يضمن نقل البيانات بشكل صحيح وفعال بين العمليات. داخل هذه الوظيفة، تُستخدم معلمة "flags" لتحديد أو التحكم في سمات أو سلوكيات معينة تتعلق بعملية النسخ. قد تتضمن هذه العلامات خيارات مثل ما إذا كان يجب إجراء فحوصات أو تحقق إضافي، أو كيفية التعامل مع أنواع معينة من البيانات، أو ما إذا كان يجب تطبيق تحسينات لتحقيق الكفاءة.
  2. push_pipe: تشارك وظيفة "push_pipe" في دفع البيانات إلى مخزن الأنبوب المؤقت. عندما تكتب عملية بيانات إلى أنبوب، يجب إدراج البيانات في مخزن الأنبوب المؤقت، حيث يمكن بعد ذلك قراءتها بواسطة عملية أخرى. تتولى وظيفة "push_pipe" مسؤولية التعامل مع عملية الإدراج هذه، مما يضمن وضع البيانات بشكل صحيح في المخزن وإتاحتها للقراءة من قبل العمليات الأخرى.

صفحة | 1

اكتشف Max Kellermann أن نواة Linux تعاملت بشكل غير صحيح مع أنابيب Unix. تنشأ الثغرة بسبب عدم كفاية تهيئة سمات معينة، وتحديدًا معلمة "flags"، داخل وظيفتي "copy_page_to_iter_pipe" و"push_pipe". يؤدي هذا الإغفال إلى احتمالية تعيين قيم قديمة أو غير صحيحة للعلامات، مما قد يعرض أمان النظام وسلامته للخطر. يمكن لمستخدم محلي غير مميز استغلال هذا الخلل لكتابة بيانات على الصفحات الموجودة في ذاكرة التخزين المؤقت للصفحات والمدعومة بملفات للقراءة فقط، وبالتالي رفع صلاحياته على النظام.

منهجية الهجوم

إنها مشابهة لثغرة CVE-2016-5195 "Dirty Cow" لكنها أسهل في الاستغلال. يتطلب استغلال CVE-2022-0847 وصولًا محليًا إلى النظام المستهدف ويؤثر على إصدارات نواة Linux الأحدث من 5.8. يمكننا إنشاء مخازن أنابيب جديدة مع تعيين علامة PIPE_BUF_FLAG_CAN_MERGE بشكل غير صحيح بسبب عدم وجود تهيئة مناسبة. تتحكم هذه العلامة في دمج الكتابات في مخزن الأنبوب المؤقت، وبالتالي تسمح بالكتابة على صفحة موجودة تم إدخالها (spliced) في الأنبوب. إذا كان الملف يسمح بهذه الصفحة المُدخلة، فسيظهر التعديل في العرض المشترك على مستوى النظام للملف في الذاكرة. أي عملية مسح لاحقة لذاكرة التخزين المؤقت ستتجاهل إعدادات أذونات Linux الحالية وتنسخ البيانات المعدلة إلى القرص. من شأن ذلك أن يمكّن مستخدمًا غير مميز من تغيير محتويات معينة لملف (سواء على القرص أو في الذاكرة)، حتى لو كان الملف محميًا من التعديل فقط بواسطة ضوابط وصول للقراءة فقط مثل SELinux، أو أذونات Linux القياسية، أو التحكم المتقدم في الوصول، أو الملفات غير القابلة للتغيير. وبالتالي يمكننا الافتراض أن المهاجم سيكون أي مستخدم محلي غير مميز يمتلك معرفة أساسية بأنظمة Linux والقدرة على تنفيذ تعليمات برمجية خبيثة. يمكن لمثل هذا الفرد رفع صلاحياته وربما اختراق النظام بأكمله، مما يشكل خطرًا أمنيًا كبيرًا.

إثبات المفهوم

فيما يلي الخطوات التي اتبعتها لاستغلال CVE-2022-0847 على جهاز افتراضي يعمل بنظام Linux.

  1. التحقق مما إذا كان توزيع Linux لديك قابلاً للاستغلال-

    أي نواة Linux أحدث من 5.8 متأثرة. ومع ذلك، لا يمكن استغلال الإصدارات 5.16.11 و5.15.25 و5.10.102 لثغرة CVE-2022-0847. لمعرفة إصدار النواة لديك، يمكننا ببساطة تشغيل *uname -r*. يمكنك أيضًا تشغيل البرنامج النصي bash إذا لم تكن متأكدًا مما إذا كان النظام المستهدف عرضة للثغرة أم لا.

  2. تنزيل نواة Linux المناسبة-

    من أجل العرض التوضيحي، قررت استخدام Ubuntu 20.04.1 LTS. لكن هذا الإصدار من Ubuntu يعمل حاليًا على نواة Linux 5.15 ولا يمكن استغلال CVE-2022-0847 على هذا الإصدار من النواة. لتنزيل نواة Linux 5.8، يمكننا ببساطة تشغيل *sudo apt install linux-image-5.8.0-63-generic linux-headers-5.8.0-63-generic*

  3. تنزيل الاستغلال-

    يمكن العثور على الاستغلال على GitHub. وهو يوضح كيفية الكتابة فوق أي محتويات ملف في ذاكرة التخزين المؤقت للصفحات، حتى لو لم يُسمح بالكتابة على الملف، أو كان غير قابل للتغيير، أو موجودًا على وحدة تخزين للقراءة فقط. يمكنك أيضًا تشغيل *git clone[ https://github.com/karanlvm/Infosec.git* ](https://github.com/karanlvm/Infosec.git%60)*في الطرفية.

  4. نسخ ملف passwd الأصلي-

    يمكننا تشغيل *cp /etc/passwd /tmp/passwd.bak*. سيساعدنا هذا في تحديد الفرق في ملف passwd قبل تشغيل الاستغلال وبعده.

  5. تجميع الاستغلال-

    من أجل تجميع الاستغلال بنجاح، ستحتاج إلى تثبيت GCC. يمكنك تثبيت GCC باستخدام *sudo apt-get install gcc*. لتجميع الاستغلال، يمكنك تشغيل

القيود

هناك قيدان رئيسيان لهذا الاستغلال:

  1. لا يمكن أن تكون الإزاحة على حد صفحة (يجب كتابة بايت واحد على الأقل قبل الإزاحة)
  2. لا يمكن للكتابة أن تتجاوز حد صفحة. وهذا يعني أن الحمولة يجب أن تكون أقل من 4096 بايت (حجم الصفحة).

الحالة الحالية والمعالجة

اعتبارًا من 2024-01-12، تبلغ احتمالية نشاط الاستغلال في الثلاثين يومًا القادمة 7.58% (نظام تسجيل التنبؤ بالاستغلال (EPSS)). فيما يلي درجة CVSS (نظام تسجيل الثغرات الشائع) لثغرة CVE-2022-0487:

يمكن استغلال هذه الثغرة على أي نواة Linux أحدث من 5.8. ومع ذلك، تم إصلاح الثغرة في Linux 5.16.11 و5.15.25 و5.10.102. وبالتالي، يمكننا فقط تطبيق التصحيحات أو التحديثات التي يوفرها القائمون على توزيعات Linux لإصلاح الثغرة. للقيام بذلك، يمكننا فقط تشغيل الأمرين التاليين *sudo apt update* و*sudo apt upgrade*.

المراجع

  1. “2022-0847: تم العثور على خلل في الطريقة التي كان فيها عضو ‘Flags’ في بنية مخزن الأنبوب الجديد يفتقر إلى التهيئة المناسبة في Cop.” CVE Details، www.cvedetails.com/cve/CVE-2022-0847/. تم الوصول في 24 أبريل 2024.
  2. Kellermann, Max. “ثغرة الأنبوب المتسخ (Dirty Pipe).” The Dirty Pipe Vulnerability - The Dirty Pipe Vulnerability Documentation، 7 مارس 2022، dirtypipe.cm4all.com/.
  3. MITRE Corporation*. “CVE-2022-0847.”* CVE، 3 مارس 2022، cve.mitre.org/cgi-bin/cvename.cgi?name=CVE- 2022-0847.
  4. National Institute of Standards and Technology.” CVE-2022-0847.” NVD، 3 أكتوبر 2022، nvd.nist.gov/vuln/detail/cve-2022-0847.
  5. “الأنابيب في Unix أو Linux.” GeeksforGeeks، GeeksforGeeks، 5 يوليو 2023، www.geeksforgeeks.org/piping-in-unix-or-linux/.

صفحة | 5

تنزيل الأداة
*gcc exp.c -o exp*
  • تشغيل الاستغلال-

    لتشغيل الاستغلال، المعلمات التي يجب توفيرها هي الملف للقراءة فقط، والإزاحة (offset)، وبعض الأحرف التي سيتم إدراجها. في هذه الحالة، سنشغل *./exp /etc/passwd 1 ootz:* . إذا حصلت على مخرج يقول "لقد نجح الأمر!"، فهذا يعني أننا نجحنا في استغلال ثغرة Dirty Pipe ويمكننا الآن الحصول على صلاحيات الجذر بدون كلمة المرور.

  • التبديل إلى صلاحيات الجذر-

    الآن يمكننا ببساطة تشغيل *su rootz* ويجب أن نحصل على صلاحيات الجذر. للتأكيد، يمكننا تشغيل الأمر id.