A07:2021 – Falhas de identificação e autenticação
Fatores
CWEs Mapeados | Taxa de Incidência Máxima | Taxa de Incidência Média | Exploração Média Ponderada | Impacto Médio Ponderado | Cobertura Máxima | Cobertura Média | Total de ocorrências | Total de CVEs |
---|---|---|---|---|---|---|---|---|
22 | 14.84% | 2.55% | 7.40 | 6.50 | 79.51% | 45.72% | 132,195 | 3,897 |
Visão Geral
Anteriormente conhecida como Quebra de Autenticação, esta categoria caiu da segunda posição e agora inclui Fraquezas e Enumerações Comuns (CWEs) relacionadas à identificação de falhas. CWEs notáveis incluídos são: CWE-297: Validação inadequada de certificado com inconsistência de host, CWE-287: Autenticação inadequada, e CWE-384: Fixação de sessão.
Descrição
Confirmação da identidade, autenticação e sessão do usuário gerenciamento é fundamental para proteger contra autenticação relacionada ataques. Pode haver pontos fracos de autenticação se o aplicativo:
-
Permite ataques automatizados, como preenchimento de credenciais, onde o invasor tem uma lista de nomes de usuários e senhas válidos.
-
Permite força bruta ou outros ataques automatizados.
-
Permite senhas padrão, fracas ou conhecidas, como "Senha1" ou "admin/admin".
-
Usa recuperação de credenciais fraca ou ineficaz e esqueci a senha processos, como "respostas baseadas em conhecimento", que não podem ser feitas de modo seguro.
-
Usa armazenamento de dados e senhas em texto simples, criptografadas ou com hash fraco (consulte A02:2021-Falhas Criptográficas).
-
Possui multifator de autenticação ausente ou ineficaz.
-
Expõe o identificador de sessão na URL.
-
Reutiliza o identificador de sessão após o login bem-sucedido.
-
Não invalida corretamente IDs de sessão. Sessões de usuário ou tokens de autenticação (principalmente tokens de logon único (SSO)) não são devidamente invalidado durante o logout ou um período de inatividade.
Como Prevenir
-
Sempre que possível, implemente a autenticação multifator para evitar preenchimento automatizado de credenciais, força bruta e credenciais roubadas
-
Não permita ou implante nenhuma credencial padrão, especialmente para usuários administradores.
-
Implementar verificações de senha fraca, como testar novas ou alteradas contra a lista das 10.000 piores senhas.
-
Alinhe o comprimento da senha, a complexidade e as políticas de rotação com Instituto Nacional de Padrões e Tecnologia (NIST) as diretrizes do 800-63b na seção 5.1.1 para segredos memorizados ou outras políticas de senha modernas e baseadas em evidências.
-
Certifique-se de que o registro, a recuperação de credenciais e os caminhos da API sejam protegido contra ataques de enumeração de contas usando a mesma mensagens para todos os resultados.
-
Limite ou atrase cada vez mais as tentativas de login com falha, mas tome cuidado para não criar um cenário de negação de serviço. Registrar todas as falhas e alertar os administradores quando o preenchimento de credenciais, força bruta ou outros ataques são detectados.
-
Use um gerenciador de sessão integrado, seguro do lado do servidor que gere um novo ID de sessão aleatória com alta entropia após o login. Identificador de sessão não deve estar na URL, deve ser armazenado com segurança e invalidado após o logout.
Exemplos de Cenários de Ataque
Cenário 1: O preenchimento de credenciais, que consiste no uso de listas de senhas conhecidas, é um ataque comum. Suponha que um aplicativo não implemente proteção automatizada contra ameaças ou preenchimento de credenciais. Nesse caso, o aplicativo pode ser usado como um oráculo de senhas para determinar se as credenciais são válidas.
Cenário 2: A maioria dos ataques de autenticação ocorre devido ao uso contínuo de senhas como único fator. Antes considerada uma boa prática, a rotação de senhas e os requisitos de complexidade encorajam os usuários a usar e reutilizar senhas fracas. As organizações são recomendadas a interromper essas práticas conforme a norma NIST 800-63 e usar autenticação de múltiplos fatores.
Cenário 3: Os tempos limite da sessão do aplicativo não estão definidos corretamente. Um usuário usa um computador público para acessar um aplicativo. Em vez de selecionar "sair", o usuário simplesmente fecha a aba do navegador e sai. Uma hora depois, um atacante usa o mesmo navegador, e o usuário ainda está autenticado.
Referências
-
OWASP Application Security Verification Standard: V2 authentication
-
OWASP Application Security Verification Standard: V3 Session Management
-
NIST 800-63b: 5.1.1 Memorized Secrets
Lista dos CWEs Mapeados
CWE-255 Credentials Management Errors
CWE-259 Use of Hard-coded Password
CWE-287 Improper Authentication
CWE-288 Authentication Bypass Using an Alternate Path or Channel
CWE-290 Authentication Bypass by Spoofing
CWE-294 Authentication Bypass by Capture-replay
CWE-295 Improper Certificate Validation
CWE-297 Improper Validation of Certificate with Host Mismatch
CWE-300 Channel Accessible by Non-Endpoint
CWE-302 Authentication Bypass by Assumed-Immutable Data
CWE-304 Missing Critical Step in Authentication
CWE-306 Missing Authentication for Critical Function
CWE-307 Improper Restriction of Excessive Authentication Attempts
CWE-346 Origin Validation Error
CWE-521 Weak Password Requirements
CWE-613 Insufficient Session Expiration
CWE-620 Unverified Password Change
CWE-640 Weak Password Recovery Mechanism for Forgotten Password
CWE-798 Use of Hard-coded Credentials
CWE-940 Improper Verification of Source of a Communication Channel