🛡️ CVE-2026-54021 — open-webui

🟡 CVSS 6.3 — Medium ✅ No Known Exploit CWE-863 OSV
6.3
CVSS Score
0 Low4 Medium7 High9 Critical10

Description

Open WebUI: Authenticated users can target arbitrary configured Ollama backends via unguarded url_idx path parameter

Summary

Several direct, index-addressed Ollama proxy routes accept a caller-supplied url_idx

path parameter and use it as a raw index into the admin-configured OLLAMA_BASE_URLS

list. Access control on these routes validates only whether the user may use the

requested *model*, never which *backend* the request is routed to. Any authenticated

user can append an arbitrary url_idx to force their request onto an Ollama backend

they were never authorized to reach, including internal, higher-privilege, or

explicitly admin-disabled backends.

Affected endpoints

All indexed Ollama routes that resolve the backend through get_ollama_url():

```

POST /ollama/api/chat/{url_idx}

POST /ollama/api/generate/{url_idx}

POST /ollama/api/embed/{url_idx}

POST /ollama/api/embeddings/{url_idx}

POST /ollama/v1/chat/completions/{url_idx}

POST /ollama/v1/completions/{url_idx}

POST /ollama/v1/messages/{url_idx}

POST /ollama/v1/responses/{url_idx}

```

Root cause

backend/open_webui/routers/ollama.pyget_ollama_url() consults the

model-to-backend allow-list (OLLAMA_MODELS[model]["urls"]) only when url_idx is

omitted. When the caller supplies url_idx, that mapping is skipped and the value is

used directly as an index:

```python

async def get_ollama_url(request: Request, model: str, url_idx: Optional[int] = None):

if url_idx is None:

models = request.app.state.OLLAMA_MODELS

if model not in models:

raise HTTPException(...)

url_idx = random.choice(models[model].get("urls", []))

url = request.app.state.config.OLLAMA_BASE_URLS[url_idx] # caller-controlled, no authz

return url, url_idx

```

The outbound request is then sent to that backend using the backend's own configured

API key. Backends an admin has disabled (OLLAMA_API_CONFIGS["<idx>"].enable = false)

are hidden from model discovery but remain reachable through the indexed route, because

the disabled state is never re-checked at request time.

Impact

A verified, non-admin user with read access to any single model can:

  • route requests to internal / higher-capability / restricted Ollama backends in

multi-backend deployments, bypassing backend-level isolation;

  • reach backends the admin has explicitly disabled;
  • have those requests authenticated with the target backend's configured API key

(the key is used server-side; it is not returned to the attacker);

  • consume the restricted backend's compute.

There is no cross-user data disclosure and no exfiltration of the backend credential

itself; the impact is unauthorized access to, and use of, restricted backend resources.

Affected / Patched

  • Affected: <= 0.9.5
  • Patched: >= 0.9.6

Fix

0.9.6 adds validate_ollama_backend_idx(), invoked on every indexed route (directly and

via get_ollama_url()), which returns 403 for any non-admin caller-supplied url_idx

that is not in the requested model's allowed urls. Because disabled backends are absent

from every model's urls, the same check also blocks routing to disabled backends.

How this vulnerability can be exploited

This issue can be reached over the network, attack complexity is low, an attacker needs low-level privileges on the target. No user interaction is required. The scope is unchanged, so the impact stays within the vulnerable component. Rated impact: confidentiality low, integrity low, availability low.

Weakness class

CVE-2026-54021 is classified as CWE-863: Incorrect Authorization. An authorisation check runs but reaches the wrong conclusion, permitting actions it should refuse.

Affected software

CVE-2026-54021 is recorded against 1 package.

  • open-webui (fixed in 0.9.6)

Timeline and source

Published on 17 June 2026 and last revised on 20 July 2026. No public exploit is currently recorded for this entry. Record sourced from OSV.

References

github.com (Web)
nvd.nist.gov (Advisory)
github.com (Advisory)
github.com (Package)
github.com (Web)
pypi.org (Web)

Details

Severity MEDIUM
CVSS Score 6.3
CVSS Vector CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L
CWE CWE-863
Public Exploit ✅ No
Source OSV
Published 2026-06-17
Updated 2026-08-12
Modified 2026-07-20
Fix URL N/A

Affected Packages

Software From version Fixed in
open-webui 0.9.6

Similar Threats

Vulnerability Monitoring

Track new vulnerabilities in open-webui

CVE-2026-54021 is rated CVSS 6.3 Medium. BotEraser monitors your WordPress installation and notifies you when software you use appears in our vulnerability database.

Set Up Free Alerts →

No credit card required  ·  Results in minutes

ⓘ Data Notice: The information presented above has been compiled from publicly available internet sources. Boteraser aggregates this data solely for informational purposes and does not independently classify, evaluate, or endorse any findings about the vulnerabilities listed. The accuracy and completeness of this information is the sole responsibility of the original publishers. Boteraser and its operators accept no liability for any decisions made based on this data.