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