A missing authorization check in open-webui's legacy chat-completions pipeline lets a user whose image-generation permission was explicitly revoked still trigger image generation, by sending the feature flag directly in the request payload and forcing legacy function-calling mode. The impact is contained to unauthorized resource consumption — the operator's configured image provider credits, quota, and storage — with no credential exposure and no access to other users' data, which keeps CVSS at a modest 4.3 (medium). Exploitation likelihood is low: EPSS sits at 0.267% (top 81st percentile, not top-tier), there's no CISA KEV listing, no public exploit or Nuclei template, and CISA's SSVC decision is TRACK rather than Act. It only affects deployments where an admin has enabled image generation and deliberately revoked the permission for specific users while running legacy (not native) function calling. Upgrade to open-webui 0.11.0, or as an interim workaround switch affected deployments to native function calling, which already enforces the permission before registering image tools; audit recent image-generation logs for spend from users who shouldn't have access.
What is the risk?
Medium risk overall. The flaw is trivially exploitable by anyone who already holds a valid, authenticated account — no special skill or tooling required, just knowledge of the legacy `params.function_calling=legacy` parameter and the `features.image_generation` flag. What limits severity is scope: it's a privilege-escalation-of-capability issue, not a data-exposure or system-compromise issue (no confidentiality/integrity impact, low availability impact via resource consumption only). It requires an admin to have both enabled image generation (off by default) and explicitly revoked the permission for the exploiting user, which narrows the affected population. No active exploitation signals (KEV, exploit code, scanner templates) and a below-median EPSS score support a TRACK rather than urgent-patch posture, but the fix is low-effort and should be applied on the next maintenance window.
How does the attack unfold?
What systems are affected?
| Package | Ecosystem | Vulnerable Range | Patched |
|---|---|---|---|
| Open WebUI | pip | >= 0.7.0, < 0.11.0 | 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-
1) Upgrade open-webui to 0.11.0 or later, which re-checks
features.image_generationagainst caller permissions before invoking the image handler on the legacy chat path. 2) If immediate upgrade isn't possible, switch affected deployments to native function calling (params.function_calling!=legacy), which already enforces the permission at tool-registration time. 3) AuditENABLE_IMAGE_GENERATIONdeployments for per-user permission overrides and review recent image-generation/edit activity logs for spend attributable to users with revoked permissions. 4) Monitor provider (e.g., image API) billing/usage anomalies as a detection signal for this and similar tool-dispatch bypasses.
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-70484?
A missing authorization check in open-webui's legacy chat-completions pipeline lets a user whose image-generation permission was explicitly revoked still trigger image generation, by sending the feature flag directly in the request payload and forcing legacy function-calling mode. The impact is contained to unauthorized resource consumption — the operator's configured image provider credits, quota, and storage — with no credential exposure and no access to other users' data, which keeps CVSS at a modest 4.3 (medium). Exploitation likelihood is low: EPSS sits at 0.267% (top 81st percentile, not top-tier), there's no CISA KEV listing, no public exploit or Nuclei template, and CISA's SSVC decision is TRACK rather than Act. It only affects deployments where an admin has enabled image generation and deliberately revoked the permission for specific users while running legacy (not native) function calling. Upgrade to open-webui 0.11.0, or as an interim workaround switch affected deployments to native function calling, which already enforces the permission before registering image tools; audit recent image-generation logs for spend from users who shouldn't have access.
Is CVE-2026-70484 actively exploited?
No confirmed active exploitation of CVE-2026-70484 has been reported, but organizations should still patch proactively.
How to fix CVE-2026-70484?
1) Upgrade open-webui to 0.11.0 or later, which re-checks `features.image_generation` against caller permissions before invoking the image handler on the legacy chat path. 2) If immediate upgrade isn't possible, switch affected deployments to native function calling (`params.function_calling` != `legacy`), which already enforces the permission at tool-registration time. 3) Audit `ENABLE_IMAGE_GENERATION` deployments for per-user permission overrides and review recent image-generation/edit activity logs for spend attributable to users with revoked permissions. 4) Monitor provider (e.g., image API) billing/usage anomalies as a detection signal for this and similar tool-dispatch bypasses.
What systems are affected by CVE-2026-70484?
This vulnerability affects the following AI/ML architecture patterns: LLM chat interfaces, AI gateways/proxies, multi-tenant AI platforms, image generation pipelines.
What is the CVSS score for CVE-2026-70484?
CVE-2026-70484 has a CVSS v3.1 base score of 4.3 (MEDIUM). The EPSS exploitation probability is 0.41%.
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0034 Cost Harvesting AML.T0053 AI Agent Tool Invocation Compliance Controls Affected
What are the technical details?
Original Advisory
## Summary An authenticated user whose `features.image_generation` permission has been revoked can still make the server generate images by sending the feature flag in a chat-completion request. The chat pipeline took the client-supplied `features` object at face value and never re-checked the permission that the direct image routes enforce, so the denial applied to the UI affordance but not to the server-side generation path. ## Preconditions Image generation must be enabled and a provider configured by the administrator (`ENABLE_IMAGE_GENERATION` is off by default). The per-user permission defaults to granted, so only deployments where an administrator explicitly revoked it for some users are affected. On 0.10.0 and later the caller must also set `params.function_calling` to `legacy`; on 0.9.x and earlier the legacy mode was the default, so no special parameter was needed. Deployments on native function calling are unaffected, since that path checks the permission before registering the image tools. ## Impact A user the administrator has explicitly denied image generation can consume the operator's configured provider through the chat API, spending the operator's API credits and provider quota and writing generated files to the operator's storage. Where an image is present in the conversation and image editing is enabled, the same handler reaches the image-edit provider as well. No provider credentials are exposed, and no other user's data is reachable. ## Fix Fixed in 897d69a (#26703). The legacy chat-features block now re-checks `features.image_generation` against the caller's permissions before invoking the image handler, matching the check the direct image routes and the native function-calling path already performed. ## Root cause The chat-completions endpoint stored the request's `features` object into request metadata, and `process_chat_payload` in the chat middleware dispatched to the image handler purely on the truthiness of that client-supplied flag. Permission enforcement lived on the two surfaces that were reached from the UI, the direct `/images/generations` and `/images/edit` routes and the native function-calling tool registration, and was simply absent on the legacy chat path. The flag was treated as a statement of user intent, which it is, rather than as an authorization decision, which the handler behind it made it. ## Credits @DavidCarliez, for identifying that the chat pipeline honours the client-supplied image-generation feature flag without re-checking the permission.
Exploitation Scenario
An organization runs open-webui with image generation enabled and has revoked the image_generation permission for a subset of users (e.g., to control API spend). One of those users, still holding a valid authenticated session, sends a normal chat-completion request but adds `params.function_calling: "legacy"` and `features.image_generation: true` to the payload. The chat middleware's `process_chat_payload` trusts the client-supplied `features` flag as authorization, dispatches to the image handler, and the operator's configured image provider generates the image — billed to the operator's account and written to operator storage — without the UI ever surfacing the (denied) image-generation option to that user.
Weaknesses (CWE)
CWE-862 Missing Authorization
Primary
CWE-863 Incorrect Authorization
Primary
CWE-862 Missing Authorization CWE-863 Incorrect Authorization CWE-862 — Missing Authorization: The product does not perform an authorization check when an actor attempts to access a resource or perform an action.
- [Architecture and Design] Divide the product into anonymous, normal, privileged, and administrative areas. Reduce the attack surface by carefully mapping roles with data and functionality. Use role-based access control (RBAC) [REF-229] to enforce the roles at the appropriate boundaries. Note that this approach may not protect against horizontal authorization, i.e., it will not protect a user from attacking others with the same role.
- [Architecture and Design] Ensure that access control checks are performed related to the business logic. These checks may be different than the access control checks that are applied to more generic resources such as files, connections, processes, memory, and database records. For example, a database may restrict access for medical records to a specific database user, but each record might only be intended to be accessible to the patient and the patient's doctor [REF-7].
Source: MITRE CWE corpus.
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L 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