CVE-2026-70483: Open WebUI: broken authz cancels other users' chats
GHSA-3vf6-64vr-3g56 LOW PoC AVAILABLE CISA: TRACK*Open WebUI's chat deletion endpoint canceled a chat's in-flight generation before checking whether the caller actually owned or was permitted to delete that chat, so any authenticated low-privilege user who obtained another user's chat id could silently abort their running model response, title generation, or tag generation. The bug requires nothing beyond a default 'user' role account and a valid chat id — no special permission, and revoking chat.delete does not stop it — which keeps exploitation trivial even though CVSS scores it low (3.1) because no data is disclosed, modified, or deleted. EPSS sits at 0.00244 with a public PoC available and CISA SSVC tracking it as TRACK_STAR, meaning it's monitored but not flagged for urgent action; there's no KEV listing or Nuclei template, so this is an availability nuisance rather than an active exploitation concern. Any org self-hosting Open WebUI (150 other CVEs recorded in this package, 4 downstream dependents) should upgrade to 0.11.0 where the handler now authorizes before cancelling, and in the interim watch for repeated DELETE /api/v1/chats/{id} calls returning 401/404 from non-owner accounts as a signal of scripted harassment against shared or team chats.
What is the risk?
Low severity per CVSS (3.1, AV:N/AC:H/PR:L/UI:N/C:N/I:N/A:L) — confidentiality and integrity are untouched, and impact is limited to availability of an in-progress generation that the victim can simply re-trigger. Exploitability is technically trivial (only a low-privileged authenticated account and a known chat id are needed) but practically constrained by attack complexity: the attacker must already know or obtain the victim's chat id (via a shared-chat/folder link or brute force) and time the request while a generation is actively running. EPSS (0.00244) and the absence of CISA KEV or a Nuclei template both suggest this is not being mass-exploited, and SSVC TRACK_STAR confirms a 'monitor, no urgent action' posture. The main residual risk is nuisance-level, scriptable harassment inside multi-tenant or team deployments where chat/folder sharing is common.
How does the attack unfold?
What systems are affected?
| Package | Ecosystem | Vulnerable Range | Patched |
|---|---|---|---|
| Open WebUI | pip | >= 0.9.6, < 0.11.0 | 0.11.0 |
Do you use Open WebUI? You're affected.
How severe is it?
What is the attack surface?
What should I do?
1 step-
Upgrade Open WebUI to 0.11.0 or later, where delete_chat_by_id resolves and authorizes the chat (admin or permitted owner) before performing any cancellation or deletion, matching the ordering already used by the dedicated task-stop endpoint. If immediate upgrade isn't possible, restrict or disable chat/folder sharing to reduce the pool of chat ids reachable by non-owners, and monitor access logs for repeated DELETE /api/v1/chats/{id} requests returning 401/404 from accounts that don't own the target chat — a pattern indicating scripted cancellation abuse. No workaround exists that fully closes the gap short of patching, since revoking the chat.delete permission does not prevent the cancellation side effect.
What does CISA's SSVC say?
Source: CISA Vulnrichment (SSVC v2.0). Decision based on the CISA Coordinator decision tree.
How is it classified?
Which compliance frameworks are affected?
This CVE is relevant to:
Frequently Asked Questions
What is CVE-2026-70483?
Open WebUI's chat deletion endpoint canceled a chat's in-flight generation before checking whether the caller actually owned or was permitted to delete that chat, so any authenticated low-privilege user who obtained another user's chat id could silently abort their running model response, title generation, or tag generation. The bug requires nothing beyond a default 'user' role account and a valid chat id — no special permission, and revoking chat.delete does not stop it — which keeps exploitation trivial even though CVSS scores it low (3.1) because no data is disclosed, modified, or deleted. EPSS sits at 0.00244 with a public PoC available and CISA SSVC tracking it as TRACK_STAR, meaning it's monitored but not flagged for urgent action; there's no KEV listing or Nuclei template, so this is an availability nuisance rather than an active exploitation concern. Any org self-hosting Open WebUI (150 other CVEs recorded in this package, 4 downstream dependents) should upgrade to 0.11.0 where the handler now authorizes before cancelling, and in the interim watch for repeated DELETE /api/v1/chats/{id} calls returning 401/404 from non-owner accounts as a signal of scripted harassment against shared or team chats.
Is CVE-2026-70483 actively exploited?
Proof-of-concept exploit code is publicly available for CVE-2026-70483, increasing the risk of exploitation.
How to fix CVE-2026-70483?
Upgrade Open WebUI to 0.11.0 or later, where delete_chat_by_id resolves and authorizes the chat (admin or permitted owner) before performing any cancellation or deletion, matching the ordering already used by the dedicated task-stop endpoint. If immediate upgrade isn't possible, restrict or disable chat/folder sharing to reduce the pool of chat ids reachable by non-owners, and monitor access logs for repeated DELETE /api/v1/chats/{id} requests returning 401/404 from accounts that don't own the target chat — a pattern indicating scripted cancellation abuse. No workaround exists that fully closes the gap short of patching, since revoking the chat.delete permission does not prevent the cancellation side effect.
What systems are affected by CVE-2026-70483?
This vulnerability affects the following AI/ML architecture patterns: model serving, agent frameworks.
What is the CVSS score for CVE-2026-70483?
CVE-2026-70483 has a CVSS v3.1 base score of 3.1 (LOW). The EPSS exploitation probability is 0.30%.
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0012 Valid Accounts AML.T0029 Denial of AI Service Compliance Controls Affected
What are the technical details?
Original Advisory
## 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.
Exploitation Scenario
An attacker with a standard 'user' account on a shared Open WebUI instance obtains a victim's chat id — for example via a chat or folder the victim shared with them, or by brute-forcing ids. While the victim has a generation actively streaming (a long model response, or an auto-generated title/tag task), the attacker sends DELETE /api/v1/chats/{chat_id}. The deletion itself is refused with a 404 since the attacker isn't authorized to delete the chat, but the handler had already canceled the victim's in-flight task as a side effect before that authorization check ran. The victim's response is truncated mid-generation with no error explaining why. The attacker can script this against any known chat id, repeatedly interrupting the same victim's work as long as the id remains valid and sharing isn't revoked.
Weaknesses (CWE)
CWE-862 — Missing Authorization: The product does not perform an authorization check when an actor attempts to access a resource or perform an action.
- [Architecture and Design] Divide the product into anonymous, normal, privileged, and administrative areas. Reduce the attack surface by carefully mapping roles with data and functionality. Use role-based access control (RBAC) [REF-229] to enforce the roles at the appropriate boundaries. Note that this approach may not protect against horizontal authorization, i.e., it will not protect a user from attacking others with the same role.
- [Architecture and Design] Ensure that access control checks are performed related to the business logic. These checks may be different than the access control checks that are applied to more generic resources such as files, connections, processes, memory, and database records. For example, a database may restrict access for medical records to a specific database user, but each record might only be intended to be accessible to the patient and the patient's doctor [REF-7].
Source: MITRE CWE corpus.
CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:L References
Timeline
Related Vulnerabilities
CVE-2026-44551 9.1 open-webui: LDAP auth bypass — full account takeover
Same package: open-webui CVE-2026-45672 8.8 open-webui: code exec gate bypass via API endpoint
Same package: open-webui CVE-2026-44552 8.7 open-webui: Redis cache poisoning enables cross-instance tool hijack
Same package: open-webui CVE-2025-64495 8.7 Open WebUI: XSS-to-RCE via malicious prompt injection
Same package: open-webui CVE-2026-45315 8.7 open-webui: stored XSS → JWT theft and admin takeover
Same package: open-webui