<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://vulnerability.circl.lu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-10-01T14:55:31.908769+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@circl.lu</email>
  </author>
  <link href="https://vulnerability.circl.lu" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/fkie_cve-2026-59220</id>
    <title>fkie_cve-2026-59220</title>
    <updated>2026-10-01T14:55:31.971028+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>Open WebUI is an extensible, feature-rich, and user-friendly self-hosted AI platform. From 0.9.2 before 0.10.0, the SKILL_MENTION_RE and strip_re regular expressions in backend/open_webui/utils/middleware.py parsed &lt;$skillId|label&gt; skill mentions with overlapping quantifiers, allowing an authenticated chat message containing &lt;$ without a closing &gt; to trigger quadratic backtracking and block the asyncio event loop. This issue is fixed in version 0.10.0.</p>
      </div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/fkie_cve-2026-59220"/>
  </entry>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/ghsa-ffpj-xv5c-p3gw</id>
    <title>GHSA-ffpj-xv5c-p3gw — Open WebUI: ReDoS in skill-mention regexes causes whole-instance DoS on default config</title>
    <updated>2026-10-01T14:55:31.971358+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> PyPI: open-webui</p>
<p>## Summary
Two regexes in `backend/open_webui/utils/middleware.py` that parse `&lt;$skillId|label&gt;` skill-mention tags backtrack in O(n²) on input that contains `&lt;$` followed by a long run with no closing `&gt;`. Both run synchronously, on the asyncio event loop, on **every** chat completion with no feature gate. Because the default deployment is a single uvicorn worker, one such input pins a CPU core inside `re` and freezes the entire instance for all users until the worker is killed. Any authenticated user can trigger it with one chat message; it also fires accidentally on benign retrieved content (a RAG chunk or tool output) containing the pattern.</p>
<p>## Affected versions
`&gt;= 0.9.2, &lt; 0.10.0`. Fixed in **v0.10.0** (there is no 0.9.7 release).
- `SKILL_MENTION_RE` (the extract pattern) has been O(n²) since **v0.9.2**; exploitable on 0.9.2–0.9.5 with a large input (hundreds of KB).
- **v0.9.6** added a second, far more aggressive O(n²) in the strip pattern (introduced by the "keep label as readable text" change), so on 0.9.6 a small input is enough to hang the instance.</p>
<p>Both are fixed by the same patch.</p>
<p>## Affected component
`backend/open_webui/utils/middleware.py` (line numbers as of v0.9.6):</p>
<p>```python
# line 2223 — used by extract_skill_ids_from_messages(), called unconditionally (~line 2625)
SKILL_MENTION_RE = re.compile(r'&lt;\$([^|&gt;]+)\|?[^&gt;]*&gt;')</p>
<p># line 2247 — used by strip_skill_mentions(), called unconditionally (line 2662)
strip_re = re.compile(r'&lt;\$[^|&gt;]+\|?([^&gt;]*)&gt;')
```…</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/ghsa-ffpj-xv5c-p3gw"/>
  </entry>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/pysec-2026-3596</id>
    <title>PYSEC-2026-3596 — Open WebUI: ReDoS in skill-mention regexes causes whole-instance DoS on default config</title>
    <updated>2026-10-01T14:55:31.971561+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> PyPI: open-webui</p>
<p>## Summary
Two regexes in `backend/open_webui/utils/middleware.py` that parse `&lt;$skillId|label&gt;` skill-mention tags backtrack in O(n²) on input that contains `&lt;$` followed by a long run with no closing `&gt;`. Both run synchronously, on the asyncio event loop, on **every** chat completion with no feature gate. Because the default deployment is a single uvicorn worker, one such input pins a CPU core inside `re` and freezes the entire instance for all users until the worker is killed. Any authenticated user can trigger it with one chat message; it also fires accidentally on benign retrieved content (a RAG chunk or tool output) containing the pattern.</p>
<p>## Affected versions
`&gt;= 0.9.2, &lt; 0.10.0`. Fixed in **v0.10.0** (there is no 0.9.7 release).
- `SKILL_MENTION_RE` (the extract pattern) has been O(n²) since **v0.9.2**; exploitable on 0.9.2–0.9.5 with a large input (hundreds of KB).
- **v0.9.6** added a second, far more aggressive O(n²) in the strip pattern (introduced by the "keep label as readable text" change), so on 0.9.6 a small input is enough to hang the instance.</p>
<p>Both are fixed by the same patch.</p>
<p>## Affected component
`backend/open_webui/utils/middleware.py` (line numbers as of v0.9.6):</p>
<p>```python
# line 2223 — used by extract_skill_ids_from_messages(), called unconditionally (~line 2625)
SKILL_MENTION_RE = re.compile(r'&lt;\$([^|&gt;]+)\|?[^&gt;]*&gt;')</p>
<p># line 2247 — used by strip_skill_mentions(), called unconditionally (line 2662)
strip_re = re.compile(r'&lt;\$[^|&gt;]+\|?([^&gt;]*)&gt;')
```…</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/pysec-2026-3596"/>
  </entry>
</feed>
