
Эксплойт для неаутентифицированного сброса пароля в Flowise AI ≤ 3.0.5. Использует endpoint /api/v1/account/forgot-password для смены пароля любого пользователя без предварительной аутентификации. Включает proof-of-concept скрипт и рекомендации по устранению.
CVE ID: CVE-2025-58434
Затронутое ПО: Flowise AI
Уязвимые версии: <= 3.0.5
Исправленная версия: 3.0.6 и выше
Критичность: Критическая
Автор: arensballiu
Дата: 2025
В Flowise AI версий до 3.0.5 включительно присутствует уязвимость нарушенной аутентификации в процессе сброса пароля. Конечная точка /api/v1/account/forgot-password возвращает временный токен сброса (tempToken) непосредственно в ответе API, не требуя при этом никакой предварительной аутентификации или подтверждения по электронной почте.
Неаутентифицированный злоумышленник, знающий (или способный перебрать) действительный адрес электронной почты, может:
tempToken непосредственно из ответа API.Эта уязвимость полностью обходит предполагаемый процесс подтверждения по электронной почте, поскольку токен утекает в HTTP-ответе, а не отправляется только на почтовый ящик владельца учётной записи.
| Конечная точка | Метод | Назначение |
|---|---|---|
/api/v1/auth/login | POST | Используется для проверки существования учётной записи по email |
/api/v1/account/forgot-password | POST | Инициирует сброс и раскрывает tempToken в ответе |
/api/v1/account/reset-password | POST | Завершает смену пароля с использованием токена |
Файл: CVE-2025-58434_POC.py
requestspip install requests
python3 CVE-2025-58434_POC.py -e <target_email> -u <target_url> [-p <new_password>]
| Флаг | Полная форма | Обязательный | Описание |
|---|---|---|---|
-e | --email | Да | Адрес электронной почты целевой учётной записи |
-u | --url | Да | Базовый URL экземпляра Flowise |
-p | --password | Нет | Новый пароль для установки (по умолчанию password) |
python3 CVE-2025-58434_POC.py -e [email protected] -u https://flowise.example.com -p P@ssw0rd!
[+] Email [email protected] exists!
[!] Sending forgot password request
[!] Sending reset password request
[+] Password Changed Successfully to: P@ssw0rd!
API сброса пароля был спроектирован для отправки tempToken на электронную почту пользователя, однако сервер также включал его непосредственно в тело JSON-ответа. Это означает, что любой вызывающий — аутентифицированный или нет — немедленно получает токен при выполнении запроса, что делает этап доставки по электронной почте несущественным.
Кроме того, перечисление адресов электронной почты возможно, поскольку конечная точка входа возвращает отдельное сообщение об ошибке ("Incorrect Email or Password") только тогда, когда адрес существует, что позволяет тривиально подтверждать действительные учётные записи перед запуском атаки.
tempToken передаётся исключительно через зарегистрированный адрес электронной почты.Данное доказательство концепции предоставлено исключительно в образовательных целях и для авторизованных исследований в области безопасности. Использование этого скрипта против систем без явного письменного разрешения является незаконным и неэтичным. Автор и участники не несут ответственности за неправомерное использование.