MASTG-TEST-0214: Chaves Criptográficas Embarcadas em Arquivos
Visão Geral¶
Chaves criptográficas podem ser arquivos embutidos, como arquivos de configuração ou de chave, arquivos de certificado, ou outros arquivos de recursos agrupados com o aplicativo, tornando-os acessíveis a qualquer pessoa que consiga extrair os recursos do app. Casos reais incluem o armazenamento de chaves de API, chaves privadas SSL/TLS ou chaves de criptografia dentro desses arquivos, o que pode levar a vulnerabilidades de segurança graves se o aplicativo for submetido à engenharia reversa.
- Identificados por Extensão de Arquivo: Arquivos com extensões como
.key,.pem,.crt,.p12,.cerou.dergeralmente contêm chaves criptográficas ou certificados. - Identificados por Marcadores PEM: Strings como
-----BEGIN PRIVATE KEY-----,-----BEGIN CERTIFICATE-----ou a sequência de bytes0x2d 0x2d 0x2d 0x2d 0x2d(representando-----em ASCII) dentro de arquivos indicam a presença de chaves ou certificados codificados em PEM. - Identificados por Padrões Comuns de Bytes: Arquivos binários contendo sequências de bytes específicas que correspondem a formatos conhecidos como DER ou PKCS#12, como
0x30 0x82(indicando o início de uma estrutura codificada em DER), podem indicar a presença de material criptográfico. - Embutidos em Listas de Propriedades ou Arquivos JSON: Chaves podem ser armazenadas em arquivos de configuração
.plistou.json, frequentemente codificadas como strings Base64. - Identificados por Strings Específicas: Palavras-chave como
privateKey,keyousecretdentro de arquivos ou nomes de variáveis podem indicar chaves embutidas ou dados sensíveis.
Passos¶
- Execute uma ferramenta de análise estática, como radare2 para iOS, no binário do aplicativo procurando por strings ou sequências de bytes conforme indicado acima.
Observação¶
A saída deve incluir quaisquer instâncias em que potenciais chaves criptográficas sejam encontradas embutidas no código-fonte ou no binário do aplicativo.
Avaliação¶
O teste falha se chaves criptográficas embutidas forem encontradas no código-fonte ou no binário.
Garanta que quaisquer chaves identificadas sejam de fato chaves criptográficas usadas para fins relevantes de segurança. Evite falsos positivos verificando o contexto de uso da chave (por exemplo, configurações ou constantes não relacionadas à segurança podem ser identificadas erroneamente como chaves criptográficas).