CVE-2026-70484: open-webui: image-gen permission bypass in chat API

GHSA-g423-grf7-98rv MEDIUM
Published August 4, 2026
CISO Take

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.

Sources: NVD GitHub Advisory EPSS CISA KEV ATLAS

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?

Initial Access
Attacker holds a valid, authenticated open-webui account with the image_generation permission explicitly revoked by an administrator.
AML.T0012
Authorization Bypass
Attacker sends a chat-completion request with `params.function_calling=legacy` and `features.image_generation=true`; the chat middleware trusts the client-supplied flag without re-checking the caller's actual permission.
AML.T0053
Impact
The server dispatches to the image-generation (and, if applicable, image-edit) handler, consuming the operator's provider credits/quota and writing generated files to operator storage on the attacker's behalf.
AML.T0034

What systems are affected?

Package Ecosystem Vulnerable Range Patched
Open WebUI pip >= 0.7.0, < 0.11.0 0.11.0
153.3K 3 dependents Pushed 6d ago 83% patched ~5d to patch Full package profile →

Do you use Open WebUI? You're affected.

How severe is it?

CVSS 3.1
4.3 / 10
EPSS
0.4%
chance of exploitation in 30 days
Higher than 33% of all CVEs
Exploitation Status
No known exploitation
Sophistication
Trivial

What is the attack surface?

AV AC PR UI S C I A
AV Network
AC Low
PR Low
UI None
S Unchanged
C None
I None
A Low

What should I do?

1 step
  1. 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 does CISA's SSVC say?

Decision Track
Exploitation none
Automatable No
Technical Impact partial

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:

NIST AI RMF
MANAGE-4 - AI system risks and benefits are monitored post-deployment
OWASP LLM Top 10
LLM07 - Insecure Plugin Design LLM08 - Excessive Agency

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

LLM chat interfacesAI gateways/proxiesmulti-tenant AI platformsimage generation pipelines

MITRE ATLAS Techniques

AML.T0034 Cost Harvesting
AML.T0053 AI Agent Tool Invocation

Compliance Controls Affected

NIST AI RMF: MANAGE-4
OWASP LLM Top 10: LLM07, LLM08

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: 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

Timeline

Published
August 4, 2026
Last Modified
August 5, 2026
First Seen
August 4, 2026

Related Vulnerabilities