
Эксплойт proof-of-concept для CVE-2026-25050 — атака по времени, позволяющая перечислять пользователей через аутентификацию GraphQL. Измеряет время ответа для выявления существующих учётных записей, что упрощает целевые атаки.
Этот репозиторий содержит Proof of Concept, демонстрирующий атаку по времени, затрагивающую метод NativeAuthenticationStrategy.authenticate().
Данный PoC предоставлен в качестве технической демонстрации для блога / исследовательских целей.
Логика аутентификации немедленно возвращает результат, когда пользователь не существует, при этом выполняя затратную проверку хэша пароля, когда пользователь существует.
const user = await this.userService.getUserByEmailAddress(ctx, data.username);
if (!user) {
return false;
}
const passwordMatch = await this.verifyUserPassword(ctx, user.id, data.password);
Это создаёт измеримую разницу во времени между попытками аутентификации для существующих и несуществующих пользователей.
Измеряя время ответа при множественных запросах, злоумышленник может достоверно определить, существует ли имя пользователя (адрес электронной почты).
Данный PoC выполняет множественные попытки аутентификации для каждого имени пользователя и вычисляет среднее время ответа для классификации учётных записей как:
python3 exploit.py -u http://target.tld -w users.txt
Инструмент автоматически добавляет уязвимую конечную точку:
/admin-api?languageCode=en
-u, --url Базовый URL цели
-w, --wordlist Список имён пользователей / адресов электронной почты
--silent Тихий режим (прогресс + только валидные пользователи)
--shuffle Перемешать список перед тестированием
--delay MIN:MAX Случайная задержка между запросами (мс)
--resume state.json Возобновить предыдущее сканирование
--json results.json Экспорт результатов в JSON
--delay помогает избежать обнаружения и ограничения частоты запросов.Данный proof of concept предоставлен только для авторизованного тестирования безопасности и образовательных целей. Автор не несёт ответственности за неправомерное использование.