Skip to content

MASTG-TEST-0061: Verificação da Configuração de Algoritmos Padrão de Criptografia

Deprecated Test

This test is deprecated and should not be used anymore. Reason: Nova versão disponível no MASTG V2

Please check the following MASTG v2 tests that cover this v1 test:

Visão Geral

Análise Estática

Para cada uma das bibliotecas utilizadas pelo aplicativo, os algoritmos e configurações criptográficas utilizados precisam ser verificados para garantir que não estejam obsoletos e sejam usados corretamente.

Preste atenção em como as estruturas de dados que contêm chaves (a serem removidas) e estruturas de dados em texto simples são definidas. Se a palavra-chave let for utilizada, então você cria uma estrutura imutável que é mais difícil de apagar da memória. Certifique-se de que ela faça parte de uma estrutura pai que possa ser facilmente removida da memória (por exemplo, uma struct que existe temporariamente).

Garanta que as melhores práticas descritas no capítulo "Criptografia para Aplicativos Móveis)" sejam seguidas. Consulte algoritmos inseguros e obsoletos) e problemas comuns de configuração).

CommonCryptor

Se o aplicativo utiliza implementações criptográficas padrão fornecidas pela Apple, a maneira mais fácil de determinar o status do algoritmo relacionado é verificar as chamadas para funções do CommonCryptor, como CCCrypt e CCCryptorCreate. O código-fonte contém as assinaturas de todas as funções do CommonCryptor.h. Por exemplo, CCCryptorCreate tem a seguinte assinatura:

CCCryptorStatus CCCryptorCreate(
    CCOperation op,             /* kCCEncrypt, etc. */
    CCAlgorithm alg,            /* kCCAlgorithmDES, etc. */
    CCOptions options,          /* kCCOptionPKCS7Padding, etc. */
    const void *key,            /* raw key material */
    size_t keyLength,
    const void *iv,             /* optional initialization vector */
    CCCryptorRef *cryptorRef);  /* RETURNED */

Você pode então comparar todos os tipos enum para determinar qual algoritmo, preenchimento (padding) e material de chave são utilizados. Preste atenção ao material de chaveamento: a chave deve ser gerada de forma segura — seja usando uma função de derivação de chave ou uma função de geração de números aleatórios. Observe que as funções que são mencionadas no capítulo "Criptografia para Aplicativos Móveis" como obsoletas ainda são suportadas programaticamente. Elas não devem ser utilizadas.

Bibliotecas de terceiros

Considerando a evolução contínua de todas as bibliotecas de terceiros, este não deve ser o lugar para avaliar cada biblioteca em termos de análise estática. Ainda assim, existem alguns pontos de atenção:

  • Encontre a biblioteca sendo utilizada: Isso pode ser feito usando os seguintes métodos:
    • Verifique o cartfile se o Carthage for utilizado.
    • Verifique o podfile se o Cocoapods for utilizado.
    • Verifique as bibliotecas vinculadas: Abra o arquivo xcodeproj e verifique as propriedades do projeto. Vá para a aba Build Phases e verifique as entradas em Link Binary With Libraries para qualquer uma das bibliotecas. Consulte seções anteriores sobre como obter informações semelhantes usando MobSF.
    • No caso de fontes copiadas e coladas: procure os arquivos de cabeçalho (no caso de uso de Objective-C) e, caso contrário, os arquivos Swift por nomes de métodos conhecidos de bibliotecas conhecidas.
  • Determine a versão sendo utilizada: Sempre verifique a versão da biblioteca sendo utilizada e confira se há uma versão mais recente disponível na qual possíveis vulnerabilidades ou deficiências foram corrigidas. Mesmo sem uma versão mais nova de uma biblioteca, pode ser o caso de funções criptográficas ainda não terem sido revisadas. Portanto, sempre recomendamos usar uma biblioteca que tenha sido validada ou garantir que você tenha a capacidade, conhecimento e experiência para fazer a validação você mesmo.
  • Manualmente?: Recomendamos não criar sua própria criptografia, nem implementar funções criptográficas conhecidas por conta própria.