{"schemaVersion":3,"id":"CVE-2026-54013","aliases":["GHSA-v2qm-5wxj-qhj7","PYSEC-2026-2757"],"status":"published","duplicateOf":null,"title":null,"description":"Open WebUI is a self-hosted artificial intelligence platform designed to operate entirely offline. Prior to 0.9.6, Open WebUI patched SVG XSS in user profile images and webhook profile images but forgot to apply the same fix to model profile images. The ModelMeta class has no validate_profile_image_url field validator, and the model image serving endpoint has no MIME allowlist or nosniff header. Any authenticated user with workspace.models permission (enabled by default) can store a data:image/svg+xml;base64,... payload in a model's profile image and achieve full account takeover of anyone who navigates to the image URL. This vulnerability is fixed in 0.9.6.","dates":{"published":"2026-06-23T16:46:28.075Z","modified":"2026-06-26T19:25:23.173Z","reserved":null,"kevAdded":[],"kevDue":[]},"cvss":{"headline":{"score":7.6,"severity":"high","version":"3.1","versionLabel":"v3.1","source":"CVE.org","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:L/A:N","computed":false,"selection":"backend-summary"},"metrics":[{"version":"3.1","versionLabel":"v3.1","source":"CVE.org","score":7.6,"severity":"high","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:L/A:N","exploitability":null,"impact":null,"computed":false},{"version":"3.1","versionLabel":"v3.1","source":"OSV · Pypi","score":7.6,"severity":"high","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:L/A:N","exploitability":5.9,"impact":7.8,"computed":true},{"version":"3.1","versionLabel":"v3.1","source":"NVD","score":7.6,"severity":"high","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:L/A:N","exploitability":null,"impact":null,"computed":false}]},"epss":{"probability":0.003,"percentile":0.21534,"severity":"low","asOf":"2026-10-21T00:00:00.000Z","change":{"pp":0,"baselineDate":"2026-09-21T00:00:00.000Z","baselineScore":0.003},"history":[{"date":"2026-09-14T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-09-15T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-09-16T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-09-17T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-09-18T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-09-19T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-09-20T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-09-21T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-09-22T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-09-23T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-09-24T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-09-25T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-20T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-21T00:00:00.000Z","score":0.003,"percentile":0.21534}],"last30":[{"date":"2026-09-21T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-09-22T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-09-23T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-09-24T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-09-25T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-20T00:00:00.000Z","score":0.003,"percentile":null},{"date":"2026-10-21T00:00:00.000Z","score":0.003,"percentile":0.21534}]},"kev":{"state":"not-listed","entries":[],"listedCount":0,"totalCatalogs":3,"catalogs":[{"source":"cisa","label":"CISA","listed":false,"entry":null},{"source":"enisa","label":"ENISA","listed":false,"entry":null},{"source":"circl","label":"CIRCL","listed":false,"entry":null}]},"ransomware":{"state":"none-recorded","sources":[]},"exploits":[{"id":"GITHUB_OPEN-WEBUI_OPEN-WEBUI","name":"Open Webui","source":"github","url":"https://github.com/open-webui/open-webui/security/advisories/GHSA-8gh5-qqh8-hq3x","maturity":"poc","reliabilityScore":0.3,"verified":false,"type":null,"platforms":[],"requiresAuth":null,"exploitdb":null,"metasploit":null}],"exploitCount":1,"weaknesses":[{"id":"CWE-79","name":"Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')","description":"The product does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users.","type":"weakness","status":"Stable","abstraction":"Base","likelihoodOfExploit":"High","url":"https://cwe.mitre.org/data/definitions/79.html"},{"id":"CWE-116","name":"Improper Encoding or Escaping of Output","description":"The product prepares a structured message for communication with another component, but encoding or escaping of the data is either missing or done incorrectly. As a result, the intended structure of the message is not preserved.","type":"weakness","status":"Draft","abstraction":"Class","likelihoodOfExploit":"High","url":"https://cwe.mitre.org/data/definitions/116.html"},{"id":"CWE-693","name":"Protection Mechanism Failure","description":"The product does not use or incorrectly uses a protection mechanism that provides sufficient defense against directed attacks against the product.","type":"weakness","status":"Draft","abstraction":"Pillar","likelihoodOfExploit":null,"url":"https://cwe.mitre.org/data/definitions/693.html"}],"affected":[{"vendor":"open-webui","product":"open-webui","name":"open-webui","label":"open-webui","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"< 0.9.6","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 0.9.6","eol":null,"hubHref":"/vendor/open-webui/open-webui"},{"vendor":"openwebui","product":"open_webui","name":"open webui","label":"open_webui","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"< 0.9.6","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 0.9.6","eol":null,"hubHref":"/vendor/openwebui/open_webui"},{"vendor":"PyPI","product":"open-webui","name":"open-webui","label":"open-webui","ecosystem":"PyPI","cpePart":null,"purl":"pkg:pypi/open-webui","purlType":"pypi","versions":[{"text":"< 0.9.6","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 0.9.6","eol":null,"hubHref":null}],"affectedCount":3,"eol":{"hasEol":false,"count":0},"references":[{"url":"https://github.com/open-webui/open-webui/security/advisories/GHSA-v2qm-5wxj-qhj7","label":"github.com/open-webui/open-webui/security/advisories/GHSA-v2qm-5wxj-qhj7","hostname":"github.com","tags":["X Refsource CONFIRM","WEB","Exploit","Mitigation","Vendor Advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-54013","label":"nvd.nist.gov/vuln/detail/CVE-2026-54013","hostname":"nvd.nist.gov","tags":["Advisory"]},{"url":"https://github.com/advisories/GHSA-v2qm-5wxj-qhj7","label":"github.com/advisories/GHSA-v2qm-5wxj-qhj7","hostname":"github.com","tags":["Advisory"]},{"url":"https://github.com/open-webui/open-webui","label":"github.com/open-webui/open-webui","hostname":"github.com","tags":["PACKAGE"]},{"url":"https://github.com/pypa/advisory-database/tree/main/vulns/open-webui/PYSEC-2026-2757.yaml","label":"github.com/pypa/advisory-database/tree/main/vulns/open-webui/PYSEC-2026-2757.yaml","hostname":"github.com","tags":["WEB"]},{"url":"https://pypi.org/project/open-webui","label":"pypi.org/project/open-webui","hostname":"pypi.org","tags":["WEB","PACKAGE"]}],"lineage":{"upstream":[],"downstream":[],"duplicates":[],"related":[]},"timeline":[{"kind":"published","date":"2026-06-23T16:46:28.075Z","label":"Published","detail":"Vulnerability first disclosed.","source":null},{"kind":"modified","date":"2026-06-26T19:25:23.173Z","label":"Last modified","detail":"Vulnerability information updated.","source":null}],"risk":{"score":40,"level":"medium","profile":"Default","thresholds":{"critical":75,"high":50,"medium":25,"low":10}},"meta":{"dataAsOf":"2026-10-21T20:39:58.045Z","stale":false,"partial":false}}