系统:运行中
← 返回所有攻击
AGENTS CRITICAL NEW

Flowise CVE-2026-41264:LLM 生成的 pandas 代码升级为 RCE

Flowise CSV Agent 中的提示注入诱导模型生成可绕过正则黑名单并执行操作系统命令的 Python 代码。2026 年 4 月 15 日披露,已在 3.1.0 修复。

2026-06-15 // 5 min affects: flowise, flowise-components

这是什么?

CVE-2026-41264 是 FlowiseCSV Agent 节点的远程代码执行(RCE)漏洞。Flowise 是广受欢迎的开源低代码 LLM 应用与智能体构建工具。该漏洞由趋势科技 Zero Day Initiative 的 Dre Cura 与 Nicholas Zubrisky 报告(ZDI-CAN-29411),并于 2026 年 4 月 15 日在厂商公告中发布,4 月 21 日录入 GitHubGitLab 公告库。它影响 flowiseflowise-components 直至 3.0.13(含),并在 3.1.0 中修复。ZDI 评分 9.8(CVSS v3.1),GitHub 评分 9.2(CVSS v4)。通过提示注入这条路径,无需身份验证

真正值得关注的,并不是智能体会执行代码——那正是该节点的本职——而是这个漏洞如何绕过了一项专门为阻止它而编写的安全控制。CVE-2026-41264 是对此前 CVE-2026-41137 所发布补丁的绕过。

工作原理

CSV Agent 通过让模型编写 pandas 代码来回答关于 CSV 文件的问题,然后在 Pyodide(进程内的 WebAssembly Python)运行时中执行该代码。系统提示词礼貌地要求模型输出 pandas/numpy 操作,并避免使用 importossubprocesseval 等。但这条指令并不是安全边界——它只是文本,可以被劝离。

真正的控制是一个名为 validatePythonCodeForDataFrame() 的函数:在执行前,它会让模型的输出通过一组禁止使用的正则表达式(FORBIDDEN_PATTERNS)。这是一份黑名单,而公告的归类已经说明了一切:CWE-184,不完整的禁止输入清单。其中一个模式 /\bimport\s+(?!pandas|numpy\b)/g 试图禁止导入 pandas 或 numpy 之外的任何模块,另一个 /\bos\./g 试图屏蔽 os 模块。但二者都败给了公告中记录的一个简单的别名技巧:

# 来自 ZDI 公开公告的概念性绕过 —— 已在 3.1.0 修复
import pandas as np, os as pandas   # 'os' 被以别名 'pandas' 导入
pandas.system("[REDACTED]")         # 'pandas.system(...)' 实际上就是 os.system(...)

由于该行以 import pandas 开头,import 模式被满足;又由于危险调用写作 pandas.system(...)\bos\. 模式永远不会匹配。模型是通过塞进用户问题(系统提示词中的 {question} 字段)里的普通提示注入措辞被诱导生成上述代码的。Pyodide 环境在操作系统层面并未沙箱化,因此该调用会在运行 Flowise 服务器的用户上下文中执行。

ZDI 在其概念验证中记录了三条利用路径:向某个 chatflow 的预测端点发送未经身份验证的提示注入;已认证攻击者将 CSV Agent 接入一台只返回恶意”代码”的恶意模型服务器;以及单独使用该恶意服务器原语。PoC 还指出了 LLM 漏洞的一个现实注意点:由于输出具有概率性,“可能需要多次尝试,或根据所用模型采用不同的提示注入技巧”——他们在 Ollama 上以 Llama 3.2 进行了测试。

为何重要

这是致命三要素模式最锋利的形态:不可信输入(问题,以及 CSV 本身)、强大能力(代码执行)以及一个决定执行什么的模型。Flowise 部署广泛且常常暴露在互联网上,于是一个本应”回答关于电子表格的问题”的节点,变成了通往主机完全沦陷的通道——包括服务器持有的各类厂商 API 密钥和云凭证。更深层的教训远超 Flowise 本身:系统提示词中的自然语言指令不是访问控制,而对图灵完备语言使用正则黑名单是一场注定失败的战斗。 Python 通向某项能力的路径数不胜数(别名、属性遍历、经由 __class__/__subclasses__ 的反射),而校验器只能拦住其作者想到的那些写法。

防御

不要给代码做黑名单——而要隔离运行时。 持久的修复是操作系统层面的隔离:把不可信的、模型生成的代码放进独立的进程或容器中执行,无网络、只读文件系统、剥离 capabilities 并施加 seccomp 限制。进程内的 Pyodide 共享主机的权限范围,其本身并不构成安全边界。

优先使用白名单与无代码执行。 在可行时,根本不要让模型输出自由形式的代码。将其限制在一组经过审核的 DataFrame 操作内,或让它产出由你的代码校验并执行的结构化查询——用允许什么的白名单,取代禁止什么的黑名单。

把数据文件当作注入载体。 CSV 的内容(以及列名)会流入提示词,因此不可信的电子表格可以像用户消息一样携带指令。要对其校验、转义并隔离。

打补丁并清点资产。 将 Flowise 升级到 3.1.0 或更高版本,该版本通过禁止 CSV Agent 中的所有 import 来堵住缺口。然后排查暴露的实例:Flowise 不应在没有身份验证和网络流量控制的情况下直接置于公网。

为智能体主机施加最小权限。 以非特权用户运行 Flowise,严格收窄其 API 密钥的范围,并将其与云元数据端点隔离,使单次 RCE 不至于演变为凭证窃取。

状态

项目详情
CVECVE-2026-41264(GHSA-3hjv-c53m-58jj)
受影响flowiseflowise-components ≤ 3.0.13
已修复3.1.0(CSV Agent 中禁止所有 import)
严重性9.8 CVSS v3.1(ZDI)/ 9.2 CVSS v4(GitHub);CWE-184
是否需要认证否(提示注入路径)
报告者Dre Cura 与 Nicholas Zubrisky,趋势科技 ZDI
厂商公告2026 年 4 月 15 日
关联对 CVE-2026-41137 补丁的绕过

Sources