Ataques de dicionário 101

Várias contas de alto nível no Twitter foram recentemente sequestradas:

Um hacker de 18 anos com um histórico de pegadinhas com celebridades admitiu ter sequestrado na segunda-feira várias contas de alto nível no Twitter, incluindo a do presidente eleito Barack Obama e o feed oficial da Fox News.

O hacker, conhecido como GMZ, disse ao Threat Level na terça-feira que conseguiu entrar no painel de controle administrativo do Twitter, apontando um adivinhador de senhas automatizado para a conta de um usuário popular. O usuário acabou por ser um membro da equipe de suporte do Twitter, que escolheu a senha fraca “happiness”.

A invasão do site foi fácil, porque O Twitter permitia um número ilimitado de tentativas rápidas de login.

“Acho que é mais um caso em que os administradores não estão se esforçando para solucionar uma das falhas de segurança mais óbvias e mais usadas”, escreveu ele em uma entrevista no IM. “Tenho certeza de que eles acham difícil admitir isso.”

Se o senhor for um moderador ou administrador, é especialmente negligente por ter uma senha tão fácil de adivinhar. Mas o verdadeiro problema aqui é a forma como o Twitter permitiu tentativas de login ilimitadas e tão rápidas quanto possível.

Dado o escolhas de senha do usuário médio — conforme documentado pelo site de Bruce Schneier análise de 34.000 senhas reais do MySpace capturada de um ataque de phishing no final de 2006 – esse é um cenário bastante assustador.

myspace-phishing-password-statistics-character-sets

myspace-phishing-password-statistics-length

Com base nesses dados, o usuário médio do MySpace tem uma senha alfanumérica de 8 caracteres. O que não é ótimo, mas não parece também ruim. Isto é, até o senhor descobrir que 28% desses alfanuméricos eram todos minúsculos com um único dígito final – e dois terços das vezes esse dígito final era 1!

Sim, Os ataques de força bruta ainda são para leigos. Até mesmo a terrível senha do MySpace – oito caracteres, todos em letras minúsculas, terminando em 1 – exigiria cerca de 8 bilhões de tentativas de login:

26 x 26 x 26 x 26 x 26 x 26 x 26 x 1  = 8,031,810,176

Com uma tentativa por segundo, isso levaria mais de 250 anos. Por usuário!

Mas a ataque de dicionário, como o usado na invasão do Twitter? Bem, essa é outra história. Todo o Oxford English Dictionary contém cerca de 171.000 palavras. Como o senhor pode imaginar, a pessoa média usa apenas uma pequena fração dessas palavras, segundo algumas estimativas algo entre 10 e 40 mil. Com uma tentativa por segundo, poderíamos tentar todas as palavras do Oxford English Dictionary em pouco menos de dois dias.

Claramente, o último coisa que o senhor deseja fazer é dar carta branca aos invasores para executar tentativas ilimitadas de login. Basta um usuário com uma senha fraca para que os invasores tenham acesso ao seu sistema. No caso do Twitter, os invasores realmente tiraram a sorte grande: o usuário com a senha mais fraca era um membro da equipe administrativa do Twitter.

Limitar o número de tentativas de login por usuário é a regra de segurança 101. Se o senhor não fizer isso, estará praticamente abrindo um tapete de boas-vindas para que qualquer pessoa lance um ataque de dicionário em seu site, um ataque que se torna estatisticamente mais eficaz a cada dia que passa, quanto mais usuários o senhor atrai. Em alguns sistemas, sua conta pode ser bloqueada se o senhor tentar e não conseguir fazer login um determinado número de vezes seguidas. No entanto, isso pode levar a ataques de negação de serviço e geralmente é desaconselhado. É mais comum que cada tentativa de login com falha demore cada vez mais, da seguinte forma:

1º login com falha sem atraso
Segunda falha no login 2 segundos de atraso
Terceira falha no login 4 segundos de atraso
4º login com falha Atraso de 8 segundos
5º login com falha 16 segundos de atraso

E assim por diante. Como alternativa, o senhor poderia exibir um CAPTCHA após a quarta tentativa.

Há inúmeras variações dessa técnica, mas o efeito líquido é o mesmo: os invasores só podem tentar algumas senhas por dia. Um ataque de força bruta está fora de questão, e um ataque de dicionário amplo torna-se impraticável, pelo menos em qualquer tipo de tempo humano.

É tentador culpar o Twitter, mas, sinceramente, não sei se o senhor é o único. I esqueço minhas senhas com frequência. Já fiz pelo menos cinco ou seis tentativas de adivinhar minha senha em vários sites e não me lembro de ter sofrido nenhum tipo de atraso calculado ou bloqueio de conta. Estou razoavelmente certo de que os grandes sites comerciais têm isso bem definido. Mas desde todos os sites de pouca importância do planeta exigem que eu crie credenciais exclusivas especialmente para elesqualquer um deles pode estar vulnerável. É melhor o senhor esperar que eles sejam todos inteligente o suficiente para limitar os logins com falha — e que o senhor tenha o cuidado de usar credenciais exclusivas em cada site que visita.

Talvez isso fosse menos problemático na época do velhos e ruins dias dos modemsO senhor não pode se preocupar com a velocidade com que os dados podem ser transmitidos a um site e com a rapidez com que esse site pode responder. Hoje, porém, temos a dupla vantagem de sites ingênuos executados em hardware extremamente rápido e usuários com conexões de banda larga velozes. Nessas condições, eu poderia ver os invasores conseguindo regularmente até duas tentativas de senha por segundo.

Se o senhor pensava que os ataques de dicionário eram principalmente um fenômeno de desktop, talvez seja hora de rever essa suposição. Conforme ilustrado pelo Twitter, a Web agora oferece condições propícias para ataques de dicionário. Peço que teste o seu site ou qualquer site que o senhor use – e certifique-se de que todos eles tenham alguma forma de limitação de login com falha implementada.