MASTG-TEST-0211: Algoritmos de Hashing Comprometidos
Visão Geral¶
Para testar o uso de algoritmos de hash quebrados em aplicativos iOS, precisamos nos concentrar nos métodos de frameworks e bibliotecas criptográficas utilizados para realizar operações de hashing.
-
CommonCrypto: CommonDigest.h define os seguintes algoritmos de hash:
CC_MD2CC_MD4CC_MD5CC_SHA1CC_SHA224CC_SHA256CC_SHA384CC_SHA512
-
CryptoKit: Suporta três algoritmos de hash criptograficamente seguros e dois inseguros em uma classe dedicada chamada
Insecure:SHA256SHA384SHA512Insecure.MD5Insecure.SHA1
Observação: o framework Security suporta apenas algoritmos assimétricos e, portanto, está fora do escopo deste teste.
Passos¶
- Execute uma ferramenta de análise estática como radare2 para iOS no binário do aplicativo, ou use uma ferramenta de análise dinâmica como Frida para iOS, e procure por usos das funções criptográficas que realizam operações de hashing.
Observação¶
A saída deve conter o código desmontado das funções que utilizam as funções criptográficas relevantes.
Avaliação¶
O caso de teste falha se for possível encontrar o uso de algoritmos de hash quebrados no código-fonte. Por exemplo:
- MD5
- SHA-1
Mantenha-se atualizado: Esta é uma lista não exaustiva de algoritmos quebrados. Certifique-se de verificar os padrões e recomendações mais recentes de organizações como o National Institute of Standards and Technology (NIST), o German Federal Office for Information Security (BSI) ou qualquer outra autoridade relevante em sua região. Isso é importante ao construir um aplicativo que usa dados que serão armazenados por um longo período. Certifique-se de seguir as recomendações do NIST do documento NIST IR 8547 "Transition to Post-Quantum Cryptography Standards", 2024.
Considerações de Contexto:
Para reduzir falsos positivos, certifique-se de entender o contexto no qual o algoritmo está sendo usado antes de reportar o código associado como inseguro. Garanta que ele está sendo usado em um contexto relevante para segurança para proteger dados sensíveis.
Por exemplo, usar o algoritmo quebrado MD5 para hashing de senhas é proibido pelo NIST, pois não é mais considerado seguro para fins criptográficos. No entanto, usar MD5 para checksums ou outras tarefas não criptográficas, onde a segurança não é uma preocupação, geralmente é aceitável.
Demos¶
MASTG-DEMO-0015: Usos de Algoritmos de Hashing Comprometidos no CommonCrypto com r2 MASTG-DEMO-0016: Usos de Algoritmos de Hash Quebrados no CryptoKit com r2