CVE-2026-70488: open-webui: broken authz lets users delete others' KB data
GHSA-jxc9-xmc4-gr23 MEDIUMA user with write access to any knowledge base in open-webui — owner, granted collaborator, or admin — can delete directories and file embeddings belonging to a knowledge base they don't control, because the sync cleanup endpoint verifies write access on the knowledge base named in the URL but then blindly acts on directory and file IDs supplied in the request body without checking those IDs actually belong to that knowledge base. The blast radius is narrower than it first appears: the attacker needs to already be a collaborator who can see the victim's shared knowledge base to learn its non-enumerable UUIDs, and the impact is data availability, not disclosure — deleted documents silently drop out of RAG retrieval and chat-with-file breaks, but nothing is exposed and an owner can restore state by re-adding files. With an EPSS score of 0.00213, no public exploit or Nuclei template, no CISA KEV listing, and a CISA SSVC decision of TRACK, this is not an urgent, actively-exploited threat, but the failure mode — silent, unauthorized removal of RAG source documents — is exactly the kind of integrity gap that erodes trust in retrieval results without an obvious alarm. Teams running open-webui with shared knowledge bases (workspace.knowledge enabled) should upgrade to 0.11.0 or later; in the interim, audit who holds write/collaborator access to shared knowledge bases and treat unexplained drops in document count or chat-with-file failures as a signal to investigate.
What is the risk?
Medium risk overall. Exploitability is constrained by two preconditions: the attacker must already hold write access to at least one knowledge base (owner, write-grant, or admin — not available to an arbitrary unauthenticated or low-privilege user since workspace.knowledge is off by default), and must know the victim's directory or file UUIDs, which are not enumerable, so in practice the attacker is a read-only or write collaborator on a knowledge base shared beyond its owner. Deployments where no knowledge base is shared beyond its owner are not reachable at all. Impact is confined to integrity/availability of RAG associations and per-file vector caches — no confidentiality loss, and the underlying files and database rows survive, making recovery straightforward for the owner. EPSS (0.00213), absence from CISA KEV, no public exploit code, and an SSVC TRACK decision all support a non-urgent classification, but the low CVSS (4.3) understates the operational annoyance for any team relying on knowledge base completeness for compliance or audit workflows.
How does the attack unfold?
What systems are affected?
| Package | Ecosystem | Vulnerable Range | Patched |
|---|---|---|---|
| Open WebUI | pip | >= 0.9.6, <= 0.10.2 | 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, which scopes both request-body loops (directory deletion and per-file vector cleanup) to the knowledge base named in the URL. Until patched: minimize the number of users with write access or collaborator grants on shared knowledge bases, and avoid sharing knowledge bases beyond their owner where not operationally necessary (recall workspace.knowledge is off by default — confirm it's still disabled if you don't need shared KBs). Detection: monitor for calls to
/api/v1/knowledge/{id}/sync/cleanupwhere the directory_id/file_id parameters in the request body reference objects outside the URL's knowledge base, and watch for unexpected drops in document counts or chat-with-file failures reported by knowledge base owners, which would indicate the vulnerability was already exploited pre-patch.
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-70488?
A user with write access to any knowledge base in open-webui — owner, granted collaborator, or admin — can delete directories and file embeddings belonging to a knowledge base they don't control, because the sync cleanup endpoint verifies write access on the knowledge base named in the URL but then blindly acts on directory and file IDs supplied in the request body without checking those IDs actually belong to that knowledge base. The blast radius is narrower than it first appears: the attacker needs to already be a collaborator who can see the victim's shared knowledge base to learn its non-enumerable UUIDs, and the impact is data availability, not disclosure — deleted documents silently drop out of RAG retrieval and chat-with-file breaks, but nothing is exposed and an owner can restore state by re-adding files. With an EPSS score of 0.00213, no public exploit or Nuclei template, no CISA KEV listing, and a CISA SSVC decision of TRACK, this is not an urgent, actively-exploited threat, but the failure mode — silent, unauthorized removal of RAG source documents — is exactly the kind of integrity gap that erodes trust in retrieval results without an obvious alarm. Teams running open-webui with shared knowledge bases (workspace.knowledge enabled) should upgrade to 0.11.0 or later; in the interim, audit who holds write/collaborator access to shared knowledge bases and treat unexplained drops in document count or chat-with-file failures as a signal to investigate.
Is CVE-2026-70488 actively exploited?
No confirmed active exploitation of CVE-2026-70488 has been reported, but organizations should still patch proactively.
How to fix CVE-2026-70488?
Upgrade open-webui to 0.11.0 or later, which scopes both request-body loops (directory deletion and per-file vector cleanup) to the knowledge base named in the URL. Until patched: minimize the number of users with write access or collaborator grants on shared knowledge bases, and avoid sharing knowledge bases beyond their owner where not operationally necessary (recall workspace.knowledge is off by default — confirm it's still disabled if you don't need shared KBs). Detection: monitor for calls to `/api/v1/knowledge/{id}/sync/cleanup` where the directory_id/file_id parameters in the request body reference objects outside the URL's knowledge base, and watch for unexpected drops in document counts or chat-with-file failures reported by knowledge base owners, which would indicate the vulnerability was already exploited pre-patch.
What systems are affected by CVE-2026-70488?
This vulnerability affects the following AI/ML architecture patterns: RAG pipelines, vector databases, knowledge management / document stores.
What is the CVSS score for CVE-2026-70488?
CVE-2026-70488 has a CVSS v3.1 base score of 4.3 (MEDIUM). The EPSS exploitation probability is 0.37%.
What is the AI security impact?
Affected AI Architectures
Compliance Controls Affected
What are the technical details?
Original Advisory
## Summary A user with write access to one knowledge base could delete directories, and drop file embeddings, belonging to knowledge bases they do not control. The sync cleanup endpoint verified write access on the knowledge base named in the URL and then acted on the directory and file ids supplied in the request body without checking that those objects belonged to that knowledge base. ## Preconditions Default configuration, no flags involved. The attacker needs write access to at least one knowledge base, which comes from owning one, from a write access grant, or from the admin role; `workspace.knowledge` is off by default, so an ordinary user cannot simply create one. They also need the victim's directory or file id, which are UUIDs and are not enumerable, so in practice the attacker is someone who can already see the target knowledge base, typically a read-only collaborator on a shared one. Deployments where no knowledge base is shared beyond its owner are not reachable. ## Impact The attacker deletes a target directory and, because the deletion runs without moving files to the parent, the knowledge_file associations for every file in that subtree are removed as well, so those documents silently drop out of the victim's knowledge base and out of its retrieval results. Separately, the per-file vector cleanup dropped the standalone `file-<id>` collection for any file id, breaking chat-with-file for that document. The stored files and their database rows survive, since that path was gated on file ownership, and an owner can restore the state by re-adding and reprocessing. Nothing about the target knowledge base's contents is disclosed to the attacker. ## Fix Fixed in https://github.com/open-webui/open-webui/pull/26722. Both request-body loops are now scoped to the knowledge base in the URL: a directory is resolved and skipped unless its `knowledge_id` matches, and the per-file vector cleanup runs only for files that are members of that knowledge base. Upgrading fully resolves the issue. ## Root cause Affected component: `backend/open_webui/routers/knowledge.py`, handler `sync_knowledge_cleanup`, endpoint `POST /api/v1/knowledge/{id}/sync/cleanup`. Affected setup: all builds from 0.9.6 onward, no optional dependency involved. The handler treated the write-access check on the URL knowledge base as authorization for everything it went on to do, but the objects it acted on came from the request body and were addressed by primary key alone. Directory deletion at the model layer deletes by directory id and has no notion of a parent knowledge base, so the only thing that could have bound the two together was a membership check in the handler, and there was none. The explicit directory-delete endpoint in the same router already carried that check, which is what makes this a gap in one handler rather than a missing model-layer control. ## Credits Reported by @whyiug.
Exploitation Scenario
An attacker is granted write or read access to a shared knowledge base as a legitimate collaborator (or owns a separate knowledge base of their own). While using the shared KB, they observe or infer the directory and file UUIDs used by the victim's knowledge base. The attacker then sends a `POST /api/v1/knowledge/{their-own-kb-id}/sync/cleanup` request, but populates the request body's directory_ids/file_ids with the victim's IDs instead of their own. Because the handler only validates write access against the knowledge base ID in the URL — not against the ownership of the IDs in the body — the victim's directory and its `knowledge_file` associations are deleted, and any targeted file's standalone vector collection is dropped, silently removing those documents from the victim's RAG retrieval results and breaking chat-with-file for the affected documents, without any visible confirmation to the victim until they notice missing content.
Weaknesses (CWE)
CWE-639 Authorization Bypass Through User-Controlled Key
Primary
CWE-863 Incorrect Authorization
Primary
CWE-639 Authorization Bypass Through User-Controlled Key CWE-863 Incorrect Authorization CWE-639 — Authorization Bypass Through User-Controlled Key: The system's authorization functionality does not prevent one user from gaining access to another user's data or record by modifying the key value identifying the data.
- [Architecture and Design] For each and every data access, ensure that the user has sufficient privilege to access the record that is being requested.
- [Architecture and Design, Implementation] Make sure that the key that is used in the lookup of a specific user's record is not controllable externally by the user or that any tampering can be detected.
Source: MITRE CWE corpus.
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N 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