MASTG-TEST-0262: References to Backup Configurations Not Excluding Sensitive Data
Content in BETA
This content is in beta and still under active development, so it is subject to change any time (e.g. structure, IDs, content, URLs, etc.).
Overview¶
This test verifies whether apps correctly instruct the system to exclude sensitive files from backups by analyzing the app's AndroidManifest.xml and backup rule configuration files.
"Android Backups" can be implemented via Auto Backup (Android 6.0 (API level 23) and higher) and Key-value backup (Android 2.2 (API level 8) and higher). Auto Backup is the recommended approach by Android as it is enabled by default and requires no work to implement.
To exclude specific files when using Auto Backup, developers must explicitly define exclusion rules in the exclude
tag in:
data_extraction_rules.xml
(for Android 12 and higher usingandroid:dataExtractionRules
)backup_rules.xml
(for Android 11 or lower usingandroid:fullBackupContent
)
The cloud-backup
and device-transfer
parameters can be used to exclude files from cloud backups and device-to-device transfers, respectively.
The key-value backup approach requires developers to set up a BackupAgent
or BackupAgentHelper
and specify what data should be backed up.
Regardless of which approach the app used, Android provides a way to start the backup daemon to back up and restore app files. You can use this daemon for testing purposes and initiate the backup process and restore the app's data, allowing you to verify which files were restored from the backup.
Steps¶
- Obtain the
AndroidManifest.xml
file using Obtaining Information from the AndroidManifest. - Search for the
allowBackup
flag in theAndroidManifest.xml
. - Search for the
fullBackupContent
attribute (for Android 11 or lower) or thedataExtractionRules
attribute (for Android 12 and higher) in theAndroidManifest.xml
. - Retrieve the
backup_rules.xml
ordata_extraction_rules.xml
file.
Observation¶
The output should explicitly show:
- whether the
allowBackup
flag is set totrue
orfalse
. If the flag is not specified, it is treated astrue
by default. - whether the
fullBackupContent
and/ordataExtractionRules
attributes are present in theAndroidManifest.xml
. - the contents of the
backup_rules.xml
ordata_extraction_rules.xml
file, if present.
Evaluation¶
The test fails if the app allows sensitive data to be backed up. Specifically, if the following conditions are met:
android:allowBackup="true"
in theAndroidManifest.xml
android:fullBackupContent="@xml/backup_rules"
isn't declared in theAndroidManifest.xml
(for Android 11 or lower)android:dataExtractionRules="@xml/data_extraction_rules"
isn't declared in theAndroidManifest.xml
(for Android 12 and higher)backup_rules.xml
ordata_extraction_rules.xml
aren't present or don't exclude all sensitive files.