CVE-2025-3248 — # CVE-2025-3248の教育的分析と概念実証エクスプロイト
Langflowにおける重大な未認証コードインジェクション脆弱性であるCVE-2025-3248の教育的分析と概念実証エクスプロイト。緩和策のガイダンスも含む。 | Kitploit
zoly-zoly/cve-2025-3248CVE-2025-3248
# CVE-2025-3248の教育的分析と概念実証エクスプロイト
Langflowにおける重大な未認証コードインジェクション脆弱性であるCVE-2025-3248の教育的分析と概念実証エクスプロイト。緩和策のガイダンスも含む。
17時間48分前
コミュニティで最も使われているツールを見つけましょう。
技術分析と防御ガイド: CVE-2025-3248 (Langflow コードインジェクション)

Langflow に影響を与える重大なコードインジェクション脆弱性である CVE-2025-3248 に関する教育用リファレンスおよび防御分析です。
📌 脆弱性プロフィール
- CVE ID: CVE-2025-3248
- 脆弱性タイプ: リモートコード実行 (RCE) / コードインジェクション (CWE-94)
- 影響を受けるソフトウェア: Langflow (バージョン 1.3.0 未満)
- 影響の深刻度: 重大 (認証なしのリモートコード実行)
- 対象エンドポイント:
/api/v1/validate/code
🔍 技術的メカニズム
Langflow は、マルチエージェントおよび RAG アプリケーションを構築するためのオープンソースのビジュアルフレームワークです。開発者がカスタム Python コンポーネントを作成できるようにするため、コードスニペットをその場で検証・実行するロジックを提供しています。
根本原因
- 入力サニタイズの欠如: バージョン 1.3.0 より前では、
/api/v1/validate/code エンドポイントがユーザーリクエストから Python コード文字列を受け入れます。
- 安全でない実行: バックエンドは、十分なサンドボックス化、入力サニタイズ、または実行制限なしに、動的評価メカニズム (
exec() または類似のランタイム評価器など) を使用してこのコードを直接処理します。
認証が不要: このエンドポイントはデフォルトで認証されていないユーザーに公開されており、ネットワークアクセスを持つ誰でも実行をトリガーできます。その結果、攻撃者は Python のシステム実行ペイロード (os や subprocess モジュールの利用など) を供給して、Langflow サービス実行者のシステム権限で任意のコマンドを実行できます。
🛠️ 緩和策と堅牢化
Langflow インスタンスを実行または管理している場合は、以下の対策を適用してください:
1. 直ちにアップグレード
この脆弱性は Langflow バージョン 1.3.0 以降で解決されています。デプロイメントパイプラインが更新されていることを確認してください:
pip install --upgrade langflow
2. ネットワークセグメンテーションとアクセス制御
- API 公開の制限: Langflow の管理インターフェースや API エンドポイントをパブリックインターネットに直接公開しないでください。リバースプロキシ (例: Nginx、Traefik) またはクラウド API ゲートウェイを使用してアクセスを制限してください。
- 認証の有効化: すべての API ルートで、バックエンドサービスに到達する前に堅牢なユーザー認証が強制されるようにしてください。
3. コンテナ分離 (最小権限の原則)
Docker または Kubernetes 内で Langflow を実行する場合:
- コンテナプロセスを
root として実行しないでください。
- コンテナセキュリティプロファイル (AppArmor、Seccomp) を使用してシステムコールを制限してください。
- 可能な場合は読み取り専用のルートファイルシステムを使用し、コンテナからのネットワーク出力を信頼できる宛先のみに制限してください。
⚠️ 免責事項
このドキュメントは、許可されたセキュリティ評価、防御強化、および教育目的のみのために維持されています。すべてのテストは、自己ホスト型の許可されたラボ環境に限定してください。
ターゲットの検索
潜在的なターゲットを見つけるには、Fofa と Shodan.io を使用してください。
PoC の実行
git clone https://github.com/zoly-zoly/CVE-2025-3248.git
python3 CVE-2025-3248.py --target IP:Port --cmd Command