Ataque de autenticação
Ataque de Autenticação (em inglês, Attacking Authentication) é uma das forma de descobrir e explorar falhas de segurança em aplicações web. O ataque de autenticação tem como meta explorar o processo de login de uma página na web. A autenticação é utilizada nas páginas webs, para verificar a identidade de um usuário, serviço ou aplicação.[1]
Falhas de projeto em mecanismos de autenticação[editar | editar código-fonte]
A funcionalidade de autenticação está sujeita a mais falhas de projeto do que qualquer outro mecanismo de segurança comumente empregadas em aplicações web. Isso inclui a funcionalidade principal de login e também as mais periféricas funções de autenticação relacionados, tais como registro de usuário, mudança de senha e recuperação de conta. Mecanismos de autenticação contêm uma riqueza de diferentes vulnerabilidades, tanto de projeto quanto de implementação, o que um atacante pode aproveitar para obter acesso não autorizado. Estes vão desde defeitos óbvios, tais como senhas ruins e suscetibilidade, a ataques de força bruta, para os problemas mais obscuros dentro da lógica de autenticação.[2] Dentre as falhas de projeto e implementação em mecanismos de autenticação, destacam-se:
- Senhas fracas
- Força bruta de login
- Mensagens de erro detalhadas
- Transmissão vulnerável de credenciais
- Funcionalidade de alterar a senha
- Funcionalidade "lembre-me" da senha
- Funcionalidade "me mantenha conectado"
- Funcionalidade representação de usuário
- Validação incompleta de credenciais
- Nomes de usuários não-exclusivos
- Nomes de usuários previsíveis
- Senhas iniciais previsíveis
- Distribuição insegura de credenciais
Senhas fracas[editar | editar código-fonte]
Muitas aplicações web utilizam nenhum ou um mínimo de controle sobre a qualidade das senhas do usuário. É comum encontrar aplicações que permitem senhas que são[2]:
- Muito curta ou em branco
- Palavras de dicionário ou nomes
- O mesmo que o nome de usuário
- Ainda definido para um valor default
As etapas que os hackers seguem para descobrir todas as regras em matéria de qualidade de senha, são:
- Procurar na página web por qualquer regra ou política de senha.
- Realizar cadastros tentando registrar várias contas com diferentes tipos de senhas fracas para descobrir as regras que estão em vigor.
- Ao ter controle de uma única conta e a alteração de senha estiver habilitada, tentar modificar a senha para vários valores considerados fracos.
Força bruta de login[editar | editar código-fonte]
A força bruta de login acontece quando um atacante insere senhas diferentes no processo de autenticação de uma página web. A funcionalidade de login apresenta um convite aberto para um atacante tentar adivinhar nomes de usuários e senhas e, portanto, obter acesso não autorizado à aplicação. Se o aplicativo permite que um atacante faça várias tentativas de login com senhas diferentes até que ele consiga realizar o login com sucesso, é uma aplicação altamente vulnerável, até mesmo para um atacante amador que entra manualmente com alguns nomes de usuário e senhas comuns em seu próprio navegador.
Compromissos recentes de sites de alto perfil têm proporcionado o acesso a centenas de milhares de senhas do mundo real que foram armazenadas em texto simples ou usando força bruta. Aqui estão as senhas mais populares do mundo real:
- password/senha
- nome da aplicação
- 12345678
- qwerty
- abc123
- 111111
- monkey
- 12345
- letmein (do inglês "let me in", e em português, "deixe-me entrar")
- admin/administrator/administrador
Mensagens de erro detalhadas[editar | editar código-fonte]
Um típico formulário de autenticação pede ao usuário que ele digite duas informações: usuário e senha. Algumas aplicações solicitam mais informações como data de nascimento, um lugar memorável, ou um PIN.
![](http://upload.wikimedia.org/wikipedia/commons/thumb/4/45/Mensagem_de_erro_usu%C3%A1rio_inv%C3%A1lido.png/220px-Mensagem_de_erro_usu%C3%A1rio_inv%C3%A1lido.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/6/6b/Mensagem_de_erro_senha_inv%C3%A1lida.png/220px-Mensagem_de_erro_senha_inv%C3%A1lida.png)
Quando uma tentativa de login falhar, você pode inferir que pelo menos uma parte da informação estava incorreta. No entanto, se o aplicativo informa qual parte da informação era inválido, você pode explorar esse comportamento para diminuir consideravelmente a eficácia do mecanismo de login. No caso mais simples, onde um login exige um nome de usuário e senha, um aplicativo pode reagir a uma falha de login, indicando se a razão para o fracasso era um nome de usuário desconhecido ou a senha errada.
Transmissão vulnerável de credenciais[editar | editar código-fonte]
Se um aplicativo usa uma conexão HTTP criptografado para transmitir as credenciais de autenticação, um intruso que está devidamente posicionado na rede pode, naturalmente, interceptá-los. Dependendo da localização do usuário, os potenciais bisbilhoteiros podem residir:
- Em rede local do usuário
- No departamento de TI do usuário
- No ISP do usuário
- No backbone da Internet
- Dentro do ISP que hospeda o aplicativo
- Dentro do departamento de TI que gere a aplicação
Funcionalidade de alterar a senha[editar | editar código-fonte]
Surpreendentemente, muitas aplicações web não fornecem qualquer maneira para os usuários mudar suas senhas. No entanto, esta funcionalidade é necessária para um mecanismo de autenticação bem concebido. Existem duas razões para isto:
- A mudança periódica forçada de senhas reduz a ameaça de comprometimento da senha. Isso reduz a janela na qual uma determinada senha pode ser alvo de um ataque de adivinhação. E também reduz a janela em que uma senha comprometida pode ser usado sem a detecção pelo intruso.
- Os usuários que suspeitam que suas senhas podem ter sido comprometidas precisam ser capazes de mudar rapidamente a sua senha para reduzir a ameaça de uso não autorizado.
Referências
- ↑ Authentication attacks, http://pic.dhe.ibm.com/infocenter/sprotect/v2r8m0/index.jsp?topic=%2Fcom.ibm.ips.doc%2Fconcepts%2Fwap_authentication.htm
- ↑ a b Dafydd Stuttard e Marcus Pinto, The Web Application Hacker’s Handbook, 2a Edição, 2011