أفضل الممارسات حول أمان التطبيقات

يحتوي هذا القسم على اقتراحات لضمان أمان التطبيقات على أجهزة Android.

مراجعة رمز المصدر

يمكن أن ترصد مراجعة رمز المصدر مجموعة كبيرة من مشاكل الأمان، بما في ذلك المشاكل التي تم تحديدها في هذا المستند. ننصح بشدة بمراجعة رمز المصدر يدوياً وبشكل آلي.

  • اتّبِع إرشادات الأمان الشاملة عند إجراء المراجعات لضمان تغطية استخدِم المعايير الداخلية أو الخارجية ذات الصلة لضمان حصولك على مراجعات متّسقة وكاملة.
  • يمكنك تشغيل أداة تدقيق، مثل أداة تدقيق "استوديو Android"، على جميع رموز التطبيق باستخدام حزمة تطوير برامج Android وتصحيح أي مشاكل تم رصدها.
  • حلِّل الرمز البرمجي الأصلي باستخدام أداة آلية يمكنها رصد مشاكل إدارة الذاكرة، مثل تدفّق المخزن المؤقت والأخطاء الناتجة عن الخطأ في القيمة الواحدة.
  • يتوافق نظام إنشاء Android مع العديد من أدوات فحص LLVM، مثل AddressSanitizer و UndefinedBehaviorSanitizer، والتي يمكن استخدامها لتحليل وقت التشغيل للمشاكل المتعلّقة بالذاكرة. عند استخدام أدوات التطهير مع أدوات البحث العشوائي عن الأخطاء، والتي تتوفّر في Android من خلال مكتبة libFuzzer، يمكن أن تكشف هذه الأدوات عن حالات استثنائية غير عادية تتطلّب إجراء مزيد من التحقيق.
  • على أحد خبراء تقييم الأمان المتمرّسين مراجعة الرموز البرمجية ذات المخاطر العالية، مثل رموز التشفير ومعالجة المعاملات ومعالجة معلومات تحديد الهوية الشخصية.

الاختبار الآلي

يمكن أن يساعد الاختبار المبرمَج في رصد مجموعة كبيرة من مشاكل الأمان، ويجب إجراؤه بانتظام.

  • يمكنك تشغيل أحدث إصدار من CTS بانتظام خلال عملية التطوير لرصد المشاكل في وقت مبكر وخفض وقت تصحيحها. يستخدم نظام التشغيل Android أداة CTS كجزء من عملية الدمج المستمر في عملية الإنشاء المبرمَجة التي يتم إجراؤها عدة مرات في اليوم.
  • اختبار أمان الواجهات بشكل آلي، بما في ذلك الاختبار باستخدام مدخلات مشوّهة (اختبار الاختراق). يتوافق نظام إنشاء Android مع مكتبة libFuzzer لكتابة اختبارات الاختراق.

البحث عن الثغرات الأمنية

يمكن أن يساعد فحص الثغرات الأمنية في التأكّد من أنّ التطبيقات المثبَّتة مسبقًا خالية من الثغرات الأمنية المعروفة. يمكن أن تقلّل ميزة الكشف المتقدّم من الوقت والتكلفة المطلوبة لحلّ هذه الثغرات الأمنية ومنع المخاطر التي تواجه المستخدمين والأجهزة.

  • فحص جميع التطبيقات المثبَّتة مسبقًا باستخدام أداة فحص ثغرات التطبيقات المعتمَدة في المجال ومعالجة الثغرات التي يتم رصدها

التطبيقات التي قد تتسبّب بضرر

من المهم التأكّد من أنّ التطبيقات المثبَّتة مسبقًا على جهازك ليست تطبيقات قد تُلحق الضرر بجهازك. أنت مسؤول عن سلوك كل التطبيقات المضمّنة على أجهزتك. قبل تشغيل الجهاز، عليك فحص جميع التطبيقات المُحمَّلة مسبقًا بحثًا عن الثغرات الأمنية.

لمزيد من المعلومات حول التطبيقات التي قد تتسبّب بضرر وكيفية مكافحة Google لها في متجر Play، يُرجى الاطّلاع على مستندات المطوّرين حول "Google Play للحماية".

تثبيت التطبيقات وأذوناتها

يمكن أن تؤدي الأذونات المفرطة للتطبيقات المثبَّتة مسبقًا إلى تعريضك لمخاطر أمنية. حصر التطبيقات المثبَّتة مسبقًا بأقل الأذونات اللازمة والتأكّد من أنّها لا يمكنها الوصول إلى أذونات أو امتيازات غير ضرورية يتم توضيح أذونات التطبيق في AndroidManifest.xml.

  • لا تمنح أذونات أو امتيازات غير ضرورية للتطبيقات المثبَّتة مسبقًا. راجِع بدقة التطبيقات التي تملك أذونات نظام، لأنّها قد تحصل على أذونات حسّاسة للغاية.
  • تأكَّد من أنّ جميع الأذونات المطلوبة ذات صلة وضرورية لتشغيل هذا التطبيق المحدّد.
  • تأكَّد من توفُّر بيان الإفصاح عن التعامل مع البيانات للمستخدمين لجميع التطبيقات المثبَّتة مسبقًا التي تستخدم إذن INSTALL_PACKAGES.
  • تأكَّد من أنّ المطوّر ملزم بموجب العقد بعدم تثبيت أي تطبيقات باستخدام رقم التعريف الفريد 0.
  • تقييم الأذونات المُعلَن عنها في بيان جميع التطبيقات التي سيتم تثبيتها من خلال شبكة المطوّر
  • تأكَّد من أنّ المطوّر ملزم بموجب العقد بفحص جميع عناوين URL الخاصة بعمليات تنزيل التطبيقات المزوّدة بميزة التحديث التلقائي وتطبيقات التثبيت باستخدام Google Safe Browsing API قبل عرض التطبيقات على الجهاز.

توقيع التطبيق

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

  • تأكَّد من عدم توقيع التطبيقات باستخدام مفتاح معروف للجميع، مثل مفتاح المطوّر في AOSP.
  • تأكَّد من أنّ المفاتيح المستخدَمة لتوقيع التطبيقات تُدار بطريقة متوافقة مع الممارسات المتّبعة في المجال لمعالجة المفاتيح الحسّاسة، بما في ذلك وحدة أمان الأجهزة (HSM) التي توفّر إمكانية وصول محدودة يمكن مراجعتها.
  • تأكَّد من عدم توقيع التطبيقات باستخدام مفتاح المنصة. يؤدي ذلك إلى منح تطبيقك إذن الوصول إلى أذونات توقيع النظام الأساسي، وهي أذونات قوية جدًا ومخصّصة فقط لاستخدامها من قِبل مكوّنات نظام التشغيل. يجب أن تستخدم تطبيقات النظام أذونات مميّزة.
  • تأكَّد من عدم توقيع التطبيقات التي تحمل اسم الحزمة نفسه باستخدام مفاتيح مختلفة. يحدث ذلك غالبًا عند إنشاء تطبيق لأجهزة مختلفة، خاصةً عند استخدام مفتاح النظام الأساسي. إذا كان التطبيق مستقلاً عن الجهاز، استخدِم المفتاح نفسه على جميع الأجهزة. إذا كان التطبيق خاصًا بالجهاز، أنشئ أسماء حِزم فريدة لكل جهاز ومفتاح.

عزل التطبيقات والعمليات

يقدّم نموذج وضع الحماية في Android أمانًا إضافيًا للتطبيقات والعمليات عند استخدامه بشكل صحيح.

عزل العمليات الأساسية

تمثل عمليات الجذر الهدف الأكثر شيوعًا لهجمات تصعيد الامتيازات. ويؤدي تقليل عدد عمليات الجذر إلى تقليل خطر تصعيد الامتيازات.

  • تأكَّد من أنّ الأجهزة تعمل بالحد الأدنى من الرموز البرمجية اللازمة بصفتها الجذر. استخدِم عملية Android عادية بدلاً من عملية الجذر، متى كان ذلك ممكنًا. إذا كان يجب تنفيذ عملية باستخدام إذن الوصول إلى الجذر على جهاز، يجب توثيق العملية في طلب ميزة لنظام التشغيل AOSP حتى يمكن مراجعتها بشكل علني.
  • يجب عزل الرمز الجذر عن البيانات غير الموثوق بها كلما أمكن، والوصول إليه من خلال ميزة "التواصل بين العمليات" (IPC). على سبيل المثال، يمكنك تقليل وظائف ملف التمهيد إلى خدمة صغيرة يمكن الوصول إليها من خلال Binder وعرض الخدمة التي تملك إذن التوقيع على تطبيق يملك امتيازات منخفضة أو لا يملك أي امتيازات لمعالجة حركة بيانات الشبكة.
  • يجب ألا تستمع عمليات الجذر إلى منفذ شبكة.
  • يجب ألا تتضمّن العمليات الجذر بيئة تشغيل للأغراض العامة، مثل Java VM.

عزل تطبيقات النظام

بشكل عام، يجب عدم تشغيل التطبيقات المثبَّتة مسبقًا باستخدام المعرّف الفريد المشترَك للنظام (UID). إذا كان من الضروري أن يستخدم التطبيق المعرّف الفريد المشترَك للنظام أو خدمة أخرى مميّزة (مثل الهاتف)، يجب ألا يصدِّر التطبيق أي خدمات أو أجهزة استقبال للبث أو مزوّدي محتوى يمكن للتطبيقات التابعة لجهات خارجية التي ثبَّتها المستخدمون الوصول إليها .

  • تأكَّد من أنّ الأجهزة تعمل بالحد الأدنى من الرموز البرمجية اللازمة كنظام. استخدِم، إن أمكن، عملية Android التي تتضمّن رقم تعريف مستخدم خاصًا بها بدلاً من إعادة استخدام رقم تعريف مستخدم النظام.
  • يجب عزل رمز النظام عن البيانات غير الموثوق بها كلما أمكن، ويجب عدم السماح بعمليات تبادل البيانات بين العمليات إلا للعمليات الموثوق بها الأخرى.
  • يجب ألا تستمع عمليات النظام إلى منفذ شبكة. هذا شرط من متطلبات CTS.

عزل العمليات

يضمن "وضع حماية التطبيقات" في Android فصل التطبيقات عن العمليات الأخرى على النظام، بما في ذلك عمليات الجذر وأدوات تصحيح الأخطاء. ويجب ألا ينتهك أي تطبيق هذا التوقع ما لم يفعّل المستخدم ميزة تصحيح الأخطاء في التطبيق على وجه التحديد.

  • تأكَّد من أنّ عمليات الجذر لا يمكنها الوصول إلى البيانات ضمن مجلدات بيانات التطبيقات الفردية ، ما لم يتم استخدام طريقة موثَّقة لتصحيح أخطاء Android.
  • تأكَّد من أنّ عمليات الجذر لا تصل إلى ذاكرة التطبيقات، ما لم يتم استخدام طريقة موثَّقة لتصحيح أخطاء Android.
  • تأكَّد من أنّ الأجهزة لا تتضمّن أي تطبيق يصل إلى بيانات أو ذاكرة التطبيقات أو العمليات الأخرى.