يحتوي هذا القسم على اقتراحات لضمان أمان التطبيقات على أجهزة Android.
مراجعة الرمز البرمجي
يمكن لمراجعة الرمز البرمجي رصد مجموعة كبيرة من المشاكل الأمنية، بما في ذلك المشاكل المحدّدة في هذا المستند. تشجّع Android بشدة على مراجعة الرمز البرمجي يدويًا وتلقائيًا.
- اتّبِع إرشادات الأمان الشاملة عند إجراء المراجعات لضمان تغطية جميع الجوانب. استخدِم المعايير الداخلية أو الخارجية ذات الصلة لضمان إجراء مراجعات متّسقة وكاملة.
- شغِّل أداة تحليل، مثل أداة تحليل Android Studio، على جميع رموز التطبيق باستخدام Android SDK وصحِّح أي مشاكل تم رصدها.
- حلِّل الرموز البرمجية الأصلية باستخدام أداة تلقائية يمكنها رصد مشاكل إدارة الذاكرة ، مثل تجاوز سعة المخزن المؤقت والأخطاء التي تحدث بسبب اختلاف بمقدار واحد.
- يتوافق نظام التصميم في Android مع العديد من أدوات التنظيف في LLVM، مثل AddressSanitizer و UndefinedBehaviorSanitizer، التي يمكن استخدامها لتحليل المشاكل المتعلّقة بالذاكرة في وقت التشغيل. بالإضافة إلى الاختبار غير المنظَّم، الذي يتوفّر في Android من خلال libFuzzer، يمكن لأدوات التنظيف رصد الحالات الحدّية غير العادية التي تتطلّب مزيدًا من التحقيق.
- على خبير أمان مطلع مراجعة الرموز البرمجية التي تنطوي على مخاطر أعلى، مثل التشفير ومعالجة الدفعات ومعالجة المعلومات الشخصية.
الاختبار التلقائي
يمكن أن يساعد الاختبار التلقائي في رصد مجموعة كبيرة من المشاكل الأمنية و يجب إجراؤه بانتظام.
- شغِّل أحدث إصدار من CTS بانتظام طوال عملية التطوير لرصد المشاكل في وقت مبكر وتقليل الوقت اللازم لتصحيحها. تستخدم Android مجموعة اختبار التوافق (CTS) كجزء من التكامل المستمر في عملية الإصدار التلقائية ، التي يتم إجراؤها عدة مرات في اليوم.
- أجرِ اختبارًا تلقائيًا للأمان للواجهات، بما في ذلك الاختبار باستخدام بيانات الإدخال غير الصالحة (الاختبار غير المنظَّم). يتوافق نظام التصميم في Android مع libFuzzer لكتابة الاختبارات غير المنظَّمة.
البحث عن الثغرات الأمنية
يمكن أن يساعد البحث عن الثغرات الأمنية في ضمان خلو التطبيقات المثبَّتة مسبقًا من الثغرات الأمنية المعروفة. يمكن أن يقلّل الرصد المتقدّم من الوقت والت كلفة المطلوبَين لمعالجة هذه الثغرات الأمنية ومنع تعرّض المستخدمين والأجهزة للخطر.
- ابحث عن الثغرات الأمنية في جميع التطبيقات المثبَّتة مسبقًا باستخدام أداة معترف بها في المجال ، وعالج الثغرات الأمنية التي تم رصدها.
التطبيقات التي قد تتسبّب بضرر
من المهم التأكّد من أنّ التطبيقات المثبَّتة مسبقًا على جهازك ليست من التطبيقات التي قد تتسبّب بضرر. أنت مسؤول عن سلوك جميع التطبيقات المضمّنة على أجهزتك. قبل إطلاق الجهاز، ابحث عن الثغرات الأمنية في جميع التطبيقات المحمَّلة مسبقًا.
لمزيد من المعلومات عن التطبيقات التي قد تتسبّب بضرر وكيفية مكافحة Google لها في "متجر Play"، اطّلِع على مستندات المطوّرين في Google Play للحماية.
تثبيت التطبيقات وأذوناتها
يمكن أن يؤدي منح أذونات مفرطة للتطبيقات المثبَّتة مسبقًا إلى تعرّضك لمخاطر أمنية. احصر التطبيقات المثبَّتة مسبقًا على الحد الأدنى من الأذونات اللازمة وتأكَّد من أنّها لا يمكنها الوصول إلى أذونات أو امتيازات غير ضرورية. يتم وصف أذونات التطبيق في ملف AndroidManifest.xml.
- لا تمنح التطبيقات المثبَّتة مسبقًا أذونات أو امتيازات غير ضرورية. راجِع التطبيقات التي لديها امتيازات النظام بدقة لأنّها قد تتضمّن أذونات حسّاسة جدًا.
- تأكَّد من أنّ جميع الأذونات المطلوبة ذات صلة بوظائف التطبيق المحدّد وضرورية لها
- تأكَّد من إعلام المستخدمين بجميع التطبيقات المثبَّتة مسبقًا التي تستخدم الإذن
INSTALL_PACKAGES - تأكَّد من أنّ المطوّر ملزَم بموجب العقد بعدم تثبيت أي تطبيقات بصفتها UID 0.
- قيِّم الأذونات المحدّدة في بيان جميع التطبيقات التي سيتم تثبيتها من خلال شبكة المطوّر.
- تأكَّد من أنّ المطوّر ملزَم بموجب العقد بفحص جميع عناوين URL للتنزيل الخاصة بتطبيقات التثبيت والتحديث التلقائي باستخدام Google Safe Browsing API قبل عرض التطبيقات على الجهاز.
توقيع التطبيق
تؤدي توقيعات التطبيقات دورًا مهمًا في أمان الجهاز وتُستخدم للـ تحقّق من الأذونات وتحديثات البرامج. عند اختيار مفتاح لاستخدامه في توقيع التطبيقات، من المهم مراعاة ما إذا كان التطبيق متاحًا على جهاز واحد فقط أو على أجهزة متعددة.
- تأكَّد من عدم توقيع التطبيقات باستخدام مفتاح معروف للجميع، مثل مفتاح مطوّر AOSP.
- تأكَّد من إدارة المفاتيح المستخدَمة لتوقيع التطبيقات بطريقة تتوافق مع الممارسات المتّبعة في المجال للتعامل مع المفاتيح الحساسة، بما في ذلك وحدة أمان الأجهزة (HSM) التي توفّر وصولاً محدودًا وقابلاً للتدقيق.
- تأكَّد من عدم توقيع التطبيقات باستخدام مفتاح النظام الأساسي. يمنح ذلك التطبيق إذن الوصول إلى أذونات توقيع النظام الأساسي، وهي أذونات قوية جدًا ومخصّصة فقط لاستخدام مكوّنات نظام التشغيل. يجب أن تستخدم تطبيقات النظام أذونات مميزة.
- تأكَّد من عدم توقيع التطبيقات التي لها اسم الحزمة نفسه باستخدام مفاتيح مختلفة. يحدث ذلك غالبًا عند إنشاء تطبيق لأجهزة مختلفة، خاصةً عند استخدام مفتاح النظام الأساسي. إذا كان التطبيق مستقلاً عن الجهاز، استخدِم المفتاح نفسه على جميع الأجهزة. إذا كان التطبيق خاصًا بجهاز معيّن، أنشِئ أسماء حزم فريدة لكل جهاز ومفتاح.
عزل التطبيقات والعمليات
يوفّر نموذج وضع الحماية في Android أمانًا إضافيًا للتطبيقات والعمليات عند استخدامه بشكلٍ صحيح.
عزل عمليات الجذر
تُعدّ عمليات الجذر الهدف الأكثر شيوعًا لهجمات رفع الامتيازات؛ ويؤدي تقليل عدد عمليات الجذر إلى تقليل خطر رفع الامتيازات.
- تأكَّد من أنّ الأجهزة تشغِّل الحد الأدنى من الرموز البرمجية اللازمة بصفتها جذرًا. استخدِم عملية Android عادية بدلاً من عملية الجذر كلما أمكن ذلك. إذا كان يجب تشغيل عملية بصفتها جذرًا على جهاز، وثِّق العملية في طلب ميزة AOSP حتى يمكن مراجعتها علنًا.
- كلما أمكن ذلك، يجب عزل رمز الجذر عن البيانات غير الموثوق بها و الوصول إليه من خلال الاتصال بين العمليات (IPC). على سبيل المثال، قلِّل وظائف الجذر إلى خدمة صغيرة يمكن الوصول إليها من خلال Binder واعرض الخدمة بإذن التوقيع لتطبيق لديه امتيازات منخفضة أو ليس لديه امتيازات لمعالجة حركة بيانات الشبكة.
- يجب ألا تستمع عمليات الجذر إلى مقبس شبكة.
- يجب ألا تتضمّن عمليات الجذر وقت تشغيل للأغراض العامة، مثل Java VM.
عزل تطبيقات النظام
بشكل عام، يجب ألا يتم تشغيل التطبيقات المثبَّتة مسبقًا باستخدام المعرّف الفريد للنظام (UID) المشترَك. إذا كان من الضروري أن يستخدم التطبيق المعرّف الفريد للنظام أو خدمة مميزة أخرى (مثل الهاتف)، يجب ألا يصدِّر التطبيق أي خدمات أو مستقبِلات بث أو موفّري محتوى يمكن أن تصل إليها تطبيقات الجهات الخارجية التي يثبّتها المستخدمون.
- تأكَّد من أنّ الأجهزة تشغِّل الحد الأدنى من الرموز البرمجية اللازمة بصفتها نظامًا. استخدِم عملية Android لها المعرّف الفريد الخاص بها بدلاً من إعادة استخدام المعرّف الفريد للنظام كلما أمكن ذلك.
- كلما أمكن ذلك، يجب عزل رمز النظام عن البيانات غير الموثوق بها و عرض الاتصال بين العمليات (IPC) فقط للعمليات الموثوق بها الأخرى.
- يجب ألا تستمع عمليات النظام إلى مقبس شبكة. هذا أحد متطلبات مجموعة اختبار التوافق (CTS) .
عزل العمليات
يوفّر وضع الحماية لتطبيقات Android للتطبيقات توقعًا بالعزل عن العمليات الأخرى على النظام، بما في ذلك عمليات الجذر وأدوات تصحيح الأخطاء. ما لم يتم تفعيل تصحيح الأخطاء بشكلٍ خاص من قِبل التطبيق والمستخدم، يجب ألا ينتهك أي تطبيق هذا التوقع.
- تأكَّد من أنّ عمليات الجذر لا تصل إلى البيانات داخل مجلدات بيانات التطبيقات الفردية ، إلا إذا كنت تستخدم طريقة تصحيح أخطاء Android موثّقة.
- تأكَّد من أنّ عمليات الجذر لا تصل إلى ذاكرة التطبيقات، إلا إذا كنت تستخدم طريقة تصحيح أخطاء Android موثّقة.
- تأكَّد من أنّ الأجهزة لا تتضمّن أي تطبيق يصل إلى بيانات أو ذاكرة تطبيقات أو عمليات أخرى.