Zalecenia dotyczące zabezpieczeń kopii zapasowych

Kategoria OWASP: MASVS-CODE: Code Quality

Omówienie

Kopie zapasowe aplikacji mają na celu zachowanie danych użytkowników, aby można je było później przywrócić na nowym urządzeniu lub w przypadku ich utraty. Dotychczasowe zalecenia dotyczące bezpieczeństwa związane z kopiami zapasowymi aplikacji różnią się w zależności od wersji Androida i producenta urządzeń. Wszystkie te rekomendacje mają na celu zapewnienie, że nie dojdzie do wycieku danych poufnych.

Standardowy system kopii zapasowych Androida zapewnia najbezpieczniejsze, najsolidniejsze i najprostsze rozwiązanie dla aplikacji, które chcą tworzyć kopie zapasowe danych w chmurze lub przenosić dane na nowe urządzenie za pomocą automatycznego tworzenia kopii zapasowej (które jest włączone domyślnie, nie wymaga implementacji i można je rozszerzyć) oraz kopii zapasowej kluczy i wartości. Zalecamy korzystanie z tego rozwiązania, ponieważ przechowuje ono utworzone dane kopii zapasowej w katalogach, do których nie mają dostępu inne aplikacje innych firm, a także ułatwia szyfrowanie danych w spoczynku, szyfrowanie w transmisji oraz konfiguracje umożliwiające wykluczenie danych wrażliwych z kopii zapasowych.

Jeśli aplikacja wdraża rozwiązanie do tworzenia kopii zapasowych, które nie jest oparte na standardowym systemie kopii zapasowych Androida, może to zwiększyć prawdopodobieństwo popełnienia błędu, co może spowodować wyciek danych poufnych. Przykłady niestandardowych rozwiązań kopii zapasowych, które narażają dane użytkowników na wycieki, to aplikacje oferujące funkcję „eksportowania” lub „tworzenia kopii zapasowej”, które tworzą kopię danych aplikacji w katalogach do odczytu przez inne aplikacje. W związku z tym są one podatne na wycieki (bezpośrednie lub przez inne luki w zabezpieczeniach).

Wpływ

Stosowanie się do zaleceń dotyczących zabezpieczeń podczas konfigurowania kopii zapasowych aplikacji zapobiega potencjalnym wyciekom danych wrażliwych, które mogą się w nich znajdować. W zależności od rodzaju danych i zamierzeń atakującego wyciek danych poufnych może prowadzić do ujawnienia informacji, podszywania się pod użytkownika i strat finansowych.

Środki zaradcze

Używanie standardowego systemu kopii zapasowej Androida

Standardowy system kopii zapasowych Androida zawsze szyfruje dane kopii zapasowej w ruchu i w spoczynku. Szyfrowanie jest stosowane niezależnie od wersji Androida i niezależnie od tego, czy urządzenie ma ekran blokady. Począwszy od Androida 9, jeśli na urządzeniu jest ustawiony ekran blokady, dane kopii zapasowej są nie tylko zaszyfrowane, ale także zaszyfrowane za pomocą klucza, który jest nieznany Google (sekret ekranu blokady chroni klucz szyfrowania, co umożliwia szyfrowanie end-to-end).

Ogólnie pamiętaj, aby przestrzegać zasad przechowywania danych i wytycznych dotyczących bezpieczeństwa.

Jeśli kopia zapasowa zawiera szczególnie wrażliwe dane, zalecamy wykluczenie tych danych lub, jeśli nie możesz ich wykluczyć, włączenie pełnego szyfrowania zgodnie z opisem w następnej sekcji.

Wykluczenie danych z kopii zapasowej

Korzystając z pliku reguł (zwykle o nazwie backup_rules.xml), możesz określić, które dane mają być wykluczone z kopii zapasowej. Plik ten musi znajdować się w folderze aplikacji res/xml. Konfiguracja reguł kopii zapasowej różni się w zależności od używanej wersji Androida:

Następnie skonfiguruj plik backup_rules.xml zgodnie z wymaganiami aplikacji dotyczącymi trwałości danych i bezpieczeństwa, korzystając z zaktualizowanego formatu konfiguracji.

Format wymagany do konfiguracji pliku backup_rules.xml umożliwia deweloperom definiowanie niestandardowych reguł tworzenia kopii zapasowych zarówno w chmurze, jak i w przypadku transferów z urządzenia na urządzenie. Jeśli atrybut <device-transfer> nie jest ustawiony, wszystkie dane aplikacji zostaną przeniesione podczas migracji D2D. Należy pamiętać, że nawet jeśli aplikacja docelowa jest kierowana na Androida 12 lub nowszego, na urządzeniach z Androidem 11 (poziom API 30) lub starszego należy zawsze podać osobny plik z dodatkowym zestawem reguł kopii zapasowej.

  • W przypadku Androida w wersji 11 lub starszej dodaj atrybut android:fullBackupContent do elementu <application> w elemencie AndroidManifest.xml:
  • xml xml <application android:name="com.example.foo" android:fullBackupContent="@xml/backup_rules_full"> … </application>

Następnie skonfiguruj plik backup_rules.xml zgodnie z wymaganiami aplikacji dotyczącymi trwałości danych i bezpieczeństwa, używając składni opisanej w artykule Tworzenie kopii zapasowej danych użytkownika.

Wymaganie pełnego szyfrowania

Jeśli nie możesz wykluczyć danych wrażliwych z kopii zapasowej, zalecamy wymaganie szyfrowania end-to-end, co oznacza zezwolenie na tworzenie kopii zapasowych tylko na Androidzie 9 lub nowszym i tylko wtedy, gdy ustawiony jest ekran blokady. Aby to zrobić, użyj flagi requireFlags="clientSideEncryption", którą należy zmienić na disableIfNoEncryptionCapabilities i ustawić na true, zaczynając od Androida 12.

Jeśli nie możesz korzystać ze standardowego systemu kopii zapasowej Androida

Jeśli nie możesz korzystać ze standardowego systemu kopii zapasowej Androida, bezpieczne przechowywanie danych kopii zapasowej oraz określanie, które dane mają być wykluczone z kopii zapasowej, jest bardziej skomplikowane. Trzeba to określić na poziomie kodu, a to przez to jest narażone na błędy, co wiąże się z ryzykiem wycieku danych. W takiej sytuacji zalecamy też regularne testowanie implementacji, aby mieć pewność, że nie nastąpiła zmiana w oczekiwanym działaniu kopii zapasowej.

Materiały