MASTG-TEST-0202: Referências a APIs e Permissões para Acesso ao Armazenamento Externo
Visão Geral¶
Este teste utiliza análise estática para buscar usos de APIs que permitem que um aplicativo escreva em locais compartilhados com outros apps ( Testando Local Storage para Dados Sensíveis), como as APIs de armazenamento externo) ou a API MediaStore), bem como as permissões relacionadas ao armazenamento no manifesto do Android).
Este teste estático é excelente para identificar todos os locais de código onde o app está gravando dados no armazenamento compartilhado. No entanto, ele não fornece os dados reais que estão sendo escritos e, em alguns casos, o caminho real no armazenamento do dispositivo onde os dados estão sendo gravados. Portanto, recomenda-se combinar este teste com outros que adotam uma abordagem dinâmica, pois isso proporcionará uma visão mais completa dos dados que estão sendo gravados no armazenamento compartilhado.
Passos¶
- Realize a engenharia reversa do app ( Descompilação de Código Java).
- Execute uma ferramenta de análise estática ( Análise Estática no Android) no app com engenharia reversa direcionada a chamadas para quaisquer APIs de armazenamento externo e permissões de armazenamento no manifesto do Android.
A ferramenta de análise estática deve ser capaz de identificar todas as APIs e permissões possíveis usadas para gravar no armazenamento compartilhado, como getExternalStoragePublicDirectory, getExternalStorageDirectory, getExternalFilesDir, MediaStore, WRITE_EXTERNAL_STORAGE e MANAGE_EXTERNAL_STORAGE. Consulte a documentação do Android para obter mais informações sobre essas APIs e permissões.
Observação¶
A saída deve conter uma lista de APIs e permissões relacionadas ao armazenamento usadas para gravar no armazenamento compartilhado e seus respectivos locais de código.
Avaliação¶
O caso de teste falha se:
- o app tiver as permissões adequadas declaradas no manifesto do Android (por exemplo,
WRITE_EXTERNAL_STORAGE,MANAGE_EXTERNAL_STORAGE, etc.) - e os dados que estão sendo gravados no armazenamento compartilhado forem sensíveis e não estiverem criptografados.
Para determinar o último, pode ser necessário revisar cuidadosamente o código revertido ( Revisão de Código Java Descompilado) e/ou combinar este teste com outros que adotem uma abordagem dinâmica, pois isso proporcionará uma visão mais completa dos dados que estão sendo gravados no armazenamento compartilhado.
Referências¶
- Gerenciar todos os arquivos em um dispositivo de armazenamento
- Acessar arquivos de mídia do armazenamento compartilhado
Demos¶
MASTG-DEMO-0004: Aplicativo Escrevendo no Armazenamento Externo com Restrições de Scoped Storage MASTG-DEMO-0003: Aplicativo escrevendo em armazenamento externo sem as restrições do Scoped Storage MASTG-DEMO-0005: Gravação de Aplicativo em Armazenamento Externo via MediaStore API