
Preuve de concept d'exploitation pour CVE-2026-25050, une attaque temporelle permettant l'énumération d'utilisateurs via l'authentification GraphQL. Mesure les temps de réponse pour identifier les comptes existants, facilitant les attaques ciblées.
Ce dépôt contient une preuve de concept démontrant une attaque par analyse temporelle affectant la méthode NativeAuthenticationStrategy.authenticate().
Cette PoC est fournie comme démonstration technique à des fins de blog / recherche.
La logique d'authentification renvoie immédiatement un résultat lorsqu'un utilisateur n'existe pas, tout en effectuant une vérification coûteuse de hachage de mot de passe lorsque l'utilisateur existe.
const user = await this.userService.getUserByEmailAddress(ctx, data.username);
if (!user) {
return false;
}
const passwordMatch = await this.verifyUserPassword(ctx, user.id, data.password);
Cela crée une différence de temps mesurable entre les tentatives d'authentification pour les utilisateurs existants et non existants.
En mesurant les temps de réponse sur plusieurs requêtes, un attaquant peut déterminer de manière fiable si un nom d'utilisateur (adresse e-mail) existe.
Cette PoC effectue plusieurs tentatives d'authentification par nom d'utilisateur et calcule le temps de réponse moyen pour classer les comptes comme :
python3 exploit.py -u http://target.tld -w users.txt
L'outil ajoute automatiquement le point de terminaison vulnérable :
/admin-api?languageCode=en
-u, --url URL cible de base
-w, --wordlist Liste de noms d'utilisateur / e-mails
--silent Mode silencieux (progression + utilisateurs valides uniquement)
--shuffle Mélanger la liste avant le test
--delay MIN:MAX Délai aléatoire entre les requêtes (ms)
--resume state.json Reprendre une analyse précédente
--json results.json Exporter les résultats au format JSON
--delay aide à éviter la détection et le rate-limiting.Cette preuve de concept est fournie uniquement pour des tests de sécurité autorisés et à des fins éducatives. L'auteur décline toute responsabilité en cas d'utilisation abusive.