Account Enumeration and Guessable User Account

💡 Some vendors do not consider user enumeration as a vulnerability. See notes on Drupal and WordPress.

Reporting

CVSS Score v35.3
CVSS Vector v3https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator?vector=AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N&version=3.1
Examples from NVD

English

TitleUser enumeration on password reset page
DescriptionReset password page API call can be used to enumerate usernames based on the error message.
The tester was able to find valid usernames using this vulnerability, public information (company page on LinkedIn, See all employees) and minimal guessing for email pattern (firstname.lastname@company.com).

These are valid usernames: (if applicable)

When an anti-bruteforce mechanism restricts the number of requests sent to the server, the attack can be slowed down, but does not prevent finding valid usernames. The attack can still be automated
by adding throttle time between attempts when the list of email addresses to try is small.

Username enumeration is the first step towards successful brute force attacks (in this system, or
others), or password spray attacks (trying a trivial password on a list of usernames).
Steps to reproduceUsing a web browser, go to https://someurl
Click on I forgot my password.
Include screenshots.

Automated
Using Burp Suite, intercept requests.
Bruteforce of username is easy to automate by sending the reset password request to the Intruder module and providing a list of usernames.
Include screenshots.
RemediationIt is recommended to display a generic error message in the reset password page, e.g. “If the email address exists, an email will be sent for resetting your password”.
IMPORTANT: The back-end response must also be generic, i.e the same for valid or invalid usernames.

Difficulty level to fix this vulnerability is assessed at “Simple”.

French

TitleÉnumération des noms d’utilisateur
DescriptionL’API pour réinitialiser un mot de passe peut être utilisée pour énumérer les noms d’utilisateur valides en se basant sur les messages d’erreur reçus.

Le testeur a réussi à obtenir une liste d’utilisateurs valides en utilisant cette vulnérabilité, de l’information publique (page Linkedin de la compagnie, liste des employés) et prédiction du format de l’adresse courriel (prénom.nom@compagnie.com).

Cette liste de noms d’utilisateur est valide : (si applicable)

Lorsqu’un mécanisme “anti-bruteforce” restreint le nombre de requêtes envoyées au serveur, l’attaque peut être ralentie, mais ceci ne prévient pas l’obtention de noms d’utilisateur valides.
L’attaque peut tout de même être automatisée en ajoutant un délai entre les essais lorsque la liste d’adresses courriel à essayer est courte.

L’énumération de noms d’utilisateur est la première étape menant à une attaque de type “bruteforce” réussie (dans ce système ou dans un autre), ou d’une attaque de type “password spray” (essayer un mot de passe trivial sur une liste de noms d’utilisateur).
Steps to reproduceOuvrir un navigateur web et aller à https://someurl
Cliquer sur Mot de passe oublié?
Include screenshots.

Automatisation
L’attaque peut être automatisée dans Burp Suite à l’aide du module Intruder.
Include screenshots.
RemediationIl est recommandé d’afficher le même message générique lorsqu’un utilisateur est valide ou non. Par exemple :
Si l’adresse courriel soumise est valide, vous recevrez un courriel contenant votre nom d’utilisateur.
ou
Si l’adresse courriel soumise est valide, vous recevrez un courriel contenant les instructions pour réinitialiser votre mot de passe.
IMPORTANT: Ceci s’applique également pour le back-end qui ne doit pas retourner une réponse différente.
La difficulté de correction est évaluée à “Simple”.