OWASP-Kategorie: MASVS-CODE: Codequalität
Übersicht
Mit App-Sicherungen sollen die Daten der Nutzer erhalten bleiben, damit sie später auf einem neuen Gerät wiederhergestellt oder bei Datenverlust wiederhergestellt werden können. Die Sicherheitsempfehlungen für App-Sicherungen sind nuanciert und variieren je nach Android-Version und Gerätehersteller. Gemeinsam ist diesen Empfehlungen, dass sie darauf abzielen, dass keine vertraulichen Daten gehackt werden.
Das Standardsystem von Android Backup ist die sicherste, robusteste und einfachste Lösung für Apps, mit der Daten in der Cloud gesichert oder Daten auf ein neues Gerät über die automatische Sicherung übertragen werden können. Diese ist standardmäßig aktiviert, erfordert keinen Implementierungsaufwand und kann auch erweitert werden und kann über eine Sicherung von Schlüssel/Wert-Paaren genutzt werden. Wir empfehlen die Verwendung dieser Lösung, da sie die resultierenden Sicherungsdaten in Verzeichnissen speichert, auf die andere Drittanbieter-Anwendungen nicht zugreifen können. Außerdem werden damit die Verschlüsselung inaktiver Daten, die Verschlüsselung während der Übertragung und Konfigurationen erleichtert, die den Ausschluss sensibler Daten aus Sicherungen ermöglichen.
Wenn eine App stattdessen eine Sicherungslösung implementiert, die nicht auf dem standardmäßigen Android-Sicherungssystem basiert, erhöht sich die Wahrscheinlichkeit von Fehlern, die zu Datenlecks führen. Beispiele für nicht standardmäßige Sicherungslösungen, die Nutzerdaten einem Risiko von Datenlecks aussetzen, sind Apps mit einer Export- oder Sicherungsfunktion, die eine Kopie der App-Daten in Verzeichnissen erstellt, die von anderen Apps gelesen werden können. Diese Daten sind daher anfällig für Datenlecks (entweder direkt oder über andere Sicherheitslücken).
Positiv beeinflussen
Wenn Sie die Sicherheitsempfehlungen beim Einrichten von App-Sicherungen befolgen, wird das Risiko von sensiblen Daten, die Sicherungen enthalten könnten, verhindert. Je nach den tatsächlichen Daten und den Absichten des Angreifers kann ein Datenleck zu einer Offenlegung von Informationen, zur Identitätsdiebstahl und zu finanziellen Verlusten führen.
Abhilfemaßnahmen
Das Android Backup-Standardsystem verwenden
Das standardmäßige Android-Sicherungssystem verschlüsselt Sicherungsdaten immer während der Übertragung und im Ruhezustand. Diese Verschlüsselung wird unabhängig von der verwendeten Android-Version und davon angewendet, ob Ihr Gerät einen Sperrbildschirm hat. Wenn auf dem Gerät ab Android 9 eine Displaysperre eingerichtet ist, werden die Sicherungsdaten nicht nur verschlüsselt, sondern mit einem Schlüssel, der Google nicht bekannt ist. Das Geheimnis der Displaysperre schützt den Verschlüsselungsschlüssel und ermöglicht so eine Ende-zu-Ende-Verschlüsselung.
Halten Sie sich grundsätzlich an die Richtlinien zur Datenspeicherung und die Sicherheitsrichtlinien.
Wenn Ihre Sicherung besonders sensible Daten enthält, empfehlen wir, diese Daten entweder auszuschließen oder eine Ende-zu-Ende-Verschlüsselung zu verlangen, wie im folgenden Abschnitt beschrieben.
Daten aus der Sicherung ausschließen
Sie können mithilfe einer Regelndatei angeben, welche Daten von einer Sicherung ausgeschlossen werden sollen. Diese Datei wird normalerweise backup_rules.xml
genannt und im App-Ordner res/xml
abgelegt.
Je nach verwendeter Android-Version gibt es einige Unterschiede bei der Konfiguration von Sicherungsregeln:
- Für Android-Versionen 12 (API-Level 31) und höher fügen Sie dem
<application>
-Element imAndroidManifest.xml
-Element das Attributandroid:dataExtractionRules
hinzu: - xml
xml <application android:name="com.example.foo" android:dataExtractionRules="@xml/backup_rules_extraction"> … </application>
Konfigurieren Sie dann die Datei backup_rules.xml
gemäß den Anforderungen an die Datenspeicherung und Sicherheit der Anwendung gemäß dem aktualisierten Konfigurationsformat.
Mit dem für die backup_rules.xml
-Dateikonfiguration erforderlichen Format können Entwickler benutzerdefinierte Sicherungsregeln sowohl für die Cloud als auch für Geräte-zu-Geräte-Übertragungen (D2D) definieren. Wenn das <device-transfer>
-Attribut nicht festgelegt ist, werden bei einer D2D-Migration alle Anwendungsdaten übertragen. Auch wenn die Zielanwendung auf Android 12 oder höher ausgerichtet ist, sollte für Geräte mit Android 11 (API-Level 30) oder niedriger immer eine separate Datei mit zusätzlichen Sicherungsregeln angegeben werden.
- Für Android-Versionen 11 und niedriger: Fügen Sie dem
<application>
-Element imAndroidManifest.xml
das Attributandroid:fullBackupContent
hinzu: - xml
xml <application android:name="com.example.foo" android:fullBackupContent="@xml/backup_rules_full"> … </application>
Konfigurieren Sie dann die backup_rules.xml
-Datei gemäß den Datenspeicher- und Sicherheitsanforderungen der Anwendung mithilfe der Syntax, die im Artikel Nutzerdaten sichern beschrieben wird.
Ende-zu-Ende-Verschlüsselung
Wenn Sie sensible Daten nicht aus Ihrem Back-up ausschließen können, empfehlen wir, die Ende-zu-Ende-Verschlüsselung zu erzwingen. Das bedeutet, dass Back-ups nur unter Android 9 oder höher und nur dann zulässig sind, wenn der Sperrbildschirm eingerichtet ist. Dazu können Sie das Flag requireFlags="clientSideEncryption"
verwenden, das ab Android 12 in disableIfNoEncryptionCapabilities
umbenannt und auf true
gesetzt werden muss.
Wenn Sie das Standard-Android Backup-System nicht verwenden können
Wenn Sie das standardmäßige Android-Sicherungssystem nicht verwenden können, ist es etwas komplizierter, Ihre Sicherungsdaten sicher zu speichern und anzugeben, welche Daten von der Sicherung ausgeschlossen werden sollen. Dies muss auf Codeebene angegeben werden und ist folglich fehleranfällig und stellt das Risiko von Datenlecks dar. In diesem Szenario wird außerdem empfohlen, Ihre Implementierung regelmäßig zu testen, um sicherzustellen, dass das erwartete Sicherungsverhalten nicht geändert wurde.
Ressourcen
- Beschreibung des Attributs „allowBackup“
- Dateibasierte Verschlüsselung
- Änderungen im D2D-Übertragungsverhalten
- Nutzerdaten mit der automatischen Sicherung sichern
- Schlüssel/Wert-Paare mit dem Android Backup Service sichern
- Sicherung unter Android 12 oder höher verwalten
- Sicherung unter Android 11 und niedriger verwalten
- Personenidentifizierbare Informationen in Verträgen und Richtlinien von Google
- Sicherung und Wiederherstellung testen
- Kryptografie
- Android-Schlüsselspeichersystem
- ADB
- Entwickleroptionen