← All posts

Seu formulário de redefinição de senha é um canhão de e-mail grátis

Authagonal·July 9, 2026
securityrate-limitingemail

O formulário de redefinição de senha é provavelmente o endpoint menos interessante que você tem. Também é o único que um atacante pode apontar para qualquer pessoa. O nosso ficou sem limite de taxa por e-mail por um tempo, e o motivo pelo qual isso importa não é o que você imaginaria.

O reflexo, ao ouvir "endpoint não autenticado, sem limite de taxa", é pensar em força bruta. Mas não há nada para forçar em uma solicitação de redefinição. Você não está adivinhando uma senha. Você envia um endereço de e-mail e o sistema manda um link. Martelar o endpoint não te coloca dentro de nenhuma conta. Então quem se machuca?

A vítima é um terceiro. Digite o endereço de outra pessoa, [email protected], aperte enviar, repita. Cada solicitação manda um e-mail de verdade para uma caixa de entrada de verdade que você não controla. Você recrutou o nosso formulário de redefinição para virar uma bomba de e-mails apontada para alguém que nunca se cadastrou em nada. E como o e-mail vem de nós, o estrago cai em dois lugares ao mesmo tempo. A caixa de entrada da vítima entope. E a nossa reputação de remetente leva o golpe, porque uma enxurrada de e-mails indesejados do nosso domínio é exatamente o que os provedores de caixa postal ficam vigiando. O suficiente disso e o nosso e-mail legítimo, links de verificação, redefinições de senha reais, começa a cair no spam de todo cliente real que temos. Um endpoint não autenticado, sem credenciais e sem custo para o atacante, degrada um recurso que todos os nossos usuários compartilham.

Então você aplica limite de taxa. Por endereço de e-mail, para que um alvo não possa ser inundado. Fácil. Só que a implementação óbvia silenciosamente abre um buraco diferente.

Se você só aplica o limite, ou só faz o trabalho, quando o endereço de fato tem uma conta, então o endpoint se comporta de forma diferente para contas reais e para contas inventadas. Um atacante que consegue enxergar essa diferença, na resposta, no código de status, ou só no tempo de resposta, agora tem um oráculo para saber quais endereços de e-mail estão registrados com você. Formulários de redefinição são um vazamento clássico de enumeração de contas exatamente por esse motivo: a correção ingênua para a bomba de e-mails cria o bug de enumeração.

A correção de verdade tem que fazer as duas coisas ao mesmo tempo, e as duas metades são separadas. Primeiro, aplique o limite de taxa sobre o e-mail normalizado, independentemente de existir ou não uma conta. A chave do limite é o próprio endereço, em minúsculas e sem espaços, para que Victim@ e victim@ compartilhem o mesmo balde, e o contador é aplicado antes de você ter consultado qualquer coisa. Esse contador tem que viver em um armazenamento durável e compartilhado, não na memória de um único processo, ou ele evapora em uma reinicialização e não faz nada entre múltiplas instâncias. Segundo, responda de forma idêntica em todos os casos: o mesmo status, a mesma mensagem "se esse endereço tiver uma conta, enviamos um link", o mesmo formato de tempo de resposta, esteja o endereço entre os seus ou não. Você continua enviando e-mail de fato apenas quando há uma conta por trás dele. Mas nada que um estranho consiga observar muda com base nesse segredo. O limite de taxa protege o terceiro; a resposta constante protege o fato de quem tem uma conta.

A lição geral vai além das redefinições de senha. Qualquer endpoint não autenticado que cause um efeito colateral no mundo real, enviar um e-mail, enviar um SMS, chamar um webhook, não é apenas parte da sua superfície de ataque. É uma arma apontada para quem está do outro lado, e a conta por disparar essa arma cai na sua reputação, não na do atacante. Aplique limite de taxa pela coisa que está sofrendo a ação, que é o destinatário, não quem faz a chamada. E faça isso sem deixar que a presença ou ausência de estado secreto mude o que um observador vê.

O formulário de redefinição de senha parece encanamento. É o único pedaço de encanamento que, alegremente, vai jorrar sobre qualquer pessoa do mundo sob comando. Meça-o à altura.

Medir um endpoint não autenticado com efeito colateral sem revelar quem tem uma conta é mais complicado do que parece. O Authagonal entrega o fluxo de redefinição já com limite de taxa e seguro contra enumeração, para que a sua reputação de remetente nunca esteja a um loop de curl da ruína.