<?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>Sun, 18 Oct 2026 17:22:13 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-59214 — Open WebUI: Stored web worker XSS via Pyodide</title>
      <link>https://cve.radiocsirt.org/vuln/cve-2026-59214</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; open-webui&lt;/p&gt;
&lt;p&gt;Open WebUI is an extensible, feature-rich, and user-friendly self-hosted AI platform. Prior to 0.10.0, Open WebUI runs client-side Python with Pyodide in a same-origin web worker, allowing stored chat payloads that use pyodide.http.pyfetch or the js module fetch and XMLHttpRequest APIs to issue authenticated same-origin requests when a victim clicks Run, which can reach admin-only endpoints and execute server-side code through configured tools. This issue is fixed in version 0.10.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 an extensible, feature-rich, and user-friendly self-hosted AI platform. Prior to 0.10.0, Open WebUI runs client-side Python with Pyodide in a same-origin web worker, allowing stored chat payloads that use pyodide.http.pyfetch or the js module fetch and XMLHttpRequest APIs to issue authenticated same-origin requests when a victim clicks Run, which can reach admin-only endpoints and execute server-side code through configured tools. This issue is fixed in version 0.10.0.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/cve-2026-59214</guid>
    </item>
    <item>
      <title>PYSEC-2026-3590 — Open WebUI: Stored web worker XSS via Pyodide</title>
      <link>https://cve.radiocsirt.org/vuln/pysec-2026-3590</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: open-webui&lt;/p&gt;
&lt;p&gt;**Title:** Same-origin Pyodide code execution allows server-side RCE via a shared chat&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;Open WebUI runs client-side Python (Pyodide) in a same-origin web worker. Through Pyodide&amp;#39;s JavaScript API (`pyodide.http.pyfetch`, or the `js` module which exposes the page&amp;#39;s `fetch` / `XMLHttpRequest`) executed Python can issue requests on the application origin, and those requests carry the victim&amp;#39;s session cookie. A low-privileged user can store such a payload in a chat message, share the chat, and when a victim opens it and clicks **Run** the payload executes authenticated same-origin requests as the victim. When the victim is an admin (or a user holding `workspace.functions` / `workspace.tools` permissions) the payload creates a Function/Tool whose body runs server-side, yielding **remote code execution**.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;Pyodide&amp;#39;s `js` bridge gives Python in the worker the same reach as inline JavaScript on the origin, and the worker is same-origin, so a credentialed request to the app&amp;#39;s own API is authenticated as the victim. No separate XSS sink is required: storing the payload in a shared chat and having the victim run it is enough.&lt;/p&gt;
&lt;p&gt;```python
from pyodide.http import pyfetch
import json
await pyfetch(&amp;#39;/api/v1/functions/create&amp;#39;, method=&amp;#39;POST&amp;#39;, credentials=&amp;#39;include&amp;#39;,
              headers={&amp;#39;Content-Type&amp;#39;: &amp;#39;application/json&amp;#39;},
              body=json.dumps({&amp;#39;id&amp;#39;: &amp;#39;x&amp;#39;, &amp;#39;name&amp;#39;: &amp;#39;x&amp;#39;, &amp;#39;meta&amp;#39;: {&amp;#39;description&amp;#39;: &amp;#39;x&amp;#39;},
                               &amp;#39;content&amp;#39;: &amp;#34;import os; os.sys…&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;**Title:** Same-origin Pyodide code execution allows server-side RCE via a shared chat&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;Open WebUI runs client-side Python (Pyodide) in a same-origin web worker. Through Pyodide&amp;#39;s JavaScript API (`pyodide.http.pyfetch`, or the `js` module which exposes the page&amp;#39;s `fetch` / `XMLHttpRequest`) executed Python can issue requests on the application origin, and those requests carry the victim&amp;#39;s session cookie. A low-privileged user can store such a payload in a chat message, share the chat, and when a victim opens it and clicks **Run** the payload executes authenticated same-origin requests as the victim. When the victim is an admin (or a user holding `workspace.functions` / `workspace.tools` permissions) the payload creates a Function/Tool whose body runs server-side, yielding **remote code execution**.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;Pyodide&amp;#39;s `js` bridge gives Python in the worker the same reach as inline JavaScript on the origin, and the worker is same-origin, so a credentialed request to the app&amp;#39;s own API is authenticated as the victim. No separate XSS sink is required: storing the payload in a shared chat and having the victim run it is enough.&lt;/p&gt;
&lt;p&gt;```python
from pyodide.http import pyfetch
import json
await pyfetch(&amp;#39;/api/v1/functions/create&amp;#39;, method=&amp;#39;POST&amp;#39;, credentials=&amp;#39;include&amp;#39;,
              headers={&amp;#39;Content-Type&amp;#39;: &amp;#39;application/json&amp;#39;},
              body=json.dumps({&amp;#39;id&amp;#39;: &amp;#39;x&amp;#39;, &amp;#39;name&amp;#39;: &amp;#39;x&amp;#39;, &amp;#39;meta&amp;#39;: {&amp;#39;description&amp;#39;: &amp;#39;x&amp;#39;},
                               &amp;#39;content&amp;#39;: &amp;#34;import os; os.sys…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/pysec-2026-3590</guid>
    </item>
  </channel>
</rss>
