Skip to content

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

  1. Realize a engenharia reversa do app ( Descompilação de Código Java).
  2. 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

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