Skip to content

MASWE-0014: Chaves Criptográficas Não Protegidas Adequadamente em Repouso

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.).

Send Feedback

Visão Geral

Chaves criptográficas são essenciais para proteger dados sensíveis em aplicações móveis. No entanto, se essas chaves não forem adequadamente protegidas em repouso, podem ser facilmente comprometidas. Esta vulnerabilidade envolve o armazenamento de chaves criptográficas em locais inseguros, como SharedPreferences não criptografados, arquivos desprotegidos, sua codificação direta no código do aplicativo ou sua inclusão em sistemas de controle de versão e versionamento que podem acabar no pacote final do aplicativo em produção.

Ataques podem descompilar ou realizar engenharia reversa no aplicativo para extrair chaves codificadas.

Impacto

  • Acesso Não Autorizado: Se as chaves criptográficas não forem adequadamente protegidas, atacantes podem obter acesso não autorizado a dados sensíveis e potencial roubo de identidade.
  • Perda de Integridade: Chaves comprometidas podem permitir que atacantes adulterem dados criptografados.
  • Perda de Confidencialidade: Informações sensíveis podem ser expostas, resultando em perda de confidencialidade. Uma vez que as chaves são expostas, todos os dados criptografados com essas chaves ficam em risco.

Modos de Introdução

  • Locais de Armazenamento Inseguros: Armazenar chaves criptográficas em SharedPreferences não criptografados, arquivos desprotegidos ou outros locais inseguros.
  • Chaves Codificadas: Incluir chaves criptográficas diretamente no código do aplicativo, tornando-as suscetíveis à extração através de descompilação e engenharia reversa.
  • Falta de Criptografia: Exportar chaves criptográficas em texto simples sem criptografá-las usando um método seguro.

Mitigações

  • Usar Keystores da Plataforma: Sempre que possível, gerar chaves criptográficas dinamicamente no dispositivo, em vez de usar chaves predefinidas, e garantir que sejam armazenadas com segurança após a criação. Para isso, você pode usar os keystores específicos da plataforma, como o Android KeyStore ou o iOS KeyChain.
  • Implementar Soluções de Segurança de Hardware Mais Fortes: Para os casos mais críticos e sempre que disponível e compatível para o caso de uso em questão, utilize as opções de segurança mais robustas com suporte de hardware, como o Android StrongBox ou a opção Secure Enclave do iOS kSecAttrTokenIDSecureEnclave para garantir a mais alta proteção, incluindo contra ataques físicos e de canal lateral.
  • Usar Sistemas de Gerenciamento de Chaves Criptográficas: Recuperar chaves com segurança a partir de serviços do lado do servidor que fornecem armazenamento seguro, controle de acesso e auditoria para dados sensíveis. Por exemplo, AWS Secrets Manager, Azure Key Vault ou Google Cloud Secret Manager são algumas soluções populares de armazenamento gerenciado de segredos. O aplicativo pode recuperar com segurança os segredos necessários em tempo de execução por meio de chamadas de API seguras e autenticadas.
  • Criptografar e Empacotar Chaves: Sempre que o armazenamento de chaves em keystores da plataforma não for adequado para o caso de uso ou as chaves precisarem ser exportadas, use técnicas de criptografia de envelope (DEK+KEK) e empacotamento de chaves conforme especificado em NIST.SP.800-175Br1 5.3.5 para proteger as chaves criptográficas antes de armazená-las.
  • Seguir as Melhores Práticas Padrão de Gerenciamento de Chaves: Implementar práticas adequadas de gerenciamento de chaves, incluindo rotação de chaves e mecanismos robustos de proteção para chaves em armazenamento, conforme descrito em NIST.SP.800-57pt1r5 6.2.2, garantindo disponibilidade, integridade, confidencialidade e associação adequada com uso, entidades e informações relacionadas.

Tests

MASTG-TEST-0212: Uso de Chaves Criptográficas Embutidas no Código MASTG-TEST-0213: Uso de Hardcoded Cryptographic Keys em Código MASTG-TEST-0214: Chaves Criptográficas Embarcadas em Arquivos