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

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

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

يمكن أن ترصد مراجعة رمز المصدر مجموعة كبيرة من مشاكل الأمان، بما في ذلك المشاكل المحدّدة في هذا المستند. يشجّع نظام التشغيل Android بشدة على إجراء مراجعة يدوية وتلقائية للرمز المصدري.

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

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

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

  • استخدِم أحدث إصدار من مجموعة اختبار التوافق (CTS) بانتظام خلال عملية التطوير لرصد المشاكل مبكرًا وتقليل الوقت المستغرَق في تصحيحها. يستخدم نظام التشغيل Android مجموعة اختبارات التوافق كجزء من عملية الدمج المستمر في عملية الإنشاء الآلية التي تتم عدة مرات في اليوم.
  • أتمِتة اختبار الأمان للواجهات، بما في ذلك الاختبار باستخدام مدخلات غير صالحة (اختبار التشويش). يتوافق نظام الإصدار في 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 الافتراضية.

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

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

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

عزل العمليات

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

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