توصیه های امنیتی برای پشتیبان گیری

دسته OWASP: MASVS-CODE: کیفیت کد

نمای کلی

هدف پشتیبان‌گیری از برنامه حفظ اطلاعات کاربران است تا بعداً بتوان آن را به دستگاه جدید بازیابی کرد یا در صورت از دست رفتن داده‌ها. توصیه‌های امنیتی موجود در مورد پشتیبان‌گیری از برنامه‌ها متفاوت است و بین نسخه‌های اندروید و سازندگان دستگاه متفاوت است. موضوع رایج این است که هدف این توصیه‌ها حصول اطمینان از افشای داده‌های حساس است.

سیستم استاندارد پشتیبان‌گیری اندروید امن‌ترین، قوی‌ترین و ساده‌ترین راه‌حل را برای برنامه‌ها فراهم می‌کند تا از داده‌های خود در فضای ابری پشتیبان‌گیری کنند یا از طریق پشتیبان‌گیری خودکار ، داده‌ها را به دستگاه جدید منتقل کنند (که به‌طور پیش‌فرض فعال است، برای پیاده‌سازی نیازی به کار ندارد و می‌تواند همچنین تمدید شود) و پشتیبان گیری کلید-مقدار . ما استفاده از این راه حل را توصیه می کنیم زیرا داده های پشتیبان حاصل را در دایرکتوری هایی ذخیره می کند که توسط سایر برنامه های 3p قابل دسترسی نیستند، همچنین رمزگذاری در حالت استراحت، رمزگذاری در حین انتقال و پیکربندی هایی را که امکان حذف داده های حساس از پشتیبان ها را فراهم می کند، تسهیل می کند.

اگر در عوض یک برنامه یک راه حل پشتیبان‌گیری را اجرا کند که به سیستم استاندارد پشتیبان‌گیری اندروید متکی نیست، این می‌تواند احتمال اشتباهاتی که منجر به نشت اطلاعات حساس شود را افزایش دهد. نمونه‌هایی از راه‌حل‌های پشتیبان‌گیری غیر استاندارد که داده‌های کاربر را در معرض نشت قرار می‌دهند، شامل برنامه‌هایی هستند که قابلیت «صادرات» یا «پشتیبان‌گیری» را ارائه می‌کنند که یک کپی از داده‌های برنامه را در فهرست‌های راهنمای قابل خواندن توسط برنامه‌های دیگر ایجاد می‌کنند، و از این رو مستعد لو رفتن هستند (یا مستقیماً). یا از طریق آسیب پذیری های دیگر).

تاثیر

پیروی از توصیه‌های امنیتی هنگام راه‌اندازی پشتیبان‌گیری از برنامه، از نشت احتمالی داده‌های حساسی که ممکن است پشتیبان‌گیری داشته باشد، جلوگیری می‌کند. بسته به داده های واقعی و نیات مهاجم، نشت داده های حساس ممکن است منجر به افشای اطلاعات، جعل هویت کاربر و ضرر مالی شود.

اقدامات کاهشی

از سیستم استاندارد پشتیبان گیری اندروید استفاده کنید

سیستم استاندارد پشتیبان گیری اندروید همیشه داده های پشتیبان را در حال انتقال و در حالت استراحت رمزگذاری می کند. این رمزگذاری صرف نظر از نسخه Android در حال استفاده و اینکه آیا دستگاه شما صفحه قفل دارد یا خیر اعمال می شود. با شروع از Android 9، اگر دستگاه دارای صفحه قفل تنظیم شده باشد، داده های پشتیبان نه تنها رمزگذاری می شوند، بلکه با کلیدی که گوگل آن را نمی شناسد رمزگذاری می شود (راز صفحه قفل از کلید رمزگذاری محافظت می کند، بنابراین رمزگذاری سرتاسر را امکان پذیر می کند. ).

به طور کلی به یاد داشته باشید که دستورالعمل های ذخیره سازی داده و امنیت را دنبال کنید.

اگر نسخه پشتیبان شما شامل داده‌های بسیار حساسی است، توصیه می‌کنیم یا این داده‌ها را حذف کنید یا اگر نمی‌توانید آن‌ها را حذف کنید، به رمزگذاری انتها به انتها که در بخش زیر توضیح داده شده است، نیاز دارید.

حذف داده‌ها از پشتیبان‌گیری

می‌توانید با استفاده از یک فایل قوانین، که معمولاً backup_rules.xml نامیده می‌شود و در پوشه برنامه res/xml قرار می‌گیرد، مشخص کنید که کدام داده‌ها از نسخه پشتیبان حذف شوند. بسته به نسخه اندرویدی که استفاده می‌شود، تفاوت‌هایی در نحوه پیکربندی قوانین پشتیبان‌گیری وجود دارد:

سپس، فایل backup_rules.xml با توجه به پایداری داده ها و الزامات امنیتی برنامه، پیکربندی کنید ، به دنبال فرمت پیکربندی به روز شده .

فرمت مورد نیاز برای پیکربندی فایل backup_rules.xml به توسعه دهندگان این امکان را می دهد تا قوانین پشتیبان گیری سفارشی را برای انتقال Cloud و Device-to-Device (D2D) تعریف کنند. اگر ویژگی <device-transfer> تنظیم نشده باشد، تمام داده های برنامه در طول انتقال D2D منتقل می شود. نکته مهم این است که حتی اگر برنامه هدف اندروید 12 یا بالاتر را هدف قرار دهد، همیشه باید یک فایل جداگانه با مجموعه ای از قوانین پشتیبان اضافی برای دستگاه های دارای Android 11 (سطح API 30) یا پایین تر مشخص شود.

  • برای نسخه‌های Android 11 و پایین‌تر ، یک ویژگی android:fullBackupContent به عنصر <application> در AndroidManifest.xml اضافه کنید:
  • xml xml <application android:name="com.example.foo" android:fullBackupContent="@xml/backup_rules_full"> … </application>

سپس، فایل backup_rules.xml با توجه به پایداری داده و الزامات امنیتی برنامه با استفاده از نحو گزارش شده در مقاله داده های کاربر پشتیبان پیکربندی کنید.

نیاز به رمزگذاری سرتاسر

اگر نمی‌توانید داده‌های حساس را از نسخه پشتیبان خود حذف کنید، توصیه می‌کنیم به رمزگذاری سرتاسر نیاز داشته باشید که به این معنی است که فقط در Android 9 یا بالاتر و تنها زمانی که صفحه قفل تنظیم شده است، اجازه تهیه نسخه پشتیبان را بدهید. می‌توانید با استفاده از پرچم requireFlags="clientSideEncryption" که باید به disableIfNoEncryptionCapabilities تغییر نام داده و از Android 12 روی true تنظیم شود، به این هدف دست یابید.

اگر نمی توانید از سیستم استاندارد پشتیبان گیری اندروید استفاده کنید

اگر نمی‌توانید از سیستم استاندارد پشتیبان‌گیری Android استفاده کنید، ذخیره ایمن داده‌های پشتیبان خود و همچنین تعیین اینکه کدام داده‌ها را از نسخه پشتیبان خود حذف کنید، پیچیده‌تر است. این باید در سطح کد مشخص شود و در نتیجه مستعد خطا است و خطر نشت داده ها را به همراه دارد. در این سناریو، همچنین توصیه می‌شود که به طور منظم پیاده‌سازی خود را آزمایش کنید تا مطمئن شوید که هیچ تغییری در رفتار پشتیبان‌گیری مورد انتظار ایجاد نشده است.

منابع