Skip to main content

Open WebUI CVE-2026-44549

HIGH
Cross-site Scripting (XSS) (CWE-79)
2026-05-08 https://github.com/open-webui/open-webui GHSA-jwf8-pv5p-vhmc
7.3
CVSS 3.1 · GitHub Advisory
Share

Severity by source

GitHub Advisory PRIMARY
7.3 HIGH
AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:N
vuln.today AI
7.3 HIGH

Network-delivered stored XSS needing a low-priv authenticated uploader (PR:L) and victim preview interaction (UI:R); token theft and admin-RCE chaining justify C:H/I:H, no availability impact.

3.1 AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:A/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N

Primary rating from GitHub Advisory.

CVSS VectorGitHub Advisory

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
Required
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
None

Lifecycle Timeline

3
Source Code Evidence Fetched
Jul 24, 2026 - 00:26 vuln.today
Analysis Generated
Jul 24, 2026 - 00:26 vuln.today
CVE Published
May 08, 2026 - 22:26 nvd
HIGH 7.3

DescriptionGitHub Advisory

Summary

Excel file attachments are previewed in an unsafe way. A crafted XLSX file payload can be used to cause the sheetjs function sheet_to_html to embed an XSS payload into the generated HTML. This is subsequently added to the DOM unsanitized via @html causing the payload to trigger.

Details

The function used to convert XLSX documents to HTML for preview does not perform any input validation or sanitisation for the generated HTML https://github.com/open-webui/open-webui/blob/a7271532f8a38da46785afcaa7e65f9a45e7d753/src/lib/components/common/FileItemModal.svelte#L120-L133 XLSX attachments are processed by this function, converted to HTML with XLSX.utils.sheet_to_html before ultimately being assigned to the variable excelHtml. Later there is logic that causes this to be assigned directly to the DOM when the preview tab is selected. https://github.com/open-webui/open-webui/blob/a7271532f8a38da46785afcaa7e65f9a45e7d753/src/lib/components/common/FileItemModal.svelte#L358-L400

PoC

A python script to generate a payload file is as follows:

python
import xlsxwriter

payload = '<img src=x onerror="alert(\'XSS Triggered by XLSX file\')">'

workbook = xlsxwriter.Workbook('xss_payload.xlsx')
worksheet = workbook.add_worksheet()

payload_format = workbook.add_format()

worksheet.write_rich_string('A1',
    'This cell contains a hidden payload: ',
    payload_format, payload
)

worksheet.write('A2', 'This is a safe cell.')
worksheet.write('B1', 'Column B')

workbook.close()

Upload the generated file as an attachment to a chat, open the file modal, and click preview. Observe the XSS triggers. <img width="2444" height="1386" alt="image" src="https://github.com/user-attachments/assets/8400efb0-ea6f-4878-abdb-4c2fe529241f" /> This same process can be triggered in shared chats, allowing the payload to be distributed to victims. <img width="2386" height="1646" alt="image" src="https://github.com/user-attachments/assets/d0eda49c-8fcf-4fc4-bbb0-c8951b0369c3" />

Impact

Any user can create a weaponised chat that can be shared and subsequently used to target other users.

Low privilege users are at risk of having their session taken over by a payload that reads their token from local storage and exfiltrates it to an attacker controlled server.

Admins are at risk of exposing the server to RCE via same chain described in GHSA-w7xj-8fx7-wfch.

Caveats

The file attachment in the shared chat must be opened and previewed to trigger the vulnerability.

Recommendation

Sanitise the generated HTML with DOMPurify before assigning it to the DOM.

AnalysisAI

Stored cross-site scripting in Open WebUI (pip package open-webui, versions ≤ 0.7.2) lets a low-privileged user weaponize a crafted XLSX attachment so that when another user opens and previews it, attacker-controlled markup executes in the victim's browser. The flaw stems from the Excel-to-HTML preview path, which converts spreadsheet cells to HTML and injects the result into the DOM without sanitization. Publicly available exploit code exists (PoC in the advisory); EPSS is very low (0.03%) and it is not on CISA KEV, so exploitation is possible but not observed at scale.

Technical ContextAI

Open WebUI is a Svelte-based front end for self-hosted LLM interfaces. Its FileItemModal component uses the SheetJS library's XLSX.utils.sheet_to_html() to render Excel attachments as an HTML preview. SheetJS's sheet_to_html emits cell contents into an HTML table without HTML-encoding, so markup embedded in a cell (e.g., via a rich-string) survives into the generated string. Open WebUI then binds that string to the DOM using Svelte's {@html} directive, which performs no escaping by design. This is a classic CWE-79 (Improper Neutralization of Input During Web Page Generation) stored/persistent XSS: untrusted file content flows through a rendering sink that trusts it as markup.

RemediationAI

Vendor-released patch: upgrade to Open WebUI 0.8.0, which is the first fixed release (versions ≤ 0.7.2 are vulnerable). The upstream recommendation is to sanitize the generated preview HTML with DOMPurify before assigning it to the DOM, which is incorporated in the fix. If you cannot upgrade immediately, compensating controls include disabling or restricting the Excel/XLSX file-preview feature in FileItemModal so untrusted spreadsheets are never rendered via {@html} (trade-off: users lose in-app spreadsheet previews), and tightening chat-sharing so untrusted or low-privilege users cannot distribute attachments to others (trade-off: reduced collaboration). A restrictive Content-Security-Policy that blocks inline script and constrains outbound connections can reduce token-exfiltration impact but will not fully stop DOM-based XSS such as img/onerror handlers. See the advisory at https://github.com/open-webui/open-webui/security/advisories/GHSA-jwf8-pv5p-vhmc for authoritative guidance.

More in Python

View all
CVE-2025-24016 CRITICAL POC
9.9 Feb 10

Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t

CVE-2025-27520 CRITICAL POC
9.8 Apr 04

BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser

CVE-2025-2945 CRITICAL POC
9.9 Apr 03

pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi

CVE-2013-5093 MEDIUM POC
6.8 Sep 27

The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python

CVE-2025-32375 CRITICAL POC
9.8 Apr 09

BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica

CVE-2014-0224 HIGH POC
7.4 Jun 05

OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph

CVE-2024-21644 HIGH POC
7.5 Jan 08

pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.

CVE-2026-33017 CRITICAL POC
9.3 Mar 17

Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301

CVE-2017-9462 HIGH POC
8.8 Jun 06

In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse

CVE-2026-49869 CRITICAL POC
10.0 Jun 26

Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to

CVE-2026-39987 CRITICAL POC
9.3 Apr 08

Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/

CVE-2024-21645 MEDIUM POC
5.3 Jan 08

pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne

Share

CVE-2026-44549 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy