MASWE-0047: Pinning de Identidade Inseguro
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¶
Identity pinning (também conhecido como certificate pinning, public key pinning ou TLS pinning)) refere-se à associação de um aplicativo móvel a uma identidade criptográfica específica, como um certificado ou chave pública, para garantir que o aplicativo se comunique apenas com servidores confiáveis.
Quando um aplicativo móvel não implementa o certificate pinning, ou se ele é implementado incorretamente, o aplicativo permanece vulnerável a ataques de Machine-in-the-Middle (MITM)) que permitem que atacantes interceptem e modifiquem a comunicação entre o aplicativo e o servidor de destino. Isso ocorre porque quando o aplicativo recebe um certificado fraudulento no qual ele pode confiar inadvertidamente, possibilitando o acesso a dados sensíveis ou a injeção de conteúdo malicioso no fluxo de dados.
Limitações: O certificate pinning adiciona uma camada de verificação de confiança, garantindo que o aplicativo aceite apenas conexões com servidores que possuem certificados ou chaves públicas pré-determinados e específicos. Isso reduz o risco de interceptação não autorizada, mesmo que uma Autoridade Certificadora (CA) confiável seja comprometida. No entanto, não é infalível:
- Atacantes que conseguem fazer engenharia reversa do aplicativo podem analisar e remover ou modificar os pins pré-definidos ou a lógica de certificate pinning para contornar permanentemente as verificações.
- Atacantes que conseguem realizar técnicas de Manipulação e Instrumentação em Tempo de Execução para manipular o aplicativo e contornar as verificações de pinning.
Isso destaca a importância de implementar o certificate pinning junto com outras medidas de segurança para aumentar a resistência do aplicativo a ameaças avançadas.
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.
- Negação de Serviço (DoS): O pinning incorreto pode fazer com que conexões legítimas falhem, levando a interrupções de serviço para os usuários. Por exemplo, se um certificado fixado expirar e não for atualizado, o aplicativo pode não conseguir estabelecer conexões seguras.
Modos de Introdução¶
- Configuração Incorreta de Bibliotecas de Pinning: Configurar incorretamente bibliotecas como TrustKit,
CertificatePinnerdo OkHttp, Volley ouSSLPinningModedo AFNetworking, levando a um pinning ineficaz. - Pinning Dinâmico sem Segurança: Recuperar pins dinamicamente por meio de canais inseguros sem validação adequada, facilitando que atacantes forneçam pins maliciosos.
- Lógica de Validação Incorreta: Implementações personalizadas de pinning que não validam corretamente a cadeia de certificados ou a chave pública. Por exemplo, aceitar qualquer certificado que encadeie a uma CA raiz confiável em vez de um certificado ou chave pública específica.
- Falta de Pins de Backup: Não incluir pins de backup para evitar problemas de conectidade se o pin principal não for mais válido.
Mitigações¶
- Preferir Soluções Fornecidas pela Plataforma: Usar mecanismos fornecidos pela plataforma, como Network Security Configuration (NSC) do Android ou App Transport Security (ATS) do iOS, para impor o pinning.
- Usar Bibliotecas de Pinning Confiáveis: Evitar escrever lógica personalizada de pinning; em vez disso, confiar em bibliotecas e frameworks estabelecidos e bem mantidos (por exemplo, TrustKit,
CertificatePinnerdo OkHttp) e garantir que estejam configurados corretamente de acordo com as melhores práticas. - Proteger o Pinning Dinâmico: Se o pinning dinâmico for necessário, recuperar os pins por meio de canais seguros e validá-los minuciosamente antes do uso.
- Fixar em Chaves Públicas em vez de Certificados: Fixar na chave pública do certificado em vez de no certificado inteiro para evitar problemas relacionados à expiração e renovações.
- Aplicação Consistente: Aplicar o pinning uniformemente para todas as conexões com servidores que você controla.
- Atualizar os Pins Regularmente: Manter os certificados ou chaves públicas fixados atualizados com a configuração atual do servidor e ter um processo para atualizar o aplicativo quando ocorrerem mudanças.
- Implementar Pins de Backup: Incluir pins de backup (hashes de chaves públicas confiáveis adicionais) para evitar problemas de conectidade se a chave principal for alterada.
Tests¶
MASTG-TEST-0243: Pins de Certificado Expirados na Configuração de Segurança de Rede MASTG-TEST-0242: Falta de Certificate Pinning na Configuração de Segurança de Rede MASTG-TEST-0244: Ausência de Certificate Pinning no Tráfego de Rede