MASTG-TEST-0217: Protocolos TLS Inseguros Explicitamente Permitidos no Código
Visão Geral¶
A Configuração de Segurança de Rede do Android não oferece controle direto sobre versões específicas do TLS (diferentemente do iOS), e a partir do Android 10, o TLS v1.3 é habilitado por padrão para todas as conexões TLS.
Ainda existem várias maneiras de habilitar versões inseguras do TLS, incluindo:
Java Sockets¶
Um aplicativo pode obter um SSLContext usando um protocolo TLS inseguro ao chamar SSLContext.getInstance("TLSv1.1") e também pode habilitar versões de protocolo específicas e potencialmente inseguras usando a chamada de API javax.net.ssl.SSLSocket.setEnabledProtocols(String[] protocols).
Bibliotecas de Terceiros¶
Algumas bibliotecas de terceiros, como OkHttp, Retrofit ou Apache HttpClient, fornecem configurações personalizadas para protocolos TLS. Essas bibliotecas podem permitir a habilitação de protocolos desatualizados se não forem gerenciadas com cuidado:
Por exemplo, o uso de ConnectionSpec.COMPATIBLE_TLS no OkHttp (via okhttp3.ConnectionSpec.Builder.connectionSpecs(...)) pode resultar em versões inseguras do TLS, como TLS 1.1, sendo habilitadas por padrão em determinadas versões. Consulte o histórico de configuração do OkHttp para obter detalhes sobre os protocolos suportados.
A chamada de API okhttp3.ConnectionSpec.Builder.tlsVersions(...) também pode ser usada para definir os protocolos habilitados (documentação do OkHttp).
Etapas¶
- Realizar engenharia reversa do aplicativo ( Descompilação de Código Java).
- Executar uma ferramenta de análise estática ( Análise Estática no Android) no aplicativo com engenharia reversa, direcionando as chamadas para APIs que definem o protocolo TLS.
Observação¶
A saída contém uma lista de todas as versões do TLS habilitadas nas chamadas de API mencionadas acima.
Avaliação¶
O caso de teste falha se qualquer versão insegura do TLS for habilitada diretamente, ou se o aplicativo habilitar qualquer configuração que permita o uso de versões desatualizadas do TLS, como okhttp3.ConnectionSpec.COMPATIBLE_TLS.