HTTP de texto não criptografado / texto simples

Categoria do OWASP: MASVS-NETWORK - Comunicação em rede (link em inglês)

Visão geral

Permitir comunicações de rede de texto não criptografado em um app Android significa que qualquer pessoa que monitora o tráfego de rede pode acessar e manipular os dados que estão sendo transmitidos. Isso se torna uma vulnerabilidade quando os dados transmitidos incluem informações sensíveis, como senhas, números de cartão de crédito ou outras informações pessoais.

Mesmo que você não esteja enviando informações sensíveis, o uso de texto não criptografado ainda pode ser uma vulnerabilidade, já que o tráfego HTTP de texto não criptografado ou texto simples também pode ser manipulado em caso de ataques de envenenamento de rede, por exemplo, envenenamento de ARP ou DNS, o que pode permitir que invasores influenciem o comportamento de um app.

Impacto

Quando um app Android envia ou recebe dados em texto não criptografado por uma rede, qualquer pessoa que esteja monitorando a rede pode interceptar e ler esses dados. Se esses dados incluem informações confidenciais, por exemplo, senhas, números de cartão de crédito ou mensagens pessoais, pode ocorrer roubo de identidade, fraude financeira e outros problemas graves.

Por exemplo, um app que transmite senhas em texto não criptografado pode expor essas credenciais a um agente malicioso que esteja interceptando o tráfego. Esses dados depois podem ser usados para ter acesso não autorizado às contas do usuário.

Mitigações

A orientação desta seção se aplica apenas aos apps destinados ao Android 8.1 (nível 27 da API) ou versões anteriores. No Android 9 (nível 28 da API) e mais recentes, o suporte a texto não criptografado fica desativado por padrão.

Use a funcionalidade NetworkSecurityConfig.xml para desativar o tráfego de texto não criptografado:

XML

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="false">
        <domain includeSubdomains="true">secure.example.com</domain>
    </domain-config>
</network-security-config>

Essa opção ajuda a evitar regressões acidentais em apps devido a alterações nos URLs fornecidos por fontes externas, por exemplo, servidores de back-end.

Recursos