Como uma Falha de Lógica no Reset de Palavra-Passe Permitiu Account Enumeration

Introdução

Funcionalidades de recuperação de palavra-passe são frequentemente vistas como triviais, mas erros subtis na sua implementação podem levar a falhas graves de segurança. Neste write-up descrevo como uma simples diferença no comportamento do endpoint de reset de password permitia enumerar contas válidas numa aplicação web, abrindo a porta para ataques direcionados.

Contexto da Aplicação

O alvo era uma aplicação web orientada a utilizadores finais, com autenticação baseada em e-mail e palavra-passe. A funcionalidade de “Esqueci-me da palavra-passe” estava disponível publicamente, como seria expectável.

A aplicação utilizava um endpoint dedicado para iniciar o processo de recuperação:

POST /api/auth/password-reset

A Descoberta

Ao testar o fluxo de recuperação, notei um comportamento inconsistente dependendo do e-mail introduzido:

Para e-mails válidos, o servidor respondia rapidamente com uma mensagem de sucesso.

Para e-mails inexistentes, a resposta era diferente, tanto no conteúdo como no tempo de resposta.

Esta diferença levantou uma suspeita imediata de account enumeration.

A Exploração

Para confirmar a falha, executei múltiplos pedidos ao endpoint com:

Endereços de e-mail reais (criados previamente)

Endereços de e-mail aleatórios

Foi possível distinguir claramente quais os e-mails registados na plataforma apenas analisando:

O código de resposta HTTP

O tempo médio de resposta

A mensagem devolvida pelo servidor

Sem qualquer autenticação, um atacante poderia automatizar este processo e construir uma lista de utilizadores válidos em poucos minutos.

Impacto

Embora esta falha não permita acesso direto a contas, o seu impacto é significativo. A enumeração de utilizadores facilita:

Ataques de força bruta

Phishing direcionado

Credential stuffing

Por este motivo, a vulnerabilidade foi classificada como Média, com potencial de escalada quando combinada com outras falhas.

Mitigação Recomendada

A aplicação deve responder sempre de forma genérica, independentemente de o e-mail existir ou não. A mensagem, o código HTTP e o tempo de resposta devem ser uniformes para evitar qualquer forma de distinção observável pelo utilizador.

Conclusão

Este caso demonstra como falhas aparentemente menores podem fornecer informação valiosa a um atacante. A consistência nas respostas e a eliminação de diferenças observáveis são essenciais para proteger funcionalidades sensíveis como a recuperação de palavra-passe.
Introdução

Funcionalidades de recuperação de palavra-passe são frequentemente vistas como triviais, mas erros subtis na sua implementação podem levar a falhas graves de segurança. Neste write-up descrevo como uma simples diferença no comportamento do endpoint de reset de password permitia enumerar contas válidas numa aplicação web, abrindo a porta para ataques direcionados.

Contexto da Aplicação

O alvo era uma aplicação web orientada a utilizadores finais, com autenticação baseada em e-mail e palavra-passe. A funcionalidade de “Esqueci-me da palavra-passe” estava disponível publicamente, como seria expectável.

A aplicação utilizava um endpoint dedicado para iniciar o processo de recuperação:

POST /api/auth/password-reset

A Descoberta

Ao testar o fluxo de recuperação, notei um comportamento inconsistente dependendo do e-mail introduzido:

Para e-mails válidos, o servidor respondia rapidamente com uma mensagem de sucesso.

Para e-mails inexistentes, a resposta era diferente, tanto no conteúdo como no tempo de resposta.

Esta diferença levantou uma suspeita imediata de account enumeration.

A Exploração

Para confirmar a falha, executei múltiplos pedidos ao endpoint com:

Endereços de e-mail reais (criados previamente)

Endereços de e-mail aleatórios

Foi possível distinguir claramente quais os e-mails registados na plataforma apenas analisando:

O código de resposta HTTP

O tempo médio de resposta

A mensagem devolvida pelo servidor

Sem qualquer autenticação, um atacante poderia automatizar este processo e construir uma lista de utilizadores válidos em poucos minutos.

Impacto

Embora esta falha não permita acesso direto a contas, o seu impacto é significativo. A enumeração de utilizadores facilita:

Ataques de força bruta

Phishing direcionado

Credential stuffing

Por este motivo, a vulnerabilidade foi classificada como Média, com potencial de escalada quando combinada com outras falhas.

Mitigação Recomendada

A aplicação deve responder sempre de forma genérica, independentemente de o e-mail existir ou não. A mensagem, o código HTTP e o tempo de resposta devem ser uniformes para evitar qualquer forma de distinção observável pelo utilizador.

Conclusão

Este caso demonstra como falhas aparentemente menores podem fornecer informação valiosa a um atacante. A consistência nas respostas e a eliminação de diferenças observáveis são essenciais para proteger funcionalidades sensíveis como a recuperação de palavra-passe.

♡ Gostar

Comentários (5)

@antrob 08/01/2026 14:48
Teste de comentário antrob
@bruno 05/01/2026 15:55
Jesus
@guimou 05/01/2026 14:21
Jesus!
@rita 30/12/2025 04:43
Eu sei Salvador, ele é mesmo bom.
@salvador 30/12/2025 04:42
Uau!
« Voltar à Home