MASTG-TEST-0244: Ausência de Certificate Pinning no Tráfego de Rede
Visão Geral¶
Existem várias formas de uma aplicação implementar o certificate pinning, incluindo por meio do Android Network Security Config, implementações personalizadas de TrustManager, bibliotecas de terceiros e código nativo. Como algumas implementações podem ser difíceis de identificar por meio de análise estática, especialmente quando há ofuscação ou carregamento dinâmico de código envolvidos, este teste utiliza técnicas de interceptação de rede para determinar se o certificate pinning está sendo aplicado em tempo de execução.
O objetivo deste caso de teste é observar se um ataque MITM) consegue interceptar o tráfego HTTPS do aplicativo. Uma interceptação MITM bem-sucedida indica que o aplicativo não está usando certificate pinning ou está implementando-o incorretamente.
Se o aplicativo estiver implementando o certificate pinning adequadamente, o ataque MITM deve falhar porque o aplicativo rejeita certificados emitidos por uma CA não autorizada, mesmo que a CA seja confiável pelo sistema.
Dica de teste: Ao realizar o ataque MITM, pode ser útil monitorar os logs do sistema (consulte Monitoramento de Logs do Sistema). Se uma verificação de pinning/validação de certificado falhar, um evento semelhante à seguinte entrada de log pode ficar visível, indicando que o aplicativo detectou o ataque MITM e não estabeleceu a conexão.
I/X509Util: Failed to validate the certificate chain, error: Pin verification failed
Etapas¶
- Configure um proxy de interceptação, consulte Configurando um Proxy de Interceptação.
- Instale o aplicativo em um dispositivo conectado a esse proxy e intercepte a comunicação.
- Extraia todos os domínios que foram interceptados.
Observação¶
A saída deve conter uma lista de domínios para os quais a interceptação foi bem-sucedida.
Avaliação¶
O caso de teste falha se qualquer domínio relevante foi interceptado.