Skip to content

MASTG-TEST-0283: Implementação Incorreta de Verificação de Nome de Host do Servidor

Visão Geral

Este teste avalia se um aplicativo Android implementa um HostnameVerifier que utiliza o método verify(...) de forma insegura, efetivamente desativando a validação de nome de host para as conexões afetadas.

Tais implementações inseguras podem permitir que um invasor execute um ataque MITM) com um certificado válido (ou autoassinado) e intercepte ou manipule o tráfego do aplicativo.

Etapas

  1. Realizar engenharia reversa do aplicativo ( Descompilação de Código Java).
  2. Inspecionar o código-fonte e executar uma ferramenta de análise estática ( Análise Estática no Android) procurando todos os usos de HostnameVerifier.

Observação

A saída contém uma lista de locais onde HostnameVerifier é utilizado.

Avaliação

O teste falha se o aplicativo não validar corretamente se o nome de host do servidor corresponde ao certificado.

Isso inclui casos como:

  • Sempre aceitar nomes de host: substituir verify(...) para retornar incondicionalmente true, independentemente do nome de host real ou certificado.
  • Regras de correspondência excessivamente amplas: usar lógica de curinga permissiva que corresponde a domínios não intencionais.
  • Cobertura de verificação incompleta: falhar ao invocar a verificação de nome de host em todos os canais SSL/TLS, como os criados via SSLSocket, ou durante a renegociação.
  • Verificação manual ausente: não realizar a verificação de nome de host quando ela não é feita automaticamente, como ao usar a API de baixo nível SSLSocket.

Ao testar usando ferramentas automatizadas, será necessário inspecionar todos os locais reportados no código de engenharia reversa para confirmar a implementação incorreta ( Revisão de Código Java Descompilado).