MASWE-0006: Dados Sensíveis Armazenados sem Criptografia em Locais de Armazenamento Privado
Content in BETA
This content is in beta and still under active development, so it is subject to change any time (e.g. structure, IDs, content, URLs, etc.).
Visão Geral¶
Aplicativos móveis podem precisar armazenar dados sensíveis localmente em locais de armazenamento privados, como o sandbox do aplicativo, e esses dados correm risco de exposição por meio de, por exemplo, permissões de arquivo incorretas, uma vulnerabilidade do aplicativo, vulnerabilidade do dispositivo ou mecanismos de backup de dados.
Dados sensíveis)) podem incluir informações pessoalmente identificáveis (PII), senhas, chaves criptográficas ou tokens de sessão.
Impacto¶
- Perda de Confidencialidade: Sob as condições certas, um atacante poderia extrair dados sensíveis armazenados internamente no sandbox do aplicativo, levando à perda de confidencialidade e permitindo ataques adicionais, como roubo de identidade ou tomada de conta.
Modos de Introdução¶
- Dados Armazenados Não Criptografados: Dados sensíveis são gravados no diretório de dados privados do aplicativo (sandbox) sem criptografia.
- Chave de Criptografia Embutida em Código: Dados sensíveis são criptografados, mas a chave está embutida em código dentro do aplicativo.
- Chave de Criptografia Armazenada no Sistema de Arquivos: Dados sensíveis são criptografados, mas a chave é armazenada junto com eles ou em outro local facilmente acessível.
- Criptografia Utilizada é Insuficiente: Dados sensíveis são criptografados, mas a criptografia não é considerada forte.
Mitigações¶
- Evite armazenar dados sensíveis localmente se não forem necessários para a funcionalidade do aplicativo, para reduzir a probabilidade e o impacto desta fraqueza. Por exemplo, mantenha PII no lado do servidor, renderize-a no momento do uso e remova quaisquer dados em cache no logout.
- Armazene chaves criptográficas exclusivamente usando a solução de keystore com suporte de hardware da plataforma, como o Android Keystore ou o iOS Keychain.
- Para armazenar outros arquivos e preferências, use recursos fornecidos pela plataforma para criptografar dados em repouso ou outras técnicas que implementem criptografia de envelope com Data Encryption Keys (DEK) e Key Encryption Keys (KEK) ou métodos equivalentes. Por exemplo, no Android, use
EncryptedFileouEncryptedSharedPreferences; no iOS, use iOS Data Protection.
Aviso
A biblioteca de criptografia de segurança do Jetpack, incluindo as classes EncryptedFile e EncryptedSharedPreferences, foi descontinuada. No entanto, como um substituto oficial ainda não foi lançado, recomendamos o uso dessas classes até que um esteja disponível.
Tests¶
MASTG-TEST-0287: Dados Sensíveis Armazenados Sem Criptografia via a API SharedPreferences no App Sandbox MASTG-TEST-0207: Dados Armazenados no App Sandbox em Tempo de Execução