وجدوا طريقة لتجاوز SELinux

تجنب

التحايل على سياسات SELinux بشكل فعال

في نهاية مايو الماضي ، شون فيش باحث أمني جالمعلومات المشتركة وفي مدونته حول الطريقة التي وجدها لتجاوز وحدة أمان SELinux.

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

لمن لا يعرفون SELinux (لينكس المحسن للأمان) يجب أن يعلم أن هذا البريدإنها وحدة أمان لنواة Linux ، مما يعمل على تحسين أمان النظام وفي حالة حدوث خرق أمني ، يمنعه من الانتشار في جميع أنحاء النظام.

يعمل SELinux في ثلاثة أوضاع ؛ "تعطيل ، متساهل ، وفرض". في وضع التعطيل ، يظل SELinux معطلاً تمامًا. إذا تم تمكين SELinux ، فسيكون في وضع Permissive أو وضع Executor. في الوضع المتساهل ، سيراقب SELinux التفاعل فقط. في وضع الإنفاذ ، سيقوم SELinux أيضًا بتصفية التفاعل مع المراقبة.

يمكن فهم صرامة الأمان الخاصة بها من حقيقة أنه مع SELinux ، أنه حتى لو تم اختراق النظام ، لا يمكن الوصول إلى الملفات التي لم يتم منحها حق الوصول.

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

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

يذكر أن على هذا النحو ، ليس من الضروري تعطيل SELinux، ولكن لتجنب الكثير من التعقيدات ، يتم تحميل وحدة kernel المخصصة "سيكون الأفضل". ولكن ليس في هذه الحالة ، نظرًا لأنه لتجاوزها ، شاركها أنني قررت أولاً استنساخ إحدى وحدات kernel الحالية من نظام ملفات الجهاز باستخدام برنامج نصي والذي تم تصحيحه في وظيفة module_init التي يمكن استخدامها أيضًا لتحميل وحدات kernel مباشرة من مخزن مؤقت في الذاكرة.

بالاتصال مع غلافي العكسي ، أدركت بسرعة أن النظام قد تم تمكين SELinux. على الرغم من أن السياسة لم تكن صارمة مثل السياسة القياسية التي قد تجدها على جهاز Android نموذجي ، إلا أنها كانت صارمة بما يكفي لمنعني من القيام بالكثير من الأشياء المفيدة (على سبيل المثال ، تركيب أنظمة الملفات والوصول إلى الملفات في / etc /) . لحسن الحظ ، تمكنت من كتابة الملفات وتنفيذها في / tmp / ، لذلك لا يزال لدي طريقة سهلة لإنشاء وتشغيل أدوات مخصصة.

ويذكر أيضًا أن هناك استدعائين مختلفين للنظام يمكن استخدامهما لتحميل وحدة kernel: int init_module التي تقوم بتحميل وحدة kernel المخزنة في الذاكرة ، بينما مادبا الوحدة النهائية يقوم بتحميل وحدة النواة من القرص.

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

لم يتم حذف سياق SELinux ؛ بدلاً من ذلك ، نحن ننتقل إلى سياق مهمة بدء التشغيل (بشكل عام ، من المحتمل أن يكون لهذا السياق قيود قليلة جدًا ، إن وجدت).

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

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


اترك تعليقك

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

*

*

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