
CVE-2026-12944(Langflow 1.10.0 の urllib SSRF およびファイル読み取り脆弱性)の Python PoC。バージョンをフィンガープリントし、custom_component エンドポイントを悪用します。
Langflow 1.10.0 urllib SSRF
Langflow OSS ≤ 1.10.0 — urllib.request / socket を介したカスタムコンポーネントのコード実行。コンポーネントスキャナーの拒否リストからこれらの標準ライブラリモジュールが漏れていた。IBM は 1.10.1 で修正した。
IBM の評価は PR:L。実行シンクは POST /api/v1/custom_component であり、この呼び出しにはセッション Cookie / ベアラートークンが必要である。この PoC がそれを取得する方法:
--test は認証を行わない。 GET /api/v1/version のみを実行する(加えて接続確認の GET /)。--read / --fetch はまず認証し、その後コンポーネントを POST する。LANGFLOW_AUTO_LOGIN がある。スクリプトは GET /api/v1/auto_login を実行し、JSON に があれば を送信する。ユーザー名もパスワードも不要。access_tokenAuthorization: Bearer …--uname / --password を使って POST /api/v1/login を application/x-www-form-urlencoded(username、password)として実行する。標準のデフォルトは langflow / langflow。urllib.request.urlopen(...) を呼び出す {"code": …} を付けて POST /api/v1/custom_component を実行する。--uname / --password は手順 4 のためだけに存在する。デフォルトのインストールでは使用されない。
認可されたテスト専用。所有していない、またはテスト許可を得ていないシステムに対してこれを実行しないこと。
必要条件: Python 3、標準ライブラリのみ。
python3 cve-2026-12944-langflow-urllib-ssrf.py -u http://TARGET --test
python3 cve-2026-12944-langflow-urllib-ssrf.py -u http://TARGET --read /etc/hostname
python3 cve-2026-12944-langflow-urllib-ssrf.py -u http://TARGET --fetch http://127.0.0.1:7860/api/v1/version
python3 cve-2026-12944-langflow-urllib-ssrf.py -u https://TARGET --read /etc/hostname --insecure
python3 cve-2026-12944-langflow-urllib-ssrf.py -u TARGET --uname langflow --password langflow --read /etc/hostname
| フラグ | 動作 |
|---|---|
-u / --url | Langflow のベース URL(必須)。http:// または https://。スキームのないホスト名はまず HTTPS として試行され、次に HTTP が試行される。http→https リダイレクトは POST を維持する。不正な TLS 証明書は検証なしで再試行される。--insecure は最初から検証をスキップする |
--test | フィンガープリントのみ: GET /api/v1/version(公開)。ログインなし、custom_component なし |
--read PATH | ガジェットを発火: urllib.request による PATH の file:// 読み取り(サーバー上で実行される) |
--fetch URL | SSRF: urllib.request.urlopen(URL) を実行し、ボディを出力する |
--uname / --password | AUTO_LOGIN が無効の場合のみ(標準デフォルト: langflow / langflow) |
--insecure | TLS 検証をスキップ |
--timeout | HTTP タイムアウト秒(デフォルト 30) |
--test エンドポイント: GET /api/v1/version。"version" / "main_version" を含む 200 は VERSION を出力し、その文字列が 1.0.0–1.10.0 であれば IN_WINDOW を、続いて PRESENT を出力する。/api/v1/auto_login や /api/v1/custom_component には決してアクセスしない。
--read / --fetch は GET /api/v1/auto_login(または POST /api/v1/login)にアクセスし、次に POST /api/v1/custom_component にアクセスする。
標準出力: VERSION、IN_WINDOW、OUT_OF_WINDOW、PRESENT、VULNERABLE、NEED_AUTH、NOT_FOUND、NOT_VULNERABLE、READ。

CVE: CVE-2026-12944。IBM の勧告; 1.10.1 にアップグレードすること。