Korzen

Blog

Credential stuffing: como identificar no seu login

Atacantes repetem pares de email e senha vazados contra o seu login até alguns funcionarem. Como o ataque aparece nos seus logs, e como pará-lo sem bloquear os seus clientes.

Credential stuffing é repetir, contra o seu login, pares de email e senha vazados de outros sites. As pessoas reutilizam senhas, então uma pequena parte de qualquer lista vazada funciona em quase todo lugar. O atacante não precisa invadir o seu sistema; precisa de volume e de um formulário de login que responda rápido.

Como aparece nos seus logs

  • Uma taxa de falha que dispara. Logins normais costumam dar certo. Uma rodada de stuffing falha dezenove vezes em vinte.
  • Muitas contas, poucas tentativas em cada. Ao contrário da força bruta, cada conta é tentada uma ou duas vezes, então o bloqueio por conta nunca dispara.
  • Muitos endereços. As tentativas vêm de pools de proxies residenciais, então bloquear os IPs que mais aparecem quase não faz diferença.
  • Logins sem página. O endpoint de login é chamado direto, por clientes que nunca carregaram a página de login.
  • Ritmo de máquina. Requisições em cadência constante, em horários em que os seus clientes dormem.

Por que as defesas de sempre não bastam

Rate limit por IP é vencido por pools de proxies com milhares de saídas. Bloqueio de conta prejudica mais os seus clientes do que o atacante, e pode ser usado para bloquear contas de propósito. CAPTCHAs são resolvidos por serviços pagos por uma fração de centavo. Cada um adiciona atrito para pessoas reais e um custo pequeno para os bots.

Julgue o cliente, não só a requisição

Uma ferramenta de stuffing troca IP e User-Agent a cada requisição. O difícil para ela é falsificar um navegador inteiro e consistente, que carregou a sua página, rodou o seu script e se comporta como uma pessoa ao longo da sessão:

  • um token assinado da página, ausente ou compartilhado entre muitas sessões;
  • sinais de automação e fingerprints de navegador que não fecham;
  • um dispositivo ou token tentando muitas contas diferentes;
  • novas tentativas em sequência apesar dos erros, o que pessoas não fazem.

Onde colocar a checagem

Pergunte antes de verificar a senha, para que um bot nunca descubra se um par funciona:

  • bot_high: responda como se a senha estivesse errada. A ferramenta não aprende nada, e o seu cliente nem fica sabendo.
  • bot: peça um segundo fator ou um código por email antes de abrir a sessão.
  • todo o resto: o login normal.

Responder a um bot com o mesmo "senha errada" que uma pessoa veria faz diferença: uma página de bloqueio diferente avisa o atacante para mudar de tática.

Depois do login

Conte à sua checagem de bots o que aconteceu depois. Um login que mais tarde faz um pedido real, ou um chargeback que prova o contrário, é uma evidência que nenhum header consegue falsificar, e torna mais precisa a próxima decisão sobre o mesmo visitante.