MASTG-TEST-0067: Teste de Verificação de Identidade de Endpoint
Visão Geral¶
Análise Estática¶
Utilizar TLS para transportar informações sensíveis pela rede é fundamental para a segurança. No entanto, criptografar a comunicação entre um aplicativo móvel e sua API de backend não é trivial. Os desenvolvedores frequentemente optam por soluções mais simples, porém menos seguras (por exemplo, aquelas que aceitam qualquer certificado) para facilitar o processo de desenvolvimento, e às vezes essas soluções frágeis acabam na versão de produção, potencialmente expondo os usuários a ataques do tipo Homem-no-Meio (MITM)). Consulte "CWE-295: Validação Imprópria de Certificado".
Estes são alguns dos problemas que devem ser abordados:
- Verificar se o aplicativo está vinculado a um SDK anterior ao iOS 9.0. Nesse caso, o ATS (App Transport Security) é desativado, independentemente da versão do sistema operacional em que o aplicativo está sendo executado.
- Verificar se o certificado provém de uma fonte confiável, ou seja, de uma AC (Autoridade Certificadora) confiável.
- Determinar se o servidor de destino apresenta o certificado correto.
Certifique-se de que o nome do host e o próprio certificado são verificados corretamente. Exemplos e armadilhas comuns estão disponíveis na documentação oficial da Apple.
Recomendamos fortemente complementar a análise estática com a análise dinâmica. Se você não possui o código-fonte ou o aplicativo é difícil de realizar engenharia reversa, ter uma estratégia sólida de análise dinâmica pode definitivamente ajudar. Nesse caso, você não saberá se o aplicativo utiliza APIs de baixo ou alto nível, mas ainda poderá testar diferentes cenários de avaliação de confiança (por exemplo, "o aplicativo aceita um certificado autoassinado?").
Análise Dinâmica¶
Nossa abordagem de teste é relaxar gradualmente a segurança da negociação de handshake SSL e verificar quais mecanismos de segurança estão habilitados.
- Com o Burp configurado como proxy, certifique-se de que não há certificado adicionado ao armazenamento de confiança (Settings -> General -> Profiles) e que ferramentas como o SSL Kill Switch estão desativadas. Inicie seu aplicativo e verifique se você consegue visualizar o tráfego no Burp. Quaisquer falhas serão relatadas na aba 'Alerts'. Se você conseguir ver o tráfego, isso significa que não há validação de certificado sendo realizada. Se, no entanto, você não conseguir ver nenhum tráfego e receber uma informação sobre falha no handshake SSL, prossiga para o próximo ponto.
- Agora, instale o certificado do Burp, conforme explicado na documentação do usuário do Burp. Se o handshake for bem-sucedido e você conseguir ver o tráfego no Burp, isso significa que o certificado foi validado em relação ao armazenamento de confiança do dispositivo, mas não há pinning de certificado implementado.
Se a execução das instruções da etapa anterior não resultar no tráfego sendo intermediado pelo proxy, pode significar que o pinning de certificado está realmente implementado e todas as medidas de segurança estão em vigor. No entanto, você ainda precisa contornar o pinning para testar o aplicativo. Consulte Contornando Certificate Pinning para obter mais informações sobre isso.