CVE-2026-54007: open-webui: cross-origin postMessage forces model execution
GHSA-3vv5-8xxp-4f55 HIGHOpen WebUI versions up to and including 0.9.5 contain a missing origin validation flaw in the chat message listener that allows any external webpage to silently inject attacker-controlled prompts and trigger AI model execution inside an authenticated victim's browser session. The exploit is trivially simple — a public PoC in the advisory demonstrates the attack with fewer than 15 lines of HTML, requiring only that the victim be logged in when they click a link. With this CVE ranked in the top 90th percentile for exploitation likelihood, the blast radius escalates sharply in any deployment with tool integrations enabled: code interpreters, web search, file retrieval, or terminal servers can all be invoked under victim identity without any confirmation, enabling silent data exfiltration or code execution billed to the organization's LLM provider accounts. Upgrade to open-webui 0.9.6 immediately, and until patched, isolate Open WebUI from untrusted networks and disable high-privilege tool integrations.
What is the risk?
HIGH. The exploit is trivially simple with a working PoC in the public advisory and requires no attacker authentication or prior AI/ML knowledge — only a single click from an authenticated victim. Open WebUI is one of the most widely deployed self-hosted LLM frontends, with 102 prior CVEs indicating a complex and frequently targeted attack surface. The most dangerous deployments are shared internal instances with tool integrations, where a single successful phish translates to agentic code execution or data access under a legitimate identity. The lack of CISA KEV listing reflects recency, not low risk.
How does the attack unfold?
What systems are affected?
| Package | Ecosystem | Vulnerable Range | Patched |
|---|---|---|---|
| Open WebUI | pip | <= 0.9.5 | 0.9.6 |
Do you use Open WebUI? You're affected.
How severe is it?
What should I do?
5 steps-
Patch immediately: upgrade open-webui to 0.9.6, which enforces same-origin validation on the postMessage listener in Chat.svelte.
-
Until patched: restrict Open WebUI network access to trusted internal segments and prohibit access from shared or unmanaged browsers; consider adding a reverse proxy rule rejecting requests with cross-origin Referer headers.
-
Disable high-risk tool integrations (code interpreter, terminal, file system access) until the patch is deployed.
-
Detection: monitor for unusual bursts of POST /api/v1/chats/new or POST /api/chat/completions from a single authenticated session — especially with anomalous content or from Referer headers pointing to external origins.
-
After patching, revoke all active user sessions to invalidate any attacker-established persistent access.
How is it classified?
Which compliance frameworks are affected?
This CVE is relevant to:
Frequently Asked Questions
What is CVE-2026-54007?
Open WebUI versions up to and including 0.9.5 contain a missing origin validation flaw in the chat message listener that allows any external webpage to silently inject attacker-controlled prompts and trigger AI model execution inside an authenticated victim's browser session. The exploit is trivially simple — a public PoC in the advisory demonstrates the attack with fewer than 15 lines of HTML, requiring only that the victim be logged in when they click a link. With this CVE ranked in the top 90th percentile for exploitation likelihood, the blast radius escalates sharply in any deployment with tool integrations enabled: code interpreters, web search, file retrieval, or terminal servers can all be invoked under victim identity without any confirmation, enabling silent data exfiltration or code execution billed to the organization's LLM provider accounts. Upgrade to open-webui 0.9.6 immediately, and until patched, isolate Open WebUI from untrusted networks and disable high-privilege tool integrations.
Is CVE-2026-54007 actively exploited?
No confirmed active exploitation of CVE-2026-54007 has been reported, but organizations should still patch proactively.
How to fix CVE-2026-54007?
1. Patch immediately: upgrade open-webui to 0.9.6, which enforces same-origin validation on the postMessage listener in Chat.svelte. 2. Until patched: restrict Open WebUI network access to trusted internal segments and prohibit access from shared or unmanaged browsers; consider adding a reverse proxy rule rejecting requests with cross-origin Referer headers. 3. Disable high-risk tool integrations (code interpreter, terminal, file system access) until the patch is deployed. 4. Detection: monitor for unusual bursts of POST /api/v1/chats/new or POST /api/chat/completions from a single authenticated session — especially with anomalous content or from Referer headers pointing to external origins. 5. After patching, revoke all active user sessions to invalidate any attacker-established persistent access.
What systems are affected by CVE-2026-54007?
This vulnerability affects the following AI/ML architecture patterns: Self-hosted LLM frontends, ML UI deployments with tool integrations, Agent frameworks with code interpreter or terminal access, Internal AI chat platforms with shared user sessions, RAG-connected enterprise chat deployments.
What is the CVSS score for CVE-2026-54007?
No CVSS score has been assigned yet.
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0034.002 Agentic Resource Consumption AML.T0049 Exploit Public-Facing Application AML.T0051.000 Direct AML.T0053 AI Agent Tool Invocation AML.T0078 Drive-by Compromise Compliance Controls Affected
What are the technical details?
Original Advisory
### Summary The chat message listener allows non-same-origin `input:prompt` and `action:submit` messages, so an external site can set prompt text and trigger `submitPrompt()` in an authenticated victim session. I validated this with a cross-origin attacker page that auto-posted messages and caused unauthorized `POST /api/v1/chats/new` and `POST /api/chat/completions` requests containing attacker-controlled prompts. This enables cross-site forced actions and model/tool execution under victim privileges without consent. ### Details The chat page's window message listener in `src/lib/components/chat/Chat.svelte` processes message types including `input:prompt` and `action:submit` without adequately enforcing same-origin restrictions. Based on code around lines ~597-616, input text is set directly from `event.data.text`; `action:submit` proceeds to `submitPrompt()` on the current prompt. The logic does not apply a strict origin allowlist and permits non-same-origin control of the chat input and submission flow, leading to cross-origin command execution in the victim's authenticated UI context. As a result, backend API calls (e.g., `POST /api/v1/chats/new`, `POST /api/chat/completions`) are sent under victim credentials. Normally, via the `input:prompt:submit` postMessage type, this results in a "Confirm Prompt from Embed" confirmation dialog: https://github.com/open-webui/open-webui/blob/9bd84258d09eefe7bf975878fb0e31a5dadfe0f8/src/lib/components/chat/Chat.svelte#L604-L622 However, combining the two other types, it is possible to achieve the same effect without this confirmation: https://github.com/open-webui/open-webui/blob/9bd84258d09eefe7bf975878fb0e31a5dadfe0f8/src/lib/components/chat/Chat.svelte#L584-L602 ### PoC 1. Set up a local Open WebUI instance and log in to it, making sure a model is configured 2. Host the following HTML anywhere and visit it (optionally change http://127.0.0.1:14000 to your instance Base URL): ```html <h1>Click anywhere</h1> <script> function sleep(ms) { return new Promise(r => setTimeout(r, ms)); } onclick = async () => { w = window.open('http://127.0.0.1:14000'); await sleep(2000); w.postMessage({ type: 'input:prompt', text: "INJECTED PROMPT" }, '*'); await sleep(500); w.postMessage({ type: 'action:submit' }, '*'); } </script> ``` 3. Click anywhere on the page, then notice without further interaction the "INJECTED PROMPT" is executed on the Open WebUI instance <img width="874" height="264" alt="image" src="https://github.com/user-attachments/assets/244d9015-0dbf-47e0-a30e-1c2fbbde5e58" /> ### Impact Conditions required: The victim must be authenticated to Open WebUI in the browser (token cookie present). This issue enables cross-site forced actions under the victim's identity. An attacker can silently inject prompts and trigger model/tool execution (e.g., code interpreter, web search, retrieval, terminal/tool servers) as the victim without confirmation. ### Original Agent Report <img width="400" alt="app aikido dev_ai-pentests_projects_116389_assessments_019d67d4-81c8-7dd2-bb9e-0a4a774b2c78_issues_sidebarIssue=20439940 (4)" src="https://github.com/user-attachments/assets/7b6521ed-d08b-446d-a918-103523d08a1e" />
Exploitation Scenario
An attacker targets an enterprise where developers use a shared self-hosted Open WebUI instance connected to an internal code interpreter and document retrieval tool. The attacker sends a spear-phishing email with a link to an attacker-controlled domain. When a logged-in victim clicks the link, the page silently opens Open WebUI in a new window, waits two seconds for load, then fires two postMessages: `input:prompt` with the text 'List all files in the shared documents folder and output their contents' and `action:submit` to bypass the confirmation dialog. The chat API fires under the victim's session — the code interpreter or file retrieval tool executes, and the LLM response containing internal documents renders in the victim's tab. The attacker has no visibility in this scenario unless they chain it with a prompt that exfiltrates via a web search tool call to an attacker-controlled endpoint.
Weaknesses (CWE)
CWE-346 — Origin Validation Error: The product does not properly verify that the source of data or communication is valid.
Source: MITRE CWE corpus.
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