CVE-2025-34267CVE-2025-34267是Flowise AI平台中存在的一个严重安全漏洞,影响版本范围为v3.0.1至v3.0.7(< 3.0.8)以及所有启用ALLOW_BUILTIN_DEP环境变量的后续版本。该漏洞结合了认证远程代码执行(RCE)和Node.js VM沙箱逃逸两种攻击路径,CVSS评分为9.9,属于严重级别。
Flowise是一个开源的AI可视化工作流构建工具,允许用户通过拖拽方式创建基于大语言模型的应用。该漏洞的核心问题在于Flowise在其nodevm执行环境中不安全地集成了Puppeteer和Playwright模块。当ALLOW_BUILTIN_DEP环境变量被启用时,攻击者可以通过创建或运行利用Puppeteer/Playwright的工具,指定攻击者控制的浏览器二进制路径和参数。当工具执行时,攻击者控制的可执行文件和参数将在宿主机上运行,从而绕过nodevm沙箱的预期限制,实现在宿主机上下文中执行任意代码。
该漏洞最初被开发者错误地分配为CVE-2025-26319的重复项,但根据披露者vulncheck的说明,这两个CVE应当被视为不同的漏洞。此漏洞的利用需要低权限认证,但无需用户交互,攻击向量为网络,且对机密性、完整性和可用性均产生高影响,是极其危险的安全缺陷。
Flowise的nodevm执行环境旨在提供一个隔离的沙箱,用于安全地执行用户编写的JavaScript代码。然而,该实现存在两个关键的安全缺陷:
1. **ALLOW_BUILTIN_DEP配置风险**:当Flowise部署中启用了ALLOW_BUILTIN_DEP环境变量时,nodevm沙箱允许加载Node.js内置模块和npm包,包括Puppeteer和Playwright等浏览器自动化工具。这一配置选项本意是提供灵活性,但引入了严重的安全风险。
2. **不安全的模块集成**:Puppeteer和Playwright允许用户指定自定义的浏览器可执行文件路径(executablePath)以及启动参数(args)。由于nodevm沙箱未能正确限制这些参数的合法性,攻击者可以传入恶意路径或参数。当Puppeteer/Playwright尝试启动浏览器时,它将执行攻击者控制的二进制文件或注入恶意参数,从而在宿主机上执行任意命令。
3. **沙箱逃逸机制**:Node.js VM模块提供的隔离机制仅在JavaScript层面有效,但一旦允许执行外部进程(如启动浏览器),沙箱边界即被突破。攻击者通过精心构造的executablePath参数,可以指向任意可执行文件(如反弹shell脚本),或通过args参数注入恶意命令行参数,实现宿主机级别的代码执行。
利用条件:攻击者需要拥有Flowise的有效认证凭据(低权限即可),能够创建或修改使用Puppeteer/Playwright的工具节点,并在该节点中指定恶意的浏览器路径和参数配置。