
Flowise AI ≤ 3.0.5 における未認証パスワードリセットのエクスプロイト。`/api/v1/account/forgot-password` エンドポイントを悪用し、事前認証なしで任意のユーザーのパスワードを変更します。概念実証スクリプトと緩和策のガイドラインを含みます。
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 を直接抽出する。この脆弱性は、トークンがアカウント所有者のメール受信箱にのみ送信されるのではなく 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 が登録済みのメールアドレス経由でのみ送信されるようにしてください。この実証コードは、教育および許可されたセキュリティ研究目的のみに提供されています。明示的な書面による許可なくシステムに対してこのスクリプトを使用することは違法かつ非倫理的です。作者および貢献者は、悪用に対して一切の責任を負いません。