Skip to content

MASTG-TEST-0209: Tamanhos de Chave Insuficientes

Visão Geral

Neste caso de teste, buscaremos o uso de tamanhos de chaves insuficientes em aplicativos iOS. Para isso, precisamos focar nas estruturas e bibliotecas criptográficas disponíveis no iOS e nos métodos utilizados para gerar chaves criptográficas.

  • CommonCrypto: A função CCCrypt é usada para criptografia e descriptografia simétrica e especifica o tamanho ou comprimento da chave em seu quinto parâmetro keyLength.
  • Security: A função SecKeyCreateRandomKey é usada para gerar uma chave aleatória utilizando certos atributos, incluindo kSecAttrKeyType e kSecAttrKeySizeInBits. A função SecKeyGeneratePair está obsoleta no iOS 16.
  • CryptoKit: As classes AES.GCM e ChaChaPoly são utilizadas para criptografia e descriptografia simétrica.

Como geralmente não se geram chaves diretamente no CryptoKit (a biblioteca faz isso automaticamente), focaremos nas bibliotecas CommonCrypto e Security neste teste.

Etapas

  1. Execute uma ferramenta de análise estática como radare2 para iOS no binário do aplicativo, ou utilize uma ferramenta de análise dinâmica como Frida para iOS, e busque por usos das funções criptográficas que geram chaves.

Observação

A saída deve conter o código desmontado das funções que utilizam CCCrypt ou outras funções criptográficas.

Avaliação

O caso de teste falha se for possível encontrar o uso de tamanhos de chaves insuficientes no código-fonte. Por exemplo, um tamanho de chave de 1024 bits é considerado insuficiente para criptografia RSA, e um tamanho de chave de 128 bits é considerado insuficiente para criptografia AES considerando ataques de computação quântica.

Demos

MASTG-DEMO-0011: Usos de Tamanho Insuficiente de Chave em SecKeyCreateRandomKey com r2