MASTG-TEST-0232: Modos de Criptografia Simétrica Comprometidos
Visão Geral¶
Para testar o uso de modos de criptografia quebrados)) em aplicativos Android, precisamos focar em métodos de frameworks e bibliotecas criptográficas usados para configurar e aplicar modos de criptografia.
No desenvolvimento Android, a classe Cipher da Java Cryptography Architecture (JCA) é a API principal que permite especificar o modo de criptografia para operações criptográficas. O método Cipher.getInstance define a string de transformação, que inclui o algoritmo de criptografia, modo de operação e esquema de preenchimento (padding). O formato geral é "Algorithm/Mode/Padding". Por exemplo:
Cipher.getInstance("AES/ECB/PKCS5Padding")
Neste teste, vamos focar em modos de criptografia simétrica como ECB (Electronic Codebook).
O ECB (definido no NIST SP 800-38A) é geralmente desencorajado consulte o anúncio do NIST de 2023 devido às suas fraquezas de segurança inerentes. Embora não seja explicitamente proibido, seu uso é limitado e desaconselhado na maioria dos cenários. O ECB é um modo de cifra de bloco que opera deterministicamente, dividindo o texto claro em blocos e criptografando-os separadamente, o que revela padrões no texto cifrado. Isso o torna vulnerável a ataques como ataques de texto claro conhecido e ataques de texto claro escolhido.
Por exemplo, as seguintes transformações são todas consideradas vulneráveis:
"AES"(usa o modo AES/ECB por padrão)"AES/ECB/NoPadding""AES/ECB/PKCS5Padding""AES/ECB/ISO10126Padding"
Você pode aprender mais sobre ECB e outros modos no NIST SP 800-38A - Recommendation for Block Cipher Modes of Operation: Methods and Techniques. Consulte também a Decision to Revise NIST SP 800-38A, Recommendation for Block Cipher Modes of Operation: Methods and Techniques e o NIST IR 8459 Report on the Block Cipher Modes of Operation in the NIST SP 800-38 Series para informações mais recentes.
Fora do escopo: Modos de criptografia assimétrica como RSA estão fora do escopo deste teste porque não usam modos de bloco como ECB.
Nas strings de transformação como "RSA/ECB/OAEPPadding" ou "RSA/ECB/PKCS1Padding", a inclusão de ECB neste contexto é enganosa. Diferente das cifras simétricas, o RSA não opera em modos de bloco como ECB. A designação ECB é um placeholder em algumas APIs criptográficas e não implica que o RSA use o modo ECB. Entender essas nuances ajuda a prevenir falsos positivos.
Passos¶
- Execute Análise Estática no Android com uma ferramenta como semgrep no binário do aplicativo, ou use Rastreamento de Métodos (análise dinâmica) com uma ferramenta como Frida para Android, e procure por funções criptográficas que especifiquem modos de criptografia inseguros.
Observação¶
A saída deve conter uma lista de locais onde modos de criptografia quebrados são usados em operações criptográficas.
Avaliação¶
O caso de teste falha se qualquer modo quebrado for identificado no aplicativo.
Mitigations¶
Demos¶
MASTG-DEMO-0023: Usos de Modos de Criptografia Quebrados em Cipher com semgrep