PSA: كن حذرًا من تثبيت أي شيء مع ضبط SELinux على السماح

تسمح ميزة Android غير الموثقة لأي تطبيق عشوائي بالوصول إلى الجذر في بيئة SELinux المتساهلة. واصل القراءة لمعرفة المزيد!

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

ما هو سيلينوكس

سي لينكس، أو نظام Linux المعزز بالأمان

، عبارة عن وحدة أمان Linux kernel مصممة خصيصًا للوصول إلى سياسات الأمان وإدارتها. تم تقديمه في الأصل في Android 4.3 Jelly Bean وتم ضبطه على وضع الفرض كإعداد افتراضي منذ Android 4.4 يساعد KitKat وSELinux في فرض حقوق التحكم في الوصول ويحاولان منع تصعيد الامتيازات الهجمات. باختصار، يعمل SELinux بمثابة عقبة أمام التحكم غير المصرح به في جهازك، مثل تطبيق أو ثغرة أمنية تهدف إلى الوصول إلى الجذر بشكل ضار. يعد ضبط SELinux على "الفرض" افتراضيًا إحدى الطرق الرئيسية لحماية المستخدمين العاديين من مثل هذه الهجمات.

لماذا لا يُنصح باستخدام SELinux المسموح به

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

أدخل ماجيكا

إن حصول المستخدم على حق الوصول الكامل إلى الجذر على أجهزته الخاصة التي تعمل بنظام Android 10 (أو أعلى) مع ضبط SELinux على السماح هو أمر سهل للغاية افعل: كل ما عليك فعله هو الضغط على "تثبيت"، وسيحصل "Magica" تلقائيًا على حق الوصول إلى الجذر في الخدمة وتثبيت Magisk على التمهيد صورة. وهذا شيء أوسع نطاقًا بكثير من مجرد تعديل جهازك. وفقًا لمطور XDA المعترف به ومشرف Magisk com.topjohnwu، أي تطبيق عشوائي، بما في ذلك البرامج الضارة، يمكنه الوصول إلى جهازك بشكل دائم دون موافقتك وإذنك من خلال استخدام PoC.

إذا كنت تتساءل على المستوى الفني عما تستغله Magica، فقد أوضح topjohnwu ما يلي في هذا المقال مشاركة رديت:

"عندما يكون SELinux مسموحًا به أثناء التمهيد، سيعرف zygote ذلك ويقوم بتعطيل مرشحات seccomp syscall. يؤدي هذا بشكل أساسي إلى إلغاء تقييد مكالمات النظام المسموح بها في عمليات الطرف الثالث.

في نظام التشغيل Android 10+، توجد ميزة جديدة "غير موثقة" تسمى "App Zygote" حيث يُسمح لتطبيقات الطرف الثالث بإنشاء Zygote الخاص بها من أجل "الخدمات المعزولة" (غير موثقة أيضًا تقريبًا). يعتبر كل من "App Zygote" و"Isolated Services" من الميزات الخاصة المصممة لمتصفح Chrome/Webview*. تعمل عمليات App Zygote بأذونات خاصة، ومع تعطيل seccomp، يمكنه استدعاء setuid 0 وتصعيد امتيازاته والحصول على وصول إلى الجذر.

لا يزال الأمر مقيدًا إلى حد ما مقارنة بما توفره حلول الجذر العادية (مثل Magisk)، ومع ذلك سيتم هزيمة الكثير من الإجراءات الأمنية في Android تمامًا عندما يكون UID = 0. على سبيل المثال، يكفي استخدامه لتصحيح صور التمهيد، مما يعني أنه يمكن استخدامه لحقن برامج ضارة مثل Magisk المعدل لمساعدته في الحصول على أذونات الجذر "الحقيقية".

التحديث: ما الذي يمكن أن يفعله UID=0 نفسه؟ ضمن إطار عمل Android، تحتوي جميع الخدمات تقريبًا على ضوء أخضر أعمى عندما يكون UID لعملية الطلب هو 0. وهذا يعني أن عملية الجذر هذه قادرة على معالجة الكثير من الأشياء باستخدام واجهات برمجة التطبيقات الخاصة بنظام Android (مثل ActivityManager)"

* بحسب المطور com.aviraxp، تم تصميم هاتين الميزتين بشكل عام "لمشاركة الموارد والذاكرة بين العمليات المعزولة المتعددة."

خاتمة

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