Ataque de autenticação

Origem: Wikipédia, a enciclopédia livre.

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]:

As etapas que os hackers seguem para descobrir todas as regras em matéria de qualidade de senha, são:

  1. Procurar na página web por qualquer regra ou política de senha.
  2. Realizar cadastros tentando registrar várias contas com diferentes tipos de senhas fracas para descobrir as regras que estão em vigor.
  3. 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:

  1. password/senha
  2. nome da aplicação
  3. 12345678
  4. qwerty
  5. abc123
  6. 111111
  7. monkey
  8. 12345
  9. letmein (do inglês "let me in", e em português, "deixe-me entrar")
  10. 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.

Mensagem detalhada ao tentar logar com apenas o usuário inválido.
Mensagem detalhada ao tentar logar com o usuário válido e a senha inválida.

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

  1. Authentication attacks, http://pic.dhe.ibm.com/infocenter/sprotect/v2r8m0/index.jsp?topic=%2Fcom.ibm.ips.doc%2Fconcepts%2Fwap_authentication.htm
  2. a b Dafydd Stuttard e Marcus Pinto, The Web Application Hacker’s Handbook, 2a Edição, 2011