GHSA-rffm-9q57-q649: Open WebUI: Client-side SSRF via unrestricted external resource loading in Vega/Vega-Lite chart rendering
Summary
Open WebUI renders vega and vega-lite fenced code blocks in chat content by building a Vega view in the viewer's browser without a restricted resource loader. Any user who can place such a block where another user will see it can make that user's browser issue attacker-chosen outbound GET requests, and read back responses from same-origin or CORS-permissive targets into the rendered page. Because the request comes from the browser, server-side SSRF protections never see it.
Preconditions
Default configuration, no flags or environment variables involved: Vega blocks render unconditionally wherever chat content is displayed. The attacker needs an account that can put content in front of the victim, which covers a shared chat, a channel message, and model, RAG or tool output the attacker can influence. The victim must open the message, so this is not zero-click. Deployments where the victim's browser has no network position of interest lose little.
Impact
The victim's browser becomes a request proxy into whatever it can reach: internal hosts and ports behind the perimeter, same-site endpoints, and out-of-band beacons that confirm a chart was viewed and by whom. Where the target is same-origin or returns permissive CORS headers, the response body is pulled back into the chart in the victim's page, which turns the request into a read. Requests are GET only, and no server-side data is exposed to the attacker directly.
Fix
Fixed in 5278eb906 (#26806), released in 0.11.0. The view is now constructed with a loader whose load always throws and whose sanitize resolves the URI with the browser's own URL parser and permits only data: and same-origin results, so charts can only use inline data.values. Upgrading is sufficient; no configuration change is needed.
Root cause
- src/lib/utils/index.ts — renderVegaVisualization
- src/lib/components/chat/Messages/CodeBlock.svelte — renders vega/vega-lite blocks
The renderer treated a chart spec as trusted authored content ra
Details
Original advisory: https://github.com/advisories/GHSA-rffm-9q57-q649
Referenced CVEs
| CVE | CSIRTS overview | External |
|---|---|---|
| CVE-2026-70480 | coverage & exploitation status | NVD · CVE.org |
More from GitHub Security Advisories
- lowGHSA-3vf6-64vr-3g56: Open WebUI: Any authenticated user can cancel another user's chat generation via the chat…2026-08-04
- highGHSA-rq84-p6rr-vf89: Open WebUI: Account takeover via OAuth token exchange accepting tokens issued to any clie…2026-08-04
- mediumGHSA-mj5r-jf49-m3w7: Open WebUI: Any member with write access to a standard channel can edit or delete other m…2026-08-04
- highGHSA-w2rx-84hp-gg95: Open WebUI: SSRF into internal services via unvalidated sub-resource requests in the Play…2026-08-04
- criticalGHSA-qgvm-j2hm-6m38: Flowise: Unauthenticated OAuth2 token refresh endpoint returns access tokens — enables to…2026-08-04