Skip to main content

Open WebUI CVE-2026-70483

| EUVDEUVD-2026-52888 LOW
Missing Authorization (CWE-862)
2026-08-04 https://github.com/open-webui/open-webui GHSA-3vf6-64vr-3g56
3.1
CVSS 3.1 · Vendor: https://github.com/open-webui/open-webui

Severity by source

Vendor (https://github.com/open-webui/open-webui) PRIMARY
3.1 LOW
AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:L
vuln.today AI
3.1 LOW

Network API requires authenticated attacker (PR:L) with victim's chat ID and an active generation in progress (AC:H); impact is limited to availability of in-flight tasks only (A:L).

3.1 AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:L
4.0 AV:N/AC:L/AT:P/PR:L/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N

Primary rating from Vendor (https://github.com/open-webui/open-webui).

CVSS VectorVendor: https://github.com/open-webui/open-webui

Attack Vector
Network
Attack Complexity
High
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
Low

Lifecycle Timeline

2
Source Code Evidence Fetched
Aug 04, 2026 - 20:18 vuln.today
Analysis Generated
Aug 04, 2026 - 20:18 vuln.today

DescriptionCVE.org

Summary

DELETE /api/v1/chats/{id} cancelled a chat's in-flight tasks before it checked whether the caller was allowed to delete that chat. Any authenticated user who knew another user's chat id could therefore abort that user's running model response, title generation or tag generation. The deletion itself was still refused, so the only missing control was on the cancellation side effect.

Preconditions

Default configuration, no special deployment shape. The attacker needs a normal account with the default user role and nothing else: the chat.delete permission is not required, and revoking it does not prevent the cancellation. The attacker also needs the victim's chat id, which is returned by the read-only shared-chat endpoint when a chat or a folder has been shared with them - otherwise enumerating the chat id requires guessing the chat id or brute forcing it, and the victim must have a generation running at that moment.

Impact

A user can repeatedly interrupt another user's generations without any write access to the target chat. Nothing is deleted, modified or disclosed, and the victim can simply regenerate, so the effect is limited to availability of in-flight responses. Because the attacker only needs a chat id, the interruption can be scripted and repeated for as long as the id stays valid.

Fix

Fixed in https://github.com/open-webui/open-webui/pull/27006, released in 0.11.0. The handler now resolves and authorizes the chat first and only cancels tasks and deletes once the caller is an admin or a permitted owner; an unauthorized caller gets 401 or 404 with no cancellation.

Root cause

Affected component: delete_chat_by_id in backend/open_webui/routers/chats.py, serving DELETE /api/v1/chats/{id}. Affected setup: every build from 0.9.6 up to and including 0.10.2.

The cancellation was written as a cleanup step for the delete that follows it, and it was placed at the top of the handler so that it would run before the chat row disappeared. That put an unauthenticated-by-ownership side effect ahead of every check in the function: the admin branch, the chat.delete permission check, and the owner lookup all ran afterwards, so their outcome could no longer affect whether the tasks were stopped. The dedicated task-stop endpoint already verified ownership before calling the same helper, so the intended ordering existed elsewhere in the codebase.

Proof of concept

Against a 0.10.2 instance with two accounts, a victim admin and an attacker holding the default user role, and an upstream that streams slowly:

  1. As the victim, start a generation in a chat and confirm GET /api/tasks/chat/{chat_id} reports one active task.
  2. As the attacker, confirm GET /api/v1/chats/{chat_id} returns 401, then send DELETE /api/v1/chats/{chat_id}.
  3. The delete is refused with 404, the chat still exists, but the victim's task list is now empty and the assistant message is marked done mid-generation. A control run without step 2 keeps generating.

Repeating step 2 with the chat.delete permission revoked for the user role returns 401 and still cancels the task. The same sequence against 0.11.0 leaves the task running.

Credits

@GabrielGomesAL, who reported the missing authorization on the chat delete endpoint.

AnalysisAI

Open WebUI versions 0.9.6 through 0.10.2 contain an authorization-ordering flaw in the DELETE /api/v1/chats/{id} handler that allows any authenticated user to silently cancel another user's active LLM generation tasks - including streaming model responses, title generation, and tag generation - without holding delete permissions on the target chat. The task-cancellation helper executes unconditionally at the top of the handler, before ownership verification, admin checks, or permission gate evaluation, meaning even revoking the chat.delete role permission leaves the cancellation side effect fully reachable. A detailed proof-of-concept is included in the GitHub security advisory; no public exploitation confirmed at time of analysis.

Technical ContextAI

Open WebUI is a self-hosted web frontend for local and remote LLM inference, distributed as a Python pip package (pkg:pip/open-webui). The affected component is the delete_chat_by_id function in backend/open_webui/routers/chats.py, which serves DELETE /api/v1/chats/{id}. The root cause is classified as CWE-862 (Missing Authorization): the stop_item_tasks helper - which terminates in-flight Redis-backed task workers for streaming, title, and tag generation - was placed unconditionally at the top of the handler as a pre-deletion cleanup step. All authorization logic (admin branch, chat.delete permission check, owner lookup) appeared below this call, so their outcomes could not influence whether cancellation occurred. The fix in PR #27006 (commit 4f93c3e) reorders the handler to resolve and authorize the chat first, only reaching stop_item_tasks after confirming the caller is an admin or permitted owner, consistent with the ordering already present in the dedicated task-stop endpoint elsewhere in the codebase.

RemediationAI

Upgrade to Open WebUI 0.11.0 or later, which is the vendor-confirmed fixed release (pip install --upgrade open-webui). The fix is delivered via PR #27006 (commit 4f93c3e36c1734342a32c312bdb0516c66d8e93c), which reorders the handler so task cancellation only occurs after successful authorization. Advisory and patch details are at https://github.com/open-webui/open-webui/security/advisories/GHSA-3vf6-64vr-3g56 and https://github.com/open-webui/open-webui/pull/27006. For deployments that cannot immediately upgrade, the most targeted compensating control is to disable or restrict the shared-chat and shared-folder features that expose chat IDs to other users, since the primary realistic attack path requires the attacker to obtain a valid chat ID from those endpoints. This reduces the attack to brute-force ID guessing, which is impractical at scale. Network-layer blocking of DELETE requests to /api/v1/chats/ for non-owner users is not feasible without application-layer changes, as the endpoint is part of normal user workflows.

Share

CVE-2026-70483 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy