Skip to content

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, .cer ou .der geralmente contêm chaves criptográficas ou certificados.
  • Identificados por Marcadores PEM: Strings como -----BEGIN PRIVATE KEY-----, -----BEGIN CERTIFICATE----- ou a sequência de bytes 0x2d 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 .plist ou .json, frequentemente codificadas como strings Base64.
  • Identificados por Strings Específicas: Palavras-chave como privateKey, key ou secret dentro de arquivos ou nomes de variáveis podem indicar chaves embutidas ou dados sensíveis.

Passos

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