CVE-2026-33017は、Langflowにおける**未認証リモートコード実行(RCE)**の脆弱性であり、公開ビルドエンドポイントが攻撃者制御のフローデータを受け入れ、カスタムコンポーネントコードがサーバー上で実行されることを可能にします。
このラボでは、検証フローは以下の通りです:
PUBLICフローを作成するjob_idを受け取るプルーフはLangflow APIのイベントメカニズムを通じて直接取得されるため、結果はシステムインターフェース自体を通じて観察可能です。
このドキュメントは脆弱性のみのラボを提示します。
現時点では、docker composeにはvulnという1つのサービスのみが含まれています。これは、このプロジェクトが実アーティファクトのみのアプローチに従い、公式の修正済みアーティファクトに基づかないパッチ適用済み環境を避けるためです。
このラボでは、以下の動作が検証されています:
http://localhost:7861で実行される1.8.1を返すbuild_public_tmpがjob_idを返すプルーフオブジェクトの例:
{
"canary": "lf33017-c14fc1c9",
"id_output": "uid=1000(user) gid=0(root) groups=0(root)",
"whoami": "user",
"hostname": "155aa3fd5e2a",
"cwd": "/app",
"python_version": "3.12.12"
}
主要な証拠は以下の通りです:
id_outputwhoamihostnamecwdpython_version上記の情報は、攻撃者制御のコードが実際にサーバー側で実行されたことを示しています。
.
├── docker-compose.yml
├── vuln/
│ └── Dockerfile
├── poc/
│ └── poc.py
├── README.md
└── .gitignore
7861 -> 7860この脆弱性は、Langflowの公開ビルドエンドポイントがユーザー提供のフロー定義を受け入れるために存在します。エンドポイントは公開フロー用に設計されていますが、攻撃者がカスタムコンポーネントコードを含むノード定義を送信すると、システムはそのコードをフロービルドパスに渡し、最終的にサーバー上でのコード実行につながります。
このプロジェクトのPoCは、出力にプルーフオブジェクトを返すカスタムコンポーネントを使用して、攻撃者制御のコードが実際に実行されることを実証します。
このプロジェクトのPoCは最小限の害となるように設計されており、APIを通じて明確に観察可能なプルーフに焦点を当てています。そのワークフローは以下の通りです:
PUBLICフローを作成するjob_idを受け取るこのPoCは以下をカバーしません:
docker compose up -d --build
curl -i http://localhost:7861/api/v1/version
python3 poc/poc.py --base-url http://localhost:7861 --artifact-dir ./artifacts/vuln
PoCが成功すると、出力は次のようになります:
[+] http://localhost:7861 ready (version=1.8.1)
=== TARGET: vuln ===
Base URL : http://localhost:7861
Version : 1.8.1
Flow ID : <uuid>
HTTP : 200
Job ID : <uuid>
Canary : lf33017-xxxxxxxx
Events : artifacts/vuln/events-<job_id>.ndjson
Polls : 2
[+] Proof observed through the Langflow API events endpoint:
{
"canary": "lf33017-xxxxxxxx",
"id_output": "uid=1000(user) gid=0(root) groups=0(root)",
"whoami": "user",
"hostname": "<container-hostname>",
"cwd": "/app",
"python_version": "3.12.x"
}
[+] Vulnerable behavior observed
artifacts/vuln/events-<job_id>.ndjsonファイルには、追加のデバッグ用に生のイベントデータが保存されます。
このPoCは以下を実証します:
このPoCは永続化や高度なポストエクスプロイテーションを実証することを目的としておらず、脆弱性を検証するために必要な最小限の影響に留めています。
このラボに基づいて、実証された影響は以下の通りです:
このリポジトリには、設計上、パッチ適用済みサービスは含まれていません。
その範囲は、実際の上流アーティファクト上で脆弱な動作を再現することに限定されています。パッチ適用済みサイドは、ベンダーまたは上流プロジェクトから明確に検証可能な公式の修正済みアーティファクトが利用可能な場合にのみ追加されます。
そのため、このリポジトリは意図的に以下を避けています:
これにより、ラボの範囲が狭く保たれ、技術的に誠実なものとなっています。人工的な並列セットアップを提示する代わりに、このリポジトリは3つのことに焦点を当てています:
実際には、これによりこのリポジトリは以下に最適です:
docker compose down -v
このラボはlocalhostでのテストのみを目的として設計されています。
使用要件: