MASWE-0052: Validação de Certificado Insegura
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¶
Aplicativos que não validam adequadamente certificados TLS durante a comunicação segura são suscetíveis a ataques de Homem-no-Meio (MITM)) e outras ameaças de segurança. Essa vulnerabilidade ocorre quando um aplicativo aceita certificados inválidos, expirados, autoassinados ou não confiáveis sem a verificação apropriada, comprometendo a integridade e confidencialidade dos dados em trânsito.
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.
- Exposição de Dados: Informações sensíveis podem ser comprometidas.
- Acesso Não Autorizado: Atacantes podem obter acesso não autorizado a contas de usuários ou sistemas interceptando tokens de autenticação ou credenciais.
- Suplantação de Serviços: Usuários podem ser enganados para interagir com servidores maliciosos que se passam por serviços legítimos.
- Perda de Integridade de Dados: Dados alterados ou corrompidos podem ser aceitos pela aplicação, levando a resultados não confiáveis ou maliciosos.
Modos de Introdução¶
- Desabilitação da Validação de Certificados: Desenvolvedores desabilitam ou contornam verificações de validação de certificados para simplificar o desenvolvimento ou solucionar problemas de conectividade.
- Aceitação de Certificados Autoassinados: Aplicações aceitam certificados autoassinados ou não confiáveis sem a validação adequada em relação às Autoridades de Certificação (CAs) confiáveis.
- Ignorar Verificação de Nome de Host: Falha em verificar se o nome de host do certificado corresponde ao nome de host do servidor, permitindo que atacantes apresentem certificados válidos de outros domínios.
- Uso de Trust Managers Personalizados Inseguros: Implementação de lógica de validação de certificados personalizada que é incompleta, incorreta ou insegura.
- Tratamento Incorreto de Erros: Prosseguir com conexões mesmo quando ocorrem erros de validação de certificados, sem alertar o usuário ou encerrar a conexão.
- Confiar em Todos os Certificados: Configurar a aplicação para confiar em todos os certificados por padrão, sem qualquer validação.
Mitigações¶
- Impor Validação Rigorosa de Certificados: Sempre validar certificados TLS em relação a um conjunto confiável de Autoridades de Certificação (CAs) fornecido pelo sistema operacional ou por terceiros confiáveis.
- Evitar Aceitar Certificados Autoassinados: Não aceitar certificados autoassinados ou não confiáveis em ambientes de produção, a menos que exista um mecanismo seguro para confiar neles explicitamente.
- Habilitar Verificação de Nome de Host: Garantir que a camada de rede da aplicação verifique o nome de host do servidor em relação ao Subject Alternative Name (SAN) ou Nome Comum (CN) do certificado.
- Usar Trust Managers Padrão: Utilizar bibliotecas consolidadas e APIs fornecidas pela plataforma para validação de certificados em vez de implementações personalizadas.
- Tratar Erros de Validação Adequadamente: Encerrar a conexão e alertar o usuário sempre que a validação do certificado falhar devido a problemas como expiração, revogação ou incompatibilidade.
Tests¶
MASTG-TEST-0285: Versão Desatualizada do Android Permite Confiança em CAs fornecidas pelo usuário MASTG-TEST-0234: Falta de Implementação da Verificação de Nome do Servidor com SSLSockets MASTG-TEST-0282: Avaliação de Confiança Custom Insegura MASTG-TEST-0284: Tratamento Incorreto de Erros SSL em WebViews MASTG-TEST-0283: Implementação Incorreta de Verificação de Nome de Host do Servidor MASTG-TEST-0286: Configuração de Segurança de Rede Permitindo Confiança em CAs Fornecidas pelo Usuário