سمحت ثغرة PolKit بالوصول إلى الجذر في معظم توزيعات Linux

مؤخرا Qualys صدر الخبر الذي حددت نقطة ضعف (CVE-2021-4034) en مكون النظام بولكيت (المعروفة سابقًا باسم PolicyKit) ، والتي تُستخدم في التوزيعات للسماح للمستخدمين غير المتميزين بتنفيذ الإجراءات التي تتطلب حقوق وصول عالية.

عالي التأثر يسمح للمستخدم المحلي غير المتميز برفع امتيازاته إلى المستخدم الجذر والحصول على السيطرة الكاملة على النظام. هذه المشكلة تحمل الاسم الرمزي PwnKit وهي بارزة في إنتاج استغلال يعمل في الإعدادات الافتراضية على معظم توزيعات Linux.

يذكر أن توجد المشكلة في الأداة المساعدة pkexec المضمنة في PolKit، والذي يأتي مع علامة الجذر SUID وهو مصمم لتشغيل أوامر بامتيازات مستخدمين آخرين وفقًا لقواعد PolKit.

بسبب المعالجة الخاطئة للحجج من سطر الأوامر الذي تم تمريره إلى pkexec ، أ يمكن للمستخدم غير المتميز تجاوز المصادقة وتشغيل التعليمات البرمجية الخاصة بك كجذر، بغض النظر عن قواعد الوصول المعمول بها. بالنسبة للهجوم ، بغض النظر عن الإعدادات والقيود التي تم تعيينها في PolKit ، يكفي أن يتم تعيين سمة جذر SUID للملف القابل للتنفيذ باستخدام الأداة المساعدة pkexec.

لا يتحقق Pkexec من صحتها من عدد وسيطات سطر الأوامر (argc) التي تم تمريرها عند بدء العملية. افترض مطورو pkexec أن الإدخال الأول في مصفوفة argv يحتوي دائمًا على اسم العملية (pkexec) ، والإدخال الثاني إما NULL أو اسم الأمر المنفذ من خلال pkexec.

نظرًا لأن عدد الوسائط لم يُقارن بالمحتويات الفعلية للمصفوفة وكان يُفترض دائمًا أن يكون أكبر من 1 ، إذا تم تمرير مصفوفة argv فارغة إلى العملية ، وهو ما تسمح به وظيفة execve في Linux ، فقد تعامل pkexec مع NULL باعتباره الوسيطة الأولى (العملية name) ، والتالي بعد نفاد ذاكرة المخزن المؤقت ، كمحتوى الصفيف التالي.

تكمن المشكلة في أنه بعد المصفوفة argv في الذاكرة توجد مجموعة envp تحتوي على متغيرات البيئة. وهكذا ، مع مصفوفة argv فارغة ، يستخرج pkexec البيانات حول الأمر الذي يتم تنفيذه بامتيازات مرتفعة من العنصر الأول في المصفوفة بمتغيرات البيئة (argv [1] أصبح مطابقًا لـ envp [0]) ، والتي يمكن التحكم في محتواها بواسطة المهاجم.

بعد تلقي القيمة argv [1] ، يحاول pkexec تحديد المسار الكامل للملف القابل للتنفيذ باستخدام مسارات الملف في PATH ويكتب المؤشر إلى السلسلة مع المسار الكامل للعودة إلى argv [1] ، مما يؤدي إلى الكتابة فوق القيمة من متغير البيئة الأول أيضًا ، حيث إن argv [1] مطابق لـ envp [0]. من خلال معالجة اسم متغير البيئة الأول ، يمكن للمهاجم استبدال متغير بيئة آخر في pkexec ، على سبيل المثال ، استبدال متغير البيئة "LD_PRELOAD" ، وهو غير مسموح به في برامج suid ، وجعل العملية تقوم بتحميل مكتبتها المشتركة في العملية .

استغلال العمل يستخدم استبدال متغير GCONV_PATH ، والذي يستخدم لتحديد المسار إلى مكتبة تحويل الرموز التي يتم تحميلها ديناميكيًا عند استدعاء وظيفة g_printerr () ، والتي تستخدم iconv_open () في الكود الخاص بها.

من خلال إعادة تعريف المسار في GCONV_PATH ، يمكن للمهاجم إدارة تحميل ليس مكتبة iconv العادية ، ولكن مكتبته الخاصة ، التي سيتم تنفيذ برامج التشغيل الخاصة بها أثناء رسالة الخطأ في المرحلة حيث لا يزال pkexec يعمل كجذر وقبل التحقق من أذونات بدء التشغيل.

لوحظ أن ، على الرغم من أن المشكلة ناتجة عن تلف الذاكرة ، إلا أنه يمكن استغلالها بشكل موثوق ومتكرر، بغض النظر عن بنية الأجهزة المستخدمة.

تم إعداد الاستغلال تم اختباره بنجاح على Ubuntu و Debian و Fedora و CentOS، ولكن يمكن استخدامها أيضًا في التوزيعات الأخرى. الاستغلال الأصلي غير متاح للجمهور بعد ، مما يشير إلى أنه تافه ويمكن إعادة إنشائه بسهولة بواسطة باحثين آخرين ، لذلك من المهم تثبيت تحديث الإصلاح العاجل في أسرع وقت ممكن على أنظمة متعددة المستخدمين.

Polkit متاح أيضًا لأنظمة BSD و Solaris ، ولكن لم يتم استكشافه للاستغلال. ما هو معروف هو أنه لا يمكن تنفيذ الهجوم على OpenBSD ، لأن نواة OpenBSD لا تسمح بتمرير قيمة argc فارغة عند استدعاء execve ().

كانت المشكلة موجودة منذ مايو 2009 عندما تمت إضافة الأمر pkexec. لا يزال الإصلاح الخاص بالثغرة الأمنية في PolKit متاحًا كتصحيح (لم يتم تشكيل إصدار الإصلاح) ، ولكن منذ أن تم إخطار مطوري التوزيع بالمشكلة مسبقًا ، أصدرت معظم التوزيعات تحديثًا في نفس الوقت. من معلومات الضعف.

أخيرا إذا كنت مهتمًا بمعرفة المزيد عنها، يمكنك التحقق من التفاصيل في الرابط التالي.


اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.