Skip to content

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 usando android:dataExtractionRules)
  • backup_rules.xml (para Android 11 ou inferior usando android: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

  1. Obtenha o arquivo AndroidManifest.xml usando Obtenção de Informações do AndroidManifest.
  2. Procure pela flag allowBackup no AndroidManifest.xml.
  3. Procure pelo atributo fullBackupContent (para Android 11 ou inferior) ou pelo atributo dataExtractionRules (para Android 12 e superior) no AndroidManifest.xml.
  4. Recupere o arquivo backup_rules.xml ou data_extraction_rules.xml.

Observação

A saída deve mostrar explicitamente:

  • se a flag allowBackup está definida como true ou false. Se a flag não for especificada, é tratada como true por padrão.
  • se os atributos fullBackupContent e/ou dataExtractionRules estão presentes no AndroidManifest.xml.
  • o conteúdo do arquivo backup_rules.xml ou data_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" no AndroidManifest.xml
  • android:fullBackupContent="@xml/backup_rules" não está declarado no AndroidManifest.xml (para Android 11 ou inferior)
  • android:dataExtractionRules="@xml/data_extraction_rules" não está declarado no AndroidManifest.xml (para Android 12 e superior)
  • backup_rules.xml ou data_extraction_rules.xml nã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