كجزء من نموذج أمان Android، يستخدم نظام التشغيل Android Security-Enhanced Linux (SELinux) لفرض التحكّم الإجباري في الوصول (MAC) على جميع العمليات، حتى العمليات التي تعمل باستخدام امتيازات المستخدم الجذر/المشرف (إمكانات Linux). ساهمت العديد من الشركات والمؤسسات في تنفيذ SELinux في نظام التشغيل Android. باستخدام SELinux، يمكن لنظام Android حماية خدمات النظام والحد من وصولها بشكل أفضل، والتحكّم في الوصول إلى بيانات التطبيقات وسجلات النظام، والحد من تأثيرات البرامج الضارّة، وحماية المستخدمين من العيوب المحتمَلة في الرموز البرمجية على الأجهزة المتحرّكة.
يعمل SELinux وفقًا لمبدأ الرفض التلقائي: أيّ عملية ليست مُسموحة بشكلٍ صريح تُرفض. يمكن أن يعمل SELinux في وضعَين عامَّين:
- وضع السماح، الذي يتم فيه تسجيل عمليات رفض الأذونات ولكن لا يتم فرضها
- وضع فرض، الذي يتم فيه تسجيل عمليات رفض الأذونات و فرضها
يتضمّن نظام التشغيل Android تنسيق SELinux في وضع التنفيذ وسياسة أمان
مقابلة تعمل تلقائيًا على مستوى AOSP. في وضع التنفيذ، يتم منع
الإجراءات غير المسموح بها، ويُسجِّل نظام التشغيل جميع المخالفات التي تمّت محاولة تنفيذها فيملفَي dmesg
وlogcat
. عند التطوير، يجب
استخدام هذه الأخطاء لتحسين البرامج وسياسات SELinux قبل فرض
هذه السياسات. لمزيد من التفاصيل، يُرجى الاطّلاع على مقالة Implementing
SELinux.
يتيح SELinux أيضًا وضع السماح لكل نطاق الذي يمكن فيه السماح ببعض النطاقات (العمليات) مع وضع بقية النظام في وضع التنفيذ العام. النطاق هو ببساطة تصنيف يحدِّد عملية أو مجموعة من العمليات في سياسة الأمان، حيث تتعامل سياسة الأمان مع جميع العمليات المصنَّفة باستخدام النطاق نفسه بشكلٍ متطابق. يتيح الوضع المتساهل على مستوى النطاق تطبيق SELinux بشكل تدريجي على جزء متزايد باستمرار من النظام وتطوير السياسات للخدمات الجديدة (مع إبقاء بقية النظام ساريًا).
الخلفية
يستند نموذج أمان Android جزئيًا إلى مفهوم أحياء التطبيقات المحمية. يتم تشغيل كل تطبيق في بيئة الحماية الخاصة به. قبل الإصدار 4.3 من نظام التشغيل Android، كان يتم تحديد هذه البيئات المحمية من خلال إنشاء معرّف مستخدم فريد لنظام التشغيل Linux لكل تطبيق في وقت التثبيت. يستخدم الإصدار 4.3 من Android والإصدارات الأحدث تنسيق SELinux لتحديد حدود وضع الحماية لتطبيقات Android بشكل أفضل.
في الإصدار Android 5.0 والإصدارات الأحدث، يتم فرض سياسة SELinux بالكامل، استنادًا إلى الإصدار
المتساهل من Android 4.3 والفرض الجزئي لسياسة Android 4.4.
وبفضل هذا التغيير، توقّف Android عن فرض الامتثال على مجموعة محدودة من
النطاقات المهمة (installd
وnetd
وvold
و
zygote
) وأصبح يفرض الامتثال على كل النطاقات (أكثر من 60 نطاقًا). وعلى وجه التحديد:
- يتم فرض كل الإعدادات في الإصدار 5.x من نظام التشغيل Android والإصدارات الأحدث.
- يجب عدم تشغيل أي عمليات أخرى غير
init
في نطاقinit
. - يشير أي رفض عام (للأجهزة التي تعمل بنظام التشغيل
block_device
أوsocket_device
أوdefault_service
) إلى أنّه يحتاج الجهاز إلى نطاق خاص.
في الإصدار 6.0 من Android، تم تحسين أمان النظام من خلال تقليل تساهل
سياستنا لتشمل عزلًا أفضل بين المستخدمين، وفلترة IOCTL، وخفض
التهديدات التي تواجه الخدمات المكشوفة، وتعزيز إجراءات الأمان في نطاقات SELinux، ومحاولة محدودة للغاية للوصول إلى /proc
.
عدّل نظام التشغيل Android 7.0 إعدادات SELinux لتعزيز تأمين مساحة التطبيق المحصورة والحد من مساحة الهجوم. قسّم هذا الإصدار أيضًا حِزمة mediaserver الموحّدة إلى عمليات أصغر حجمًا لتقليل نطاق أذوناتها. لمزيد من التفاصيل، يُرجى الاطّلاع على مقالتَي حماية Android باستخدام المزيد من وسائل الدفاع في نواة Linux وتعزيز أمان حِزمة الوسائط.
عدّل نظام Android 8.0 أمان SELinux للعمل مع Treble، الذي يفصل رمز المورّد من المستوى الأدنى عن إطار عمل نظام Android. عدّل هذا الإصدار سياسة ملف تعريف أمان نظام التشغيل (SELinux)
للسماح لمصنعي الأجهزة ومورّدي شرائح المعالجة المركزية (SOC) بتعديل أجزاءهم من
السياسة وإنشاء صورهم (vendor.img
وboot.img
وغيرها)، ثم تعديل هذه الصور بغض النظر عن النظام الأساسي أو العكس.
على الرغم من أنّه من الممكن استخدام إصدار أحدث من النظام الأساسي (إطار العمل)
على الجهاز، لا يمكن استخدام إصدار أقدم من إصدار النظام الأساسي
(system.img
) في صور المورّد
(vendor.img/odm.img
). وبالتالي، قد يؤدي استخدام إصدار أحدث من النظام الأساسي إلى حدوث مشاكل في توافق SELinux
لأنّ سياسة SELinux للنظام الأساسي تكون في إصدار أحدث
من أجزاء SELinux الخاصة بالمورّد من السياسة. يقدّم نموذج Android 8.0 طريقة
للحفاظ على التوافق لمنع
عمليات التحديثات التلقائية المتزامنة غير الضرورية.
مصادر إضافية
للحصول على مساعدة في إنشاء سياسات SELinux مفيدة، يُرجى الرجوع إلى المراجع التالية:
- دفتر ملاحظات SELinux، وهو مرجع حديث لنظام SELinux يحتوي هذا المستند على تفاصيل إضافية حول لغة السياسة ومعنى كل كلمة رئيسية وكيفية محاسبة السياقات الأمنية.
- دليل الخطوات المرئي لفرض سياسة SELinux
- تحسينات الأمان لنظام التشغيل Linux
- إصدار Android المعزّز للأمان (SE): توفير عناوين MAC المرنة على Android
- تنفيذ SELinux كوحدة أمان في Linux
- ضبط سياسة SELinux