
CVE-2026-5027の概念実証エクスプロイト。Langflowにおけるパストラバーサル(ディレクトリトラバーサル)の脆弱性で、巧妙に細工されたmultipartファイル名を介して任意のファイル書き込みと潜在的なリモートコード実行を可能にします。
この投稿は、EQSTLabが公開した調査記事です。
この脆弱性を報告・分析してくれたYahia Hamzaに感謝します。
★ CVE-2026-5027 Langflow パストラバーサル / 任意ファイル書き込み PoC ★
CVE-2026-5027 : Langflow 任意ファイル書き込み脆弱性
説明: Langflow <= 1.8.4 におけるパストラバーサル脆弱性により、攻撃者は /api/v2/files エンドポイントに送信された巧妙に細工された multipart filename を介して、意図されたアップロードディレクトリの外部に任意のファイルを書き込むことができます。自動ログインが有効になっている、または認証が他の方法で弱く強制されているデプロイメントでは、この問題を悪用して、攻撃者が制御するコンテンツを機密性の高いファイルシステム上の場所に書き込むことで、リモートコード実行を達成できる可能性があります。
Dockerを使用して脆弱な環境をビルドおよび実行します:
docker build -t cve-2026-5027 .
docker run --rm -it -p 9013:7860 --name cve-2026-5027 cve-2026-5027
# 非破壊的な検証(証明ファイル)
python3 CVE-2026-5027.py -t <HOST_IP>
# 認証モードでの検証
python3 CVE-2026-5027.py -t <HOST_IP> -u <USERNAME> -p <PASSWORD>
脆弱なエンドポイント
POST /api/v2/files
この問題は、アップロード機能がクライアントから提供された multipart filename の値を信頼しているために存在します。安全なサーバー側のストレージ名を生成したり、解決されたパスを専用のアップロードディレクトリに制限したりする代わりに、脆弱なコードパスでは ../ などのトラバーサルシーケンスが最終的な保存先パスに影響を与えることを許可しています。
その結果、攻撃者は意図されたストレージルートから脱出し、アプリケーションにサーバーファイルシステム上の任意の場所へファイルを書き込ませることができます。
代表的な悪用フローは以下のとおりです:
/api/v2/files に multipart アップロードリクエストを送信します。filename を提供します。これは根本的に CWE-22: 制限されたディレクトリへのパス名の不適切な制限 の問題です。
このセキュリティ上の欠陥は、アップロード処理中にユーザーが制御するファイルパスのサニタイズと検証が不十分であるために発生します。アプリケーションは元のクライアントファイル名を受け入れ、パスの正規化と封じ込めを適切に強制することなく、それをストレージワークフローに渡します。
防御の観点から見ると、この危険なパターンは概念的には以下のコードと似ています:
save_path = base_dir / file.filename
file.filename に以下のようなパストラバーサルコンポーネントが含まれている場合:
../../../../tmp/poc.txt
最終的に解決されるパスが base_dir の外側を指す可能性があり、任意のファイル書き込みが可能になります。
任意のファイル書き込みの脆弱性は、攻撃者がファイルの内容だけでなく保存先のパスも制御できるため、標準的な無制限アップロードの問題よりも深刻であることがよくあります。Langflow プロセスの実行時権限によっては、以下が可能になる場合があります:
攻撃者 --(アクセストークンの取得または自動ログインの悪用)--> Langflow /api/v2/files --(../ を含む巧妙に細工された multipart filename の提供)--> アップロードディレクトリ外への任意のファイル書き込み --(機密性の高い場所への書き込み)--> 潜在的なリモートコード実行
このリポジトリは、Langflow インスタンスの不正な悪用を促進することを意図したものではありません。このプロジェクトの目的は、セキュリティ研究者、防御者、開発者が脆弱性を理解し、管理された環境での露出を検証し、効果的な緩和策を適用するのを支援することです。