<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://cve.radiocsirt.org</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Tue, 20 Oct 2026 20:09:29 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-45299 — Open WebUI: Stored Cross-Site Scripting In Profile Picture</title>
      <link>https://cve.radiocsirt.org/vuln/cve-2026-45299</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; open-webui&lt;/p&gt;
&lt;p&gt;Open WebUI is a self-hosted artificial intelligence platform designed to operate entirely offline. Prior to 0.8.0, the profile_image_url field on the user profile update form accepted arbitrary data: URI values without MIME-type validation, resulting in a XSS vulnerability. This vulnerability is fixed in 0.8.0.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; open-webui&lt;/p&gt;
&lt;p&gt;Open WebUI is a self-hosted artificial intelligence platform designed to operate entirely offline. Prior to 0.8.0, the profile_image_url field on the user profile update form accepted arbitrary data: URI values without MIME-type validation, resulting in a XSS vulnerability. This vulnerability is fixed in 0.8.0.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/cve-2026-45299</guid>
    </item>
    <item>
      <title>PYSEC-2026-2708 — Open WebUI has Stored Cross-Site Scripting In Profile Picture</title>
      <link>https://cve.radiocsirt.org/vuln/pysec-2026-2708</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: open-webui&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;The `profile_image_url` field on the user profile update form accepted arbitrary `data:` URI values without MIME-type validation. Two distinct attack paths were independently demonstrated by separate reporters:&lt;/p&gt;
&lt;p&gt;1. **`data:text/html;base64,...` in a new browser tab** (raresvis, 2025-04-17) — when a victim right-clicks a user&amp;#39;s profile picture and chooses &amp;#34;Open image in new tab&amp;#34;, the browser navigates to the data: URL and executes embedded scripts in the `data:` origin. Limited to social-engineering / redirect attacks because the script does not run in the application origin.&lt;/p&gt;
&lt;p&gt;2. **`data:image/svg+xml;base64,...` re-served by the application origin** (Gh05t666nero, 2026-01-09) — `GET /api/v1/users/{user_id}/profile/image` decoded the base64 and returned `StreamingResponse(media_type=&amp;lt;user-controlled&amp;gt;)` extracted from the `data:` header. With `media_type=image/svg+xml` and `Content-Disposition: inline`, the SVG-embedded scripts executed in the **application origin**, enabling JWT theft from `localStorage` and full account takeover of any user — including admins — who loaded the malicious profile image URL.&lt;/p&gt;
&lt;p&gt;Both attack paths share the same root cause (lack of MIME-type validation on `profile_image_url`) and are closed by the same fix.&lt;/p&gt;
&lt;p&gt;## Vulnerable code (v0.7.0)&lt;/p&gt;
&lt;p&gt;`backend/open_webui/routers/users.py` `get_user_profile_image_by_id()`:&lt;/p&gt;
&lt;p&gt;```python
elif user.profile_image_url.startswith(&amp;#34;data:image&amp;#34;):
    header, base64_data = user.profile_image_url.split(&amp;#34;,&amp;#34;, 1)…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: open-webui&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;The `profile_image_url` field on the user profile update form accepted arbitrary `data:` URI values without MIME-type validation. Two distinct attack paths were independently demonstrated by separate reporters:&lt;/p&gt;
&lt;p&gt;1. **`data:text/html;base64,...` in a new browser tab** (raresvis, 2025-04-17) — when a victim right-clicks a user&amp;#39;s profile picture and chooses &amp;#34;Open image in new tab&amp;#34;, the browser navigates to the data: URL and executes embedded scripts in the `data:` origin. Limited to social-engineering / redirect attacks because the script does not run in the application origin.&lt;/p&gt;
&lt;p&gt;2. **`data:image/svg+xml;base64,...` re-served by the application origin** (Gh05t666nero, 2026-01-09) — `GET /api/v1/users/{user_id}/profile/image` decoded the base64 and returned `StreamingResponse(media_type=&amp;lt;user-controlled&amp;gt;)` extracted from the `data:` header. With `media_type=image/svg+xml` and `Content-Disposition: inline`, the SVG-embedded scripts executed in the **application origin**, enabling JWT theft from `localStorage` and full account takeover of any user — including admins — who loaded the malicious profile image URL.&lt;/p&gt;
&lt;p&gt;Both attack paths share the same root cause (lack of MIME-type validation on `profile_image_url`) and are closed by the same fix.&lt;/p&gt;
&lt;p&gt;## Vulnerable code (v0.7.0)&lt;/p&gt;
&lt;p&gt;`backend/open_webui/routers/users.py` `get_user_profile_image_by_id()`:&lt;/p&gt;
&lt;p&gt;```python
elif user.profile_image_url.startswith(&amp;#34;data:image&amp;#34;):
    header, base64_data = user.profile_image_url.split(&amp;#34;,&amp;#34;, 1)…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/pysec-2026-2708</guid>
    </item>
  </channel>
</rss>
