اقتراحات الأمان للنُسخ الاحتياطية

فئة OWASP: MASVS-CODE: جودة الرموز البرمجية

نظرة عامة

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

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

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

التأثير

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

إجراءات التخفيف

استخدام نظام "الاحتفاظ بنسخة احتياطية" العادي في Android

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

بشكل عام، يجب اتّباع إرشادات أمان تخزين البيانات.

إذا كانت النسخة الاحتياطية تتضمّن بيانات حسّاسة بشكل خاص، ننصحك إما بمحاولة استبعاد هذه البيانات أو، إذا لم تتمكّن من استبعادها، بطلب التشفير من جهة إلى أخرى كما هو описан في القسم التالي.

استبعاد البيانات من النسخة الاحتياطية

يمكنك تحديد البيانات التي تريد استبعادها من النسخة الاحتياطية باستخدام ملف قواعد، ويُشار إليه عادةً باسم backup_rules.xml ويتم وضعه في مجلد التطبيق res/xml. هناك بعض الاختلافات في كيفية ضبط قواعد الاحتفاظ بنسخة احتياطية استنادًا إلى إصدار Android المستخدَم:

بعد ذلك، اضبط ملف backup_rules.xml وفقًا لمتطلبات أمان البيانات واستمراريتها في التطبيق، مع اتّباع تنسيق الضبط المعدَّل.

يتيح التنسيق المطلوب لإعداد ملف backup_rules.xml للمطوّرين تحديد قواعد احتياطية مخصّصة لكل من عمليات النقل في السحابة الإلكترونية وعمليات النقل من جهاز إلى جهاز (D2D). في حال عدم ضبط سمة <device-transfer>، سيتم نقل جميع بيانات التطبيق أثناء عملية نقل البيانات من جهاز إلى آخر. من المهم توضيح أنّه حتى إذا كان التطبيق المستهدَف يستهدف الإصدار 12 من نظام التشغيل Android أو إصدارًا أحدث، يجب تحديدملفٍ منفصل يحتوي على مجموعة إضافية من قواعد الاحتفاظ بنسخة احتياطية للأجهزة التي تعمل بالإصدار 11 من نظام التشغيل Android (المستوى 30 لواجهة برمجة التطبيقات) أو إصدارًا أقدم.

بعد ذلك، عليك ضبط ملف backup_rules.xml وفقًا لمتطلبات ثبات البيانات والأمان في التطبيق باستخدام البنية الموضّحة في مقالة الاحتفاظ بنسخة احتياطية من بيانات المستخدمين.

طلب التشفير التام بين الأطراف

إذا لم تتمكّن من استبعاد البيانات الحسّاسة من النسخة الاحتياطية، ننصحك بطلب التشفير التام بين الأطراف، ما يعني السماح بإنشاء النُسخ الاحتياطية على نظام التشغيل Android 9 أو إصدار أحدث فقط وعند ضبط شاشة القفل فقط. يمكنك إجراء ذلك باستخدام العلامة requireFlags="clientSideEncryption" التي يجب إعادة تسميتها إلى disableIfNoEncryptionCapabilities وضبطها على true اعتبارًا من الإصدار Android 12.

في حال تعذّر استخدام نظام "الاحتفاظ بنسخة احتياطية من البيانات في جهاز Android" العادي

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

المراجع