Skip to content

MASTG-TEST-0002: Testando Armazenamento Local para Validação de Entrada

Visão Geral

Para qualquer armazenamento de dados publicamente acessível, qualquer processo pode sobrescrever os dados. Isso significa que a validação de entrada precisa ser aplicada no momento em que os dados são lidos novamente.

Nota: O mesmo se aplica a dados acessíveis de forma privada em um dispositivo com root

Análise Estática

Usando Shared Preferences

Quando você usa o SharedPreferences.Editor para ler ou escrever valores int/boolean/long, não é possível verificar se os dados foram sobrescritos ou não. Entretanto: dificilmente isso pode ser usado para ataques reais além do encadeamento de valores (por exemplo, não é possível incluir exploits adicionais que assumiriam o fluxo de controle). No caso de uma String ou um StringSet, você deve ter cuidado com a forma como os dados são interpretados. Usando persistência baseada em reflexão? Consulte a seção sobre "Testando Persistência de Objetos" para Android para ver como isso deve ser validado. Usando o SharedPreferences.Editor para armazenar e ler certificados ou chaves? Certifique-se de que seu provedor de segurança foi corrigido considerando vulnerabilidades como as encontradas no Bouncy Castle.

Em todos os casos, ter o conteúdo com HMAC pode ajudar a garantir que nenhuma adição e/ou alteração tenha sido aplicada.

Usando Outros Mecanismos de Armazenamento

Caso outros mecanismos de armazenamento público (além do SharedPreferences.Editor) sejam usados, os dados precisam ser validados no momento em que são lidos do mecanismo de armazenamento.