MASTG-TEST-0262: Referências a Configurações de Backup Que Não Excluem Dados Sensíveis
Visão Geral¶
Este teste verifica se os aplicativos instruem corretamente o sistema a excluir arquivos sensíveis de backups através da análise do arquivo AndroidManifest.xml e dos arquivos de configuração de regras de backup.
"Backups do Android") podem ser implementados via Backup Automático (Android 6.0 (nível de API 23) e superior) e Backup de chave-valor (Android 2.2 (nível de API 8) e superior). O Backup Automático é a abordagem recomendada pelo Android, pois está habilitado por padrão e não requer trabalho adicional para implementação.
Para excluir arquivos específicos ao usar o Backup Automático, os desenvolvedores devem definir explicitamente regras de exclusão na tag exclude em:
data_extraction_rules.xml(para Android 12 e superior usandoandroid:dataExtractionRules)backup_rules.xml(para Android 11 ou inferior usandoandroid:fullBackupContent)
Os parâmetros cloud-backup e device-transfer podem ser usados para excluir arquivos de backups em nuvem e transferências entre dispositivos, respectivamente.
A abordagem de backup de chave-valor requer que os desenvolvedores configurem um BackupAgent ou BackupAgentHelper e especifiquem quais dados devem ser copiados.
Independentemente da abordagem utilizada pelo aplicativo, o Android fornece uma maneira de iniciar o daemon de backup para fazer backup e restaurar arquivos do aplicativo. Você pode usar este daemon para fins de teste, iniciar o processo de backup e restaurar os dados do aplicativo, permitindo verificar quais arquivos foram restaurados do backup.
Etapas¶
- Obtenha o arquivo
AndroidManifest.xmlusando Obtenção de Informações do AndroidManifest. - Procure pela flag
allowBackupnoAndroidManifest.xml. - Procure pelo atributo
fullBackupContent(para Android 11 ou inferior) ou pelo atributodataExtractionRules(para Android 12 e superior) noAndroidManifest.xml. - Recupere o arquivo
backup_rules.xmloudata_extraction_rules.xml.
Observação¶
A saída deve mostrar explicitamente:
- se a flag
allowBackupestá definida comotrueoufalse. Se a flag não for especificada, é tratada comotruepor padrão. - se os atributos
fullBackupContente/oudataExtractionRulesestão presentes noAndroidManifest.xml. - o conteúdo do arquivo
backup_rules.xmloudata_extraction_rules.xml, se presente.
Avaliação¶
O teste falha se o aplicativo permitir que dados sensíveis sejam copiados em backup. Especificamente, se as seguintes condições forem atendidas:
android:allowBackup="true"noAndroidManifest.xmlandroid:fullBackupContent="@xml/backup_rules"não está declarado noAndroidManifest.xml(para Android 11 ou inferior)android:dataExtractionRules="@xml/data_extraction_rules"não está declarado noAndroidManifest.xml(para Android 12 e superior)backup_rules.xmloudata_extraction_rules.xmlnão estão presentes ou não excluem todos os arquivos sensíveis.
Mitigations¶
Demos¶
MASTG-DEMO-0034: Fazer backup e restaurar dados do aplicativo com semgrep