<?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, 25 Oct 2026 10:30:13 +0000</lastBuildDate>
    <item>
      <title>CVE-2025-64495 — Open WebUI vulnerable to Stored DOM XSS via prompts when 'Insert Prompt as Rich Text' is enabled resulting in ATO/RCE</title>
      <link>https://cve.radiocsirt.org/vuln/cve-2025-64495</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. In versions 0.6.34 and below, the functionality that inserts custom prompts into the chat window is vulnerable to DOM XSS when &amp;#39;Insert Prompt as Rich Text&amp;#39; is enabled, since the prompt body is assigned to the DOM sink .innerHtml without sanitisation. Any user with permissions to create prompts can abuse this to plant a payload that could be triggered by other users if they run the corresponding / command to insert the prompt. This issue is fixed in version 0.6.35.&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. In versions 0.6.34 and below, the functionality that inserts custom prompts into the chat window is vulnerable to DOM XSS when &amp;#39;Insert Prompt as Rich Text&amp;#39; is enabled, since the prompt body is assigned to the DOM sink .innerHtml without sanitisation. Any user with permissions to create prompts can abuse this to plant a payload that could be triggered by other users if they run the corresponding / command to insert the prompt. This issue is fixed in version 0.6.35.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/cve-2025-64495</guid>
    </item>
    <item>
      <title>PYSEC-2026-1741 — Open WebUI vulnerable to Stored DOM XSS via prompts when 'Insert Prompt as Rich Text' is enabled resulting in ATO/RCE</title>
      <link>https://cve.radiocsirt.org/vuln/pysec-2026-1741</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 functionality that inserts custom prompts into the chat window is vulnerable to DOM XSS when &amp;#39;Insert Prompt as Rich Text&amp;#39; is enabled, since the prompt body is assigned to the DOM sink `.innerHtml` without sanitisation. Any user with permissions to create prompts can abuse this to plant a payload that could be triggered by other users if they run the corresponding `/` command to insert the prompt.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;The affected line is https://github.com/open-webui/open-webui/blob/7a83e7dfa367d19f762ec17cac5e4a94ea2bd97d/src/lib/components/common/RichTextInput.svelte#L348&lt;/p&gt;
&lt;p&gt;```js
	export const replaceCommandWithText = async (text) =&amp;gt; {
		const { state, dispatch } = editor.view;
		const { selection } = state;
		const pos = selection.from;&lt;/p&gt;
&lt;p&gt;// Get the plain text of this document
		// const docText = state.doc.textBetween(0, state.doc.content.size, &amp;#39;\n&amp;#39;, &amp;#39;\n&amp;#39;);&lt;/p&gt;
&lt;p&gt;// Find the word boundaries at cursor
		const { start, end } = getWordBoundsAtPos(state.doc, pos);&lt;/p&gt;
&lt;p&gt;let tr = state.tr;&lt;/p&gt;
&lt;p&gt;if (insertPromptAsRichText) {
			const htmlContent = marked
				.parse(text, {
					breaks: true,
					gfm: true
				})
				.trim();&lt;/p&gt;
&lt;p&gt;// Create a temporary div to parse HTML
			const tempDiv = document.createElement(&amp;#39;div&amp;#39;);
			tempDiv.innerHTML = htmlContent;                                          // &amp;lt;---- vulnerable
```&lt;/p&gt;
&lt;p&gt;User controlled HTML from the prompt body is assigned to `tempDiv.innerHTML` without (meaningful) sanitisation. `marked.parse` introduces some character limita…&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 functionality that inserts custom prompts into the chat window is vulnerable to DOM XSS when &amp;#39;Insert Prompt as Rich Text&amp;#39; is enabled, since the prompt body is assigned to the DOM sink `.innerHtml` without sanitisation. Any user with permissions to create prompts can abuse this to plant a payload that could be triggered by other users if they run the corresponding `/` command to insert the prompt.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;The affected line is https://github.com/open-webui/open-webui/blob/7a83e7dfa367d19f762ec17cac5e4a94ea2bd97d/src/lib/components/common/RichTextInput.svelte#L348&lt;/p&gt;
&lt;p&gt;```js
	export const replaceCommandWithText = async (text) =&amp;gt; {
		const { state, dispatch } = editor.view;
		const { selection } = state;
		const pos = selection.from;&lt;/p&gt;
&lt;p&gt;// Get the plain text of this document
		// const docText = state.doc.textBetween(0, state.doc.content.size, &amp;#39;\n&amp;#39;, &amp;#39;\n&amp;#39;);&lt;/p&gt;
&lt;p&gt;// Find the word boundaries at cursor
		const { start, end } = getWordBoundsAtPos(state.doc, pos);&lt;/p&gt;
&lt;p&gt;let tr = state.tr;&lt;/p&gt;
&lt;p&gt;if (insertPromptAsRichText) {
			const htmlContent = marked
				.parse(text, {
					breaks: true,
					gfm: true
				})
				.trim();&lt;/p&gt;
&lt;p&gt;// Create a temporary div to parse HTML
			const tempDiv = document.createElement(&amp;#39;div&amp;#39;);
			tempDiv.innerHTML = htmlContent;                                          // &amp;lt;---- vulnerable
```&lt;/p&gt;
&lt;p&gt;User controlled HTML from the prompt body is assigned to `tempDiv.innerHTML` without (meaningful) sanitisation. `marked.parse` introduces some character limita…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/pysec-2026-1741</guid>
    </item>
  </channel>
</rss>
