Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconCompromise admin account
-
DeliveryAuthenticate to Open WebUI
-
ExploitNavigate to banner settings
-
InstallInject markdown XSS payload
-
C2Save malicious banner
-
ExecuteWait for Super Admin login
-
ImpactVictim views banner on dashboard
-
Step 8Victim clicks crafted link
-
Step 9JavaScript executes in victim context
-
Step 10Session token exfiltrated
-
Step 11Attacker gains Super Admin access
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Attack requires administrator-level privileges (PR:H in CVSS vector) to create or modify global banners via Settings > Interface > UI > Banners menu. This means attacker must have already compromised an existing admin account through credential theft, session hijacking, or insider access. Privilege escalation occurs when a higher-privileged user (specifically the Super Admin or Primary Admin) views the malicious banner and clicks the crafted link (UI:R-user interaction required). The vulnerability affects default Open WebUI configurations where banner feature is enabled and markdown rendering is active. Exploitation is limited by: (1) Need for pre-existing admin compromise; (2) Requirement for victim admin to actively click banner link rather than passive exploitation; (3) Victim must have an active session with stored token in localStorage. Attack does NOT work against unauthenticated users or non-admin roles who cannot create banners. Social engineering effectiveness depends on banner content plausibility-generic 'click here' links may raise suspicion, but banners mimicking legitimate security updates or system notifications increase click probability. |
| Impact | CVSS 8.1 (High) reflects significant impact (C:H/I:H scope change) but contextual constraints reduce immediate urgency. Attack vector is Network (AV:N) but requires High privileges (PR:H-admin account compromise) and User interaction (UI:R-victim must click banner link). The Scope change (S:C) correctly models privilege escalation from lower admin to Super Admin. No EPSS score or CISA KEV listing indicates limited observed exploitation; POC is public but requires pre-existing admin access, limiting attacker population. Real-world risk depends on admin account security posture: if MFA protects admin login and insider threat risk is low, this is lower priority despite high CVSS. However, for environments with shared admin credentials, SSO-only authentication, or elevated insider threat, this becomes critical-session hijacking bypasses MFA for already-authenticated users. SSVC assessment: Exploitation=POC (public steps), Automatable=No (requires social engineering to trigger click), Technical Impact=Total (full Super Admin session compromise). Prioritize patch if admin accounts are high-value targets or compromised credentials are plausible. Note discrepancy: CVSS suggests network exploitation but practical attack requires internal admin account access first-verify threat model alignment. |
| Exploit ScenarioDerived | An attacker compromises a lower-privileged administrator account (e.g., via phishing, credential reuse, or session hijacking). They authenticate to Open WebUI, navigate to Settings > Interface > UI > Banners, and create a banner with markdown payload |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – May 14, 2026
Stored XSS in Open WebUI Banner component enables privilege escalation from compromised admin to Super Admin. A malicious administrator can inject markdown-based JavaScript payloads (e.g., [text](javascript:...)) that bypass DOMPurify sanitization due to incorrect sanitizer-parser execution order in Banner.svelte:103. When the Super Admin views the global banner and clicks the crafted link, their session token is exfiltrated to the attacker. Vendor-released patch available in v0.8.0 (2026-02-12) reversing sanitization order to DOMPurify.sanitize(marked.parse(...)). CVSS 8.1 (High) with Network vector, Low complexity, but requires High privileges (admin) and User interaction (click). No KEV listing or EPSS data available; publicly disclosed POC with detailed reproduction steps.
RemediationAI
Upgrade to Open WebUI v0.8.0 or later immediately (released 2026-02-12), available at https://github.com/open-webui/open-webui/releases/tag/v0.8.0. Version 0.8.0 fixes the vulnerability by reversing sanitization order to DOMPurify.sanitize(marked.parse(...)) in Banner.svelte:103, ensuring markdown is parsed to HTML before dangerous elements/attributes are stripped. WARNING: v0.8.0 includes database schema migrations requiring downtime-backup database before upgrading and avoid rolling updates in multi-server deployments per release notes. If immediate upgrade is not feasible, implement compensating controls: (1) Disable global banner feature entirely via application config or UI if business impact is acceptable; (2) Audit all existing banners for javascript:, data:, and vbscript: URL schemes and remove suspicious content; (3) Restrict banner modification permissions to only the Primary Admin account via role-based access control, eliminating lateral privilege escalation vector (trade-off: does not prevent compromised Primary Admin from self-attack); (4) Deploy Content Security Policy header default-src 'self'; script-src 'self' to block inline JavaScript execution from javascript: URLs (trade-off: may break legitimate application features relying on inline scripts). Monitor admin access logs for unauthorized banner modifications during interim period.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in npm
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Open WebUI is a web-based UI for LLM interactions, built with Svelte framework and distributed as an npm package. The vulnerability resides in the Banner component (src/lib/components/common/Banner.svelte:103) which renders administrator-configured global banners visible to all users. The root cause is an incorrect sanitization pipeline: {@html marked.parse(DOMPurify.sanitize(...))}. DOMPurify (an HTML sanitizer) executes first on raw markdown text, where [Link](javascript:alert()) appears benign (plain text, not HTML). The unsanitized markdown then passes to marked.parse() which converts it into HTML <a href="javascript:alert()">Link</a>. This dangerous HTML is rendered via Svelte's {@html} directive without further checks. Per CWE-79 (Improper Neutralization of Input During Web Page Generation), the flaw is exacerbated by processing order-sanitization must occur after markup parsing, not before. The affected package is pkg:npm/open-webui versions <= 0.7.2.
Know when the next one hits your stack
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:H/UI:R/S:C/C:H/I:H/A:N
Primary rating from GitHub Advisory · only source for this CVE.
CVSS VectorGitHub Advisory
DescriptionGitHub Advisory
Summary
A Stored Cross-Site Scripting (XSS) vulnerability exists in the Banner component due to an improper sanitization order (specifically, DOMPurify is executed before the marked library).
This vulnerability allows a compromised or malicious administrator to plant a malicious payload in the global banner. Crucially, this vector enables Privilege Escalation, as the malicious banner is rendered for all users, including the Super Admin (Primary Admin).
Consequently, the payload successfully bypasses the existing security mechanism. An attacker can leverage this to steal the Super Admin's session token
Details
Root Cause: The code attempts to sanitize the input using DOMPurify.sanitize() before parsing it with marked.parse().
DOMPurify cleans the raw input. Since [Link](javascript:alert(javascript:alert(localStorage.token))) is valid text (not HTML), it passes through DOMPurify unchanged. marked handles the text and converts it into a clickable HTML link: <a href="javascript:alert(javascript:alert(localStorage.token))">Link</a>. This resulting unsafe HTML is rendered directly via {@html ...} without further checks.
src/lib/components/common/Banner.svelte (Line 103)
{@html marked.parse(DOMPurify.sanitize((banner?.content ?? '').replace(/\n/g, '<br>')))}POC
- Attacker Action: Log in as a compromised Admin account and navigate to Settings > Interface > UI > Banners.
- Injection: Add a new banner and enter the following payload in the content field. This payload creates a link that alerts the user's session token when clicked.
[Click for Security Update](javascript:alert(localStorage.token))- Execution: Click Save. The malicious banner is now stored and active.
- Victim Action (Privilege Escalation): The Primary Admin logs in and sees the banner on the main dashboard. Believing it to be a system notification, they click the link.
Victim Dashboard View:
<img width="880" height="245" alt="image" src="https://github.com/user-attachments/assets/b70d7f65-ab34-4634-9e78-2a8a7eda1439" />
- Result: The JavaScript executes immediately within the Primary Admin's session, exposing their full-access token.
Impact
Extend permissions and damage to the entire system. You need administrator privileges to create banners, but this vulnerability is important because it can attack primary administrators and other administrators.
Destination: Other Administrators /Primary Administrators. Attack Vector: Corrupting all administrator accounts (even those with limited scope if future granular privileges exist or simply credentials are compromised) could allow an attacker to set traps for the default administrator. The result: Unlike self-XSS or simple administrator configuration changes, this allows you to capture active sessions for the most privileged users and bypass authentication controls such as MFA (because the session is already active).
Recommended Patch
Modify src/lib/components/common/Banner.svelte (Line 103):
{@html DOMPurify.sanitize(marked.parse((banner?.content ?? '').replace(/\n/g, '<br>')))}Resolution
Fixed in v0.8.0. src/lib/components/common/Banner.svelte:103 now applies the sanitization in the correct order: DOMPurify.sanitize(marked.parse(...)). marked.parse runs first and converts [text](javascript:...) markdown into the corresponding HTML link element; DOMPurify.sanitize then strips the javascript: URL and any other dangerous attributes/elements before the result reaches {@html ...}.
Users on >= 0.8.0 are not affected.
Executive ViewAI
Open WebUI versions prior to 0.8.0 contain a stored cross-site scripting vulnerability in the Banner component that allows compromised administrators to escalate privileges to Super Admin by injecting malicious markdown payloads. When a Super Admin views and interacts with the crafted banner, their session credentials are compromised, creating a critical path for lateral privilege escalation within the application. Organizations using Open WebUI should prioritize immediate patching to prevent admin-to-superadmin account takeover.
Vendor-released patch: v0.8.0 (2026-02-12). If immediate patching is not feasible, restrict administrative access to banner management to a minimal set of trusted accounts, disable user interaction with global banner displays, and monitor Super Admin session activity for unauthorized token exfiltration. These mitigations reduce but do not eliminate exploitation risk.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.
EUVD-2026-30664
GHSA-cqp4-qqvg-3787
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB