MASWE-0050: Tráfego em Texto Claro
Content in BETA
This content is in beta and still under active development, so it is subject to change any time (e.g. structure, IDs, content, URLs, etc.).
Visão Geral¶
Quando os dados são enviados em texto claro (ou seja, sem criptografia), tornam-se acessíveis a atacantes que podem monitorar os canais de rede. Os atacantes podem realizar eavesdropping passivo para interceptar dados ou empregar ataques ativos de Máquina no Meio (MITM))) para manipular dados, potencialmente alterando o comportamento do aplicativo ou injetando conteúdo malicioso.
Essa fragilidade é especialmente preocupante quando informações sensíveis são transmitidas sem criptografia, colocando a privacidade e a segurança do usuário em risco direto. Mesmo quando dados sensíveis não estão sendo transmitidos, o uso de comunicação em texto claro continua sendo uma vulnerabilidade. Ataques de rede como ARP poisoning e DNS spoofing podem permitir que atacantes interceptem ou redirecionem o tráfego, potencialmente interrompendo a funcionalidade do aplicativo ou enganando os usuários ao redirecioná-los para sites maliciosos que se passam por serviços legítimos.
Se as conexões fossem protegidas usando criptografia e mecanismos adequados de autenticação, esses ataques seriam muito mais difíceis de executar, pois o atacante precisaria contornar a criptografia e a validação de certificados. Protocolos de rede seguros não apenas fornecem confidencialidade, mas também garantem a integridade e autenticidade dos dados por meio de criptografia e validação de certificados, impedindo que atacantes alterem os dados.
Impacto¶
- Interceptação de Dados: Atacantes podem capturar e ler informações sensíveis transmitidas pela rede.
- Manipulação de Dados: Atacantes podem alterar dados em trânsito, causando corrupção ou injetando conteúdo malicioso.
- Acesso Não Autorizado: Atacantes podem interceptar tokens de sessão ou credenciais enviados por canais de texto claro, permitindo que se passem por usuários e obtenham acesso não autorizado a contas de usuário ou sistemas.
- Violação de Privacidade: Informações pessoais e confidenciais do usuário podem ser expostas, violando regulamentos de privacidade.
- Violações de Conformidade Regulatória: A exposição de dados sensíveis pode levar ao descumprimento de leis como GDPR ou HIPAA, resultando em penalidades legais.
- Danos à Reputação: Violações de segurança podem corroer a confiança do usuário e prejudicar a reputação da organização.
Modos de Introdução¶
- Tráfego em Texto Claro Permitido nas Configurações Fornecidas pela Plataforma: Configurar definições fornecidas pela plataforma (por exemplo, Network Security Configuration no Android ou App Transport Security no iOS) para permitir explicitamente tráfego em texto claro (globalmente ou por domínio), tornando-o o comportamento padrão para todas as conexões de rede gerenciadas por essas configurações.
- Uso de HTTP: Usar HTTP em vez de HTTPS para comunicação, o que não criptografa dados em trânsito.
- Uso de Protocolos Inseguros Não HTTP: Usar protocolos inseguros como FTP, SMTP sem TLS, sockets TCP ou protocolos personalizados que não criptografam dados em trânsito.
- Uso de APIs de Rede de Baixo Nível: Uso de APIs de rede de baixo nível que não impõem criptografia e não respeitam as configurações de segurança de rede da plataforma, como
Socketno Android ouNSURLConnectionno iOS. - Configuração Incorreta de Frameworks Multiplataforma: Configurações inadequadas em frameworks multiplataforma podem permitir tráfego em texto claro para ambas as versões Android e iOS de um aplicativo.
- Bibliotecas de Terceiros: Usar bibliotecas ou SDKs de terceiros que utilizam métodos de comunicação inseguros por padrão ou estão configurados incorretamente.
Mitigações¶
- Use Protocolos Seguros: Sempre use protocolos seguros como HTTPS (que emprega TLS para criptografia), FTPS, SFTP ou SMTPS para todos os canais de comunicação. Garanta que esses protocolos sejam usados consistentemente em todo o aplicativo.
- Desabilite Explicitamente o Tráfego em Texto Claro: Nunca permita tráfego em texto claro globalmente na configuração do aplicativo. Garanta que o tráfego em texto claro esteja explicitamente desabilitado usando configurações de segurança como Network Security Configuration no Android e App Transport Security (ATS) no iOS. Prefira exceções por domínio em vez de configurações globais, mas use-as com cuidado e apenas quando não houver outra opção.
- Use Exceções por Domínio com Moderação: Se o tráfego em texto claro for absolutamente necessário para domínios específicos, certifique-se de que esses domínios sejam confiáveis e essenciais para a funcionalidade do aplicativo, e realize uma avaliação de risco completa antes de incluí-los.
- Prefira Correções no Servidor: Sempre que possível, trabalhe com a equipe do servidor para habilitar comunicação segura. Em vez de adicionar exceções de segurança de rede ao aplicativo móvel, como permitir tráfego em texto claro ou reduzir a versão mínima do TLS, atualize as configurações do servidor para suportar HTTPS com certificados válidos e protocolos TLS modernos.
- Use APIs de Rede de Alto Nível: Use APIs de rede de alto nível que lidam automaticamente com criptografia, validação de certificados e erros, como
HttpsURLConnectionno Android ouURLSessionno iOS. Evite usar APIs de rede de baixo nível ou stacks de rede personalizados que contornem os recursos de segurança de rede fornecidos pela plataforma. - Use Frameworks Multiplataforma Seguros: Certifique-se de que frameworks multiplataforma—como React Native, Flutter ou Xamarin—estejam configurados para impor comunicação segura por padrão e não permitam tráfego em texto claro. Revise a documentação do framework e ajuste as configurações de segurança de rede para alinhar-se com as melhores práticas.
- Use Componentes de Terceiros Seguros: Verifique se quaisquer bibliotecas e SDKs de terceiros usados no aplicativo impõem protocolos de comunicação seguros, especialmente se eles lidam com dados sensíveis ou usam APIs de rede de baixo nível. Garanta que esses componentes sejam atualizados regularmente para abordar quaisquer vulnerabilidades.
Tests¶
MASTG-TEST-0236: Tráfego em Texto Claro Observado na Rede MASTG-TEST-0237: Configurações de Framework Multiplataforma que Permitem Tráfego em Texto Claro MASTG-TEST-0218: Protocolos TLS Inseguros no Tráfego de Rede MASTG-TEST-0233: HTTP URLs Embutidas MASTG-TEST-0238: Uso em Runtime de APIs de Rede Transmitindo Tráfego em Texto Claro MASTG-TEST-0239: Usando APIs de baixo nível (ex. Socket) para configurar uma conexão HTTP personalizada MASTG-TEST-0217: Protocolos TLS Inseguros Explicitamente Permitidos no Código MASTG-TEST-0235: Configurações de Aplicativo Android que Permitem Tráfego em Texto Não Criptografado (Cleartext Traffic)