CVE-2026-59220: Open WebUI: ReDoS in skill mentions blocks event loop
GHSA-ffpj-xv5c-p3gw MEDIUM PoC AVAILABLE CISA: TRACK*Open WebUI's skill-mention parser uses regular expressions with overlapping quantifiers that can be forced into catastrophic backtracking: an authenticated user simply sends a chat message containing an unclosed "<$" skill tag, and the single asyncio event loop that serves the entire self-hosted instance freezes for every user, session, and API call until the request times out or the process is restarted. This matters for AI platform operators because Open WebUI is a widely deployed self-hosted LLM front end, and the flaw needs nothing more than a standard authenticated account (PR:L, no admin rights, no victim interaction) to knock a whole deployment offline — a classic low-skill availability hit rather than a data-loss issue (CVSS 6.5, C:N/I:N/A:H). Exploitation likelihood is currently low: EPSS sits at 0.295% (79th percentile), there is no CISA KEV listing, no public PoC, and no Nuclei template, so this is not an active-exploitation emergency — but the trivial trigger (any logged-in user, one crafted message) makes it an easy DoS lever for a disgruntled insider or a compromised low-privilege account. Upgrade to Open WebUI 0.10.0, which fixes the SKILL_MENTION_RE and strip_re patterns in backend/open_webui/utils/middleware.py; until patched, filter or rate-limit chat payloads containing unclosed "<$" sequences and watch for event-loop latency spikes correlated with chat submissions.
What is the risk?
Despite a moderate CVSS score (6.5), real-world risk is currently low: no CISA KEV listing, no public exploit code, no Nuclei template, and an EPSS score in the 79th percentile (not the highest-priority tier). What elevates operational concern above the raw score is the trivial exploitation bar — any authenticated, low-privileged user (PR:L, no UI needed from a victim) can trigger it with a single crafted chat message, no AI/ML expertise required (sophistication: trivial). Because Open WebUI typically runs a shared asyncio event loop per worker, the blast radius is the entire instance, not just the attacker's session, which is unusual for a 'medium' severity finding. The package itself carries 130 other recorded CVEs, suggesting an actively scrutinized but historically vulnerability-prone codebase — patch cadence matters here.
How does the attack unfold?
What systems are affected?
| Package | Ecosystem | Vulnerable Range | Patched |
|---|---|---|---|
| Open WebUI | pip | >= 0.9.2, < 0.10.0 | 0.10.0 |
Do you use Open WebUI? You're affected.
How severe is it?
What is the attack surface?
What should I do?
1 step-
1) Patch to Open WebUI 0.10.0 immediately — this fixes both the SKILL_MENTION_RE and strip_re patterns in backend/open_webui/utils/middleware.py. 2) If immediate patching isn't possible, add a reverse-proxy/WAF rule to flag or reject chat payloads containing an unclosed "<$" sequence, and cap maximum chat message length. 3) Detection: monitor event-loop lag / response-latency metrics for spikes correlated with chat message submissions, and audit access logs for repeated "<$" patterns in message bodies. 4) As a structural mitigation (not a fix), run multiple worker processes/replicas behind a load balancer so one stalled event loop doesn't take down the entire service. 5) Restrict access to trusted/vetted accounts on instances where a single-user DoS is unacceptable.
What does CISA's SSVC say?
Source: CISA Vulnrichment (SSVC v2.0). Decision based on the CISA Coordinator decision tree.
How is it classified?
Which compliance frameworks are affected?
This CVE is relevant to:
Frequently Asked Questions
What is CVE-2026-59220?
Open WebUI's skill-mention parser uses regular expressions with overlapping quantifiers that can be forced into catastrophic backtracking: an authenticated user simply sends a chat message containing an unclosed "<$" skill tag, and the single asyncio event loop that serves the entire self-hosted instance freezes for every user, session, and API call until the request times out or the process is restarted. This matters for AI platform operators because Open WebUI is a widely deployed self-hosted LLM front end, and the flaw needs nothing more than a standard authenticated account (PR:L, no admin rights, no victim interaction) to knock a whole deployment offline — a classic low-skill availability hit rather than a data-loss issue (CVSS 6.5, C:N/I:N/A:H). Exploitation likelihood is currently low: EPSS sits at 0.295% (79th percentile), there is no CISA KEV listing, no public PoC, and no Nuclei template, so this is not an active-exploitation emergency — but the trivial trigger (any logged-in user, one crafted message) makes it an easy DoS lever for a disgruntled insider or a compromised low-privilege account. Upgrade to Open WebUI 0.10.0, which fixes the SKILL_MENTION_RE and strip_re patterns in backend/open_webui/utils/middleware.py; until patched, filter or rate-limit chat payloads containing unclosed "<$" sequences and watch for event-loop latency spikes correlated with chat submissions.
Is CVE-2026-59220 actively exploited?
Proof-of-concept exploit code is publicly available for CVE-2026-59220, increasing the risk of exploitation.
How to fix CVE-2026-59220?
1) Patch to Open WebUI 0.10.0 immediately — this fixes both the SKILL_MENTION_RE and strip_re patterns in backend/open_webui/utils/middleware.py. 2) If immediate patching isn't possible, add a reverse-proxy/WAF rule to flag or reject chat payloads containing an unclosed "<$" sequence, and cap maximum chat message length. 3) Detection: monitor event-loop lag / response-latency metrics for spikes correlated with chat message submissions, and audit access logs for repeated "<$" patterns in message bodies. 4) As a structural mitigation (not a fix), run multiple worker processes/replicas behind a load balancer so one stalled event loop doesn't take down the entire service. 5) Restrict access to trusted/vetted accounts on instances where a single-user DoS is unacceptable.
What systems are affected by CVE-2026-59220?
This vulnerability affects the following AI/ML architecture patterns: Self-hosted LLM chat UI / front-end, Model serving / inference gateway, Multi-user AI platforms.
What is the CVSS score for CVE-2026-59220?
CVE-2026-59220 has a CVSS v3.1 base score of 6.5 (MEDIUM). The EPSS exploitation probability is 0.57%.
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0029 Denial of AI Service AML.T0049 Exploit Public-Facing Application Compliance Controls Affected
What are the technical details?
Original Advisory
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 <$skillId|label> skill mentions with overlapping quantifiers, allowing an authenticated chat message containing <$ without a closing > to trigger quadratic backtracking and block the asyncio event loop. This issue is fixed in version 0.10.0.
Exploitation Scenario
An authenticated but low-privileged user of a shared Open WebUI instance — for example a standard employee account, or one compromised via credential stuffing since MFA isn't enforced by default in many deployments — opens a chat session and sends a message containing "<$" followed by a long run of non-matching characters with no closing ">". The middleware attempts to match this against SKILL_MENTION_RE, triggering quadratic/catastrophic backtracking that pegs CPU on the request-handling coroutine. Because this runs inside the shared asyncio event loop, every other coroutine — other users' chat completions, RAG queries, background API calls — stalls behind it, effectively taking the entire self-hosted AI platform offline until the request times out or an operator restarts the process. The attacker can repeat the payload across new sessions to sustain the outage indefinitely.
Weaknesses (CWE)
CWE-1333 Inefficient Regular Expression Complexity
Primary
CWE-1333 Inefficient Regular Expression Complexity CWE-1333 — Inefficient Regular Expression Complexity: The product uses a regular expression with a worst-case computational complexity that is inefficient and possibly exponential.
- [Architecture and Design] Use regular expressions that do not support backtracking, e.g. by removing nested quantifiers.
- [System Configuration] Set backtracking limits in the configuration of the regular expression implementation, such as PHP's pcre.backtrack_limit. Also consider limits on execution time for the process.
Source: MITRE CWE corpus.
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H References
- github.com/open-webui/open-webui/commit/61a26722155ec6ee1b629cf8dfcf975098c18331 x_refsource_MISC
- github.com/open-webui/open-webui/releases/tag/v0.10.0 x_refsource_MISC
- github.com/open-webui/open-webui/security/advisories/GHSA-ffpj-xv5c-p3gw x_refsource_CONFIRM
- github.com/advisories/GHSA-ffpj-xv5c-p3gw
- nvd.nist.gov/vuln/detail/CVE-2026-59220
Timeline
Related Vulnerabilities
CVE-2026-44551 9.1 open-webui: LDAP auth bypass — full account takeover
Same package: open-webui CVE-2026-45672 8.8 open-webui: code exec gate bypass via API endpoint
Same package: open-webui CVE-2025-64495 8.7 Open WebUI: XSS-to-RCE via malicious prompt injection
Same package: open-webui CVE-2026-44552 8.7 open-webui: Redis cache poisoning enables cross-instance tool hijack
Same package: open-webui CVE-2026-45315 8.7 open-webui: stored XSS → JWT theft and admin takeover
Same package: open-webui