CVE-2026-44563: Open WebUI's Ollama Model Access Control Bypass via /api/generate, /api/embed, /api/embeddings, and /api/show
Ollama Model Access Control Bypass via /api/generate, /api/embed, /api/embeddings, and /api/show Affected Component Ollama proxy endpoints missing model access control: - backend/openwebui/routers/ollama.py (lines 955-995, generatecompletion) - backend/openwebui/routers/ollama.py (lines 835-881, embed) - backend/openwebui/routers/ollama.py (lines 891-937, embeddings) - backend/openwebui/routers/ollama.py (lines…
Published May 8, 2026 · Updated May 15, 2026
Affected packages
open-webui
- Ecosystem
- PyPI
- Affected
- <= 0.8.12
- Fixed in
- 0.9.0
- Check
pip show open-webui
Advisory details
From the GitHub Advisory Database (CC BY 4.0).
Ollama Model Access Control Bypass via /api/generate, /api/embed, /api/embeddings, and /api/show
Affected Component
Ollama proxy endpoints missing model access control:
backend/open_webui/routers/ollama.py(lines 955-995,generate_completion)backend/open_webui/routers/ollama.py(lines 835-881,embed)backend/open_webui/routers/ollama.py(lines 891-937,embeddings)backend/open_webui/routers/ollama.py(lines 791-820,show_model_info)
Affected Versions
Current main branch (commit 6fdd19bf1) and likely all versions with Ollama model access control support.
Description
Four Ollama proxy endpoints accept any model name from the user and forward the request to the Ollama backend without checking whether the user is authorized to access that model. These endpoints only require get_verified_user (any authenticated non-pending user) and validate that the model exists in the full unfiltered model list, but never check AccessGrants.has_access().
This is in direct contrast with the /ollama/api/chat endpoint (line 1101-1122) which correctly validates model access grants and returns 403 for unauthorized users:
# /api/chat (line 1101-1122) — CORRECTLY checks access
if not bypass_filter and user.role == 'user':
user_group_ids = {group.id for group in Groups.get_groups_by_member_id(user.id)}
if not (
user.id == model_info.user_id
or AccessGrants.has_access(
user_id=user.id, resource_type='model',
resource_id=model_info.id, permission='read',
user_group_ids=user_group_ids,
)
):
raise HTTPException(status_code=403, detail='Model not found')
# /api/generate (line 955-995) — NO access check at all
# /api/embed (line 835-881) — NO access check at all
# /api/embeddings (line 891-937) — NO access check at all
# /api/show (line 791-820) — NO access check at allCVSS 3.1 Breakdown
| Metric | Value | Rationale | | Attack Vector | Network (N) | Exploited remotely via API calls | | Attack Complexity | Low (L) | Single API call with a known model name | | Privileges Required | Low (L) | Requires any authenticated user account | | User Interaction | None (N) | No victim interaction required | | Scope | Unchanged (U) | Impact within the Ollama model access boundary | | Confidentiality | Low (L) | `/api/show` exposes restricted model details including system prompts and parameters | | Integrity | None (N) | No data modification | | Availability | Low (L) | Unauthorized consumption of GPU/compute resources on restricted models |
Attack Scenario
- Admin configures model access control, restricting
llama3:70bto the "ML Engineers" group. Regular user Alice is only authorized forllama3:8b. - Alice knows the restricted model name (model names are predictable —
llama3:70b,mistral:latest, etc.). - Alice calls the unprotected endpoints directly: ```bash # Run completions on restricted model curl -X POST /ollama/api/generate \ -H "Authorization: Bearer " \ -d '{"model": "llama3:70b", "prompt": "..."}'
View restricted model details and system prompt
curl -X POST /ollama/api/show \ -H "Authorization: Bearer " \ -d '{"model": "llama3:70b"}'
Generate embeddings with restricted model
curl -X POST /ollama/api/embed \ -H "Authorization: Bearer " \ -d '{"model": "llama3:70b", "input": "..."}'
4. All requests succeed and are proxied to Ollama without any access control check.
## Impact
- Model access control is silently ineffective for four out of five Ollama proxy endpoints
- Unauthorized users can consume GPU/compute resources on restricted models (cost and capacity impact in multi-user deployments)
- `/api/show` exposes restricted model configurations including system prompts, parameters, templates, and license information
- Admins have a false sense of security — access restrictions appear to work via the main chat interface but are trivially bypassed via direct API calls
## Preconditions
- Ollama must be configured as a backend
- Admin must have configured model access control (not using `BYPASS_MODEL_ACCESS_CONTROL=true`)
- Attacker must know the restricted model name (model names follow predictable conventions)Credited to Classic298.
References
How this page is made: the data panel comes from the GitHub Advisory Database, CISA’s KEV catalog, the NVD and FIRST EPSS, and updates twice a day. No analysis has been written for this entry yet. Methodology
More Open WebUI vulnerabilities
All Open WebUI entriesCVE-2026-87011
Open WebUI: Unauthenticated requests can stall the server via uncached OIDC fetches in back-channel logout
high7.5Sep 10, 2026CVE-2026-87012
Open WebUI: Any authenticated user can suppress calendar alerts instance-wide via a non-numeric alert value
medium4.3Sep 10, 2026CVE-2026-87013
Open WebUI: Any authenticated user can start a non-terminating request via a folder parent cycle
medium4.3Sep 10, 2026CVE-2026-87014
Open WebUI: Admin demoted through SSO role sync keeps read and write access to all users' notes
medium6.5Sep 10, 2026CVE-2026-87015
Open WebUI: A user's session cookies are sent to tool servers configured for bearer authentication
medium6.8Sep 10, 2026CVE-2026-87016
Open WebUI: Sign-in as another user via wildcard characters in the OAuth subject claim on SQLite
high8.1Sep 10, 2026
