الصفحة الرئيسية الأخبار أخبار الثغرات ثغرة في كيرنل لينكس 2.6.30 تعطي المستخدم صلاحيّات جذر
ثغرة في كيرنل لينكس 2.6.30 تعطي المستخدم صلاحيّات جذر
تقييم المستخدمين: / 4
عاديممتاز 
الكاتب بشار   
الجمعة, 17 يوليو 2009 15:50

انتشر كود يستغل ثغرة في كيرنل لينكس 2.6.30 تسمح للمستخدم بتخطي الصلاحيات المحددة له والحصول على صلاحيّات جذر حتى في حال وجود SELinux , LSM , AppArmor. المثير في هذه الثغرة أنّ الكود لا يظهر أي خطأ ولا يمكن اكتشافها إلّا بعد عمل تجميع (Compile) للكود المصدري لكيرنل لينكس!

 

الكود الذي يحتوي الثغرة موجود في تطبيق /dev/net/tun.

struct sock *sk = tun->sk;  // initialize sk with tun->sk

if (!tun)
return POLLERR;  // if tun is NULL return error

المطور في الكود أعلاه قام بتهيئة المتغير sk لقيمة يمكن أن تكون NULL. ثم يقوم بفحص القيمة بعد ذلك بعدّة أسطر فإذا كانت 0 (NULL) سوف يقوم بإرجاع خطأ.

هذا الكود سوف يظهر صحيح... ولكن حين يبدأ المجمع بالعمل سيرى أن المتغير قد تمّ تهيئته وبالتالي فهو لا يقرأ الجملة الشرطيّة بل سيزيلها من الكود الناتج. بعبارة أخرى المجمع هو من يقوم بخلق هذه الثغرة والتي ليس لها وجود في كود المصدر. هذا سيجعل الكيرنل تقوم بمحاولة قراءة/كنابة من 0x00000000 والذي من خلاله يمكن للمهاجم نقله لأرضية المستخدم ومن ثمّ السيطرة على النّظام.

 

فيديو يوضّح تنفيذ الثغرة:

 

 

الحل لهذه الثغرة سهل نسبيّاً حيث يمكن تعديل الكود و وضع الجملة الشرطية قبل اعطاء القيمة لـ sk.

 

للاطلاع على ترقيع الثغرة: Kernel patchwork
لمزيد من المعلومات والاطلاع على الاستغلال: Milw0rm-9191



عن الكاتب:


باحث عن المعرفة, طالب ماجستير باحث في أمن المعلومات و مدوّن يهتم في العديد من الجالات المتعلّقة بالشبكات, الحماية والأنظمة المفتوحة المصدر.

التعليقات (1)Add Comment
0
السلام عليكم
أرسلت بواسطة: Amine27 في July 20, 2009
شكرا على الشرح أخي

لكن الثغرة ليست في نواة لينوكس بل يسببها تحسين (optimization) في المصنف gcc أثناء بناء النواة، حيث أن بعض التوزيعات لم تصب بالثغرة

بالتوفيق

أضف تعليق
يجب عليك الاشتراك بالموقع لتتمكن من كتابة التعليقات, الاشتراك مجاني ويستغرق بضع ثوان فقط!
اذا كنت مشترك مسبقا في الموقع فضلاً قم بتسجيل الدخول.

busy
 

SecurityTargets