
Prueba de concepto del exploit para CVE-2026-25050, un ataque de temporización que permite la enumeración de usuarios mediante la autenticación GraphQL. Mide los tiempos de respuesta para identificar cuentas existentes, facilitando ataques dirigidos.
Este repositorio contiene una Prueba de Concepto que demuestra un ataque de temporización que afecta al método NativeAuthenticationStrategy.authenticate().
Esta PoC se proporciona como una demostración técnica con fines de blog / investigación.
La lógica de autenticación devuelve inmediatamente cuando un usuario no existe, mientras que realiza una costosa verificación del hash de la contraseña cuando el usuario existe.
const user = await this.userService.getUserByEmailAddress(ctx, data.username);
if (!user) {
return false;
}
const passwordMatch = await this.verifyUserPassword(ctx, user.id, data.password);
Esto crea una diferencia de temporización medible entre los intentos de autenticación para usuarios existentes y no existentes.
Al medir los tiempos de respuesta en múltiples solicitudes, un atacante puede determinar de forma fiable si un nombre de usuario (dirección de correo electrónico) existe.
Esta PoC realiza múltiples intentos de autenticación por nombre de usuario y calcula el tiempo de respuesta promedio para clasificar las cuentas como:
python3 exploit.py -u http://target.tld -w users.txt
La herramienta añade automáticamente el endpoint vulnerable:
/admin-api?languageCode=en
-u, --url URL base del objetivo
-w, --wordlist Lista de nombres de usuario / correos electrónicos
--silent Modo silencioso (solo progreso y usuarios válidos)
--shuffle Barajar la lista antes de probar
--delay MIN:MAX Retardo aleatorio entre solicitudes (ms)
--resume state.json Reanudar un escaneo anterior
--json results.json Exportar resultados a JSON
--delay ayuda a evitar la detección y la limitación de velocidad.Esta prueba de concepto se proporciona únicamente para pruebas de seguridad autorizadas y fines educativos. El autor no asume ninguna responsabilidad por su uso indebido.