Langflow —— 这个允许开发者将 LLM 提示词、数据源和自定义 Python 代码组合在一起的开源平台 —— 存在一个严重漏洞,允许任何人在受影响的服务器上运行任意 Python 代码。CVE-2026-33017 的 CVSS 评分高达 9.8,影响 1.9.0 之前的所有版本,且无需身份验证即可触发,迫使运营商必须进行升级或关闭 “public flow” 功能。
该漏洞的影响
Langflow 的 public-flow 端点旨在用于演示型聊天机器人,允许任何人无需登录即可尝试。该端点在请求体中接收一个 data 参数,并假设负载包含一个安全的流定义,然后直接将内容传递给 Python 内置的 exec() 函数。exec() 会将字符串作为代码进行评估,并以与 Langflow 进程相同的权限运行。
攻击者只需获取公开流的 ID(该值通常显示在共享 URL 中),即可构造一个替换为恶意流定义的请求。当服务器处理该请求时,注入的 Python 代码会立即运行,从而让攻击者获得对宿主系统的完全控制权。
漏洞是如何产生的
在早期的版本中,当存在 data 字段时,从数据库加载流的代码路径会被绕过。服务器并没有对负载进行清洗或验证,而是直接信任调用者并原封不动地执行。由于该端点无需登录即可访问,对于任何启用了 public flows 的 Langflow 实例,其攻击面即为整个公共互联网。
谁面临风险
鉴于其严重性评分,该漏洞被视为“严重”(critical)。
立即采取的缓解措施
- 升级到 Langflow 1.9.0 —— 这是唯一经过验证的修复方法。
- 禁用 public flow 功能 —— 如果您不需要匿名访问。
- 关闭 AUTO_LOGIN —— 这可以阻止为未经身份验证的请求自动创建会话。
- 将 API 置于防火墙或反向代理之后 —— 以将访问限制在受信任的 IP 范围内。
- 部署 Web 应用防火墙 (WAF) —— 用于拦截向包含
data参数的build_public_tmp端点发送的请求。
修复的重要性
该漏洞利用了一个根本性的设计错误:在具有高权限的上下文中信任用户提供的代码。通过消除这种信任并实施更严格的输入处理,Langflow 1.9.0 重新建立了公共演示用户与底层服务器之间的屏障。
后续关注事项
- 社区响应 —— 关注 Langflow 仓库以获取后续补丁或公告。
核心结论: 任何暴露了 public-flow 端点的 Langflow 部署都必须立即进行补丁修复。在运行 1.9.0 版本之前,请关闭该功能,并通过网络控制手段对服务进行封锁。一旦发生安全事件,其代价将远超进行快速升级所付出的努力。
