CVE-2026-70493: open-webui: ReDoS via knowledge search DoS

GHSA-2f54-p244-32q6 MEDIUM PoC AVAILABLE CISA: TRACK*
Published August 4, 2026
CISO Take

Open WebUI's built-in knowledge search tool lets the chat model choose the regex pattern used to grep uploaded knowledge files, and because pattern compilation used Python's unbounded backtracking `re` engine with no timeout, a short crafted pattern against a short matching line can pin a CPU core for minutes to hours while the synchronous search blocks the event loop for every other user on that worker. This requires no special privileges beyond an ordinary account and a single self-uploaded file, and works reliably by simply instructing the model to call the tool with the attacker's pattern — the only non-deterministic step is model compliance, which the researcher reports as reliable in practice. Blast radius is worker-wide: default single-worker (`UVICORN_WORKERS=1`) deployments go fully unresponsive per attack, and this affects a package with 4 tracked downstream dependents and a public PoC with exact timing data (30-character subject = 74 seconds, extrapolating to ~1 day at 40 characters). There's no confidentiality or integrity impact and it isn't in CISA KEV, but SSVC flags it TRACK_STAR and the fix is a straightforward upgrade to open-webui 0.11.0, which caps every knowledge search under a 2-second matching budget using the `regex` engine's built-in timeout — patch on the normal cycle rather than as an emergency.

Sources: NVD GitHub Advisory EPSS ATLAS CISA SSVC

What is the risk?

Medium severity (CVSS 6.5, AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H) — availability-only impact with low exploitation complexity but requiring an authenticated account. EPSS is low in absolute terms (0.3%) but percentile-ranked in the top 77% of all scored CVEs, and a working PoC with reproducible timing data is public, which meaningfully increases the odds of opportunistic exploitation by any registered user, including low-trust or trial accounts. The attack needs no elevated role or workspace permission — default configuration (`ENABLE_KB_EXEC=False`, `USER_PERMISSIONS_CHAT_FILE_UPLOAD=True`) is sufficient, and a single crafted request can degrade or fully freeze an instance running the common single-worker default. Not in CISA KEV and no confirmed in-the-wild exploitation, but CISA SSVC rates it TRACK_STAR.

How does the attack unfold?

Malicious file upload
A low-privilege authenticated user uploads a short text file containing a single line crafted as the ReDoS matching subject.
AML.T0079
Tool invocation via prompt
The attacker instructs the chat model to call the built-in `grep_knowledge_files` tool with a catastrophic-backtracking regex pattern against the uploaded file.
AML.T0053
Resource exhaustion
The unbounded Python `re` engine backtracks exponentially over the matching line, pinning one CPU core synchronously inside the event loop.
AML.T0034.001
Service denial
The worker cannot process any other request for the duration of the match, denying service to every other user on that worker (or the whole instance on single-worker deployments).
AML.T0029

What systems are affected?

Package Ecosystem Vulnerable Range Patched
Open WebUI pip >= 0.9.6, < 0.11.0 0.11.0
152.6K 3 dependents Pushed 2d ago 83% patched ~5d to patch Full package profile →

Do you use Open WebUI? You're affected.

How severe is it?

CVSS 3.1
6.5 / 10
EPSS
0.3%
chance of exploitation in 30 days
Higher than 26% of all CVEs
Exploitation Status
Exploit Available
Exploitation: MEDIUM
Sophistication
Moderate
Exploitation Confidence
medium
CISA SSVC: Public PoC
Public PoC indexed (trickest/cve)
Composite signal derived from CISA KEV, VulnCheck KEV, CISA SSVC, EPSS, Metasploit, Exploit-DB, trickest/cve, Nuclei templates, and inthewild.io exploitation reports.

What is the attack surface?

AV AC PR UI S C I A
AV Network
AC Low
PR Low
UI None
S Unchanged
C None
I None
A High

What should I do?

1 step
  1. Upgrade to open-webui >= 0.11.0, which replaces the unbounded re engine with regex and enforces a 2-second matching budget on every knowledge-file search tool call — no operator configuration is required beyond upgrading. Until patched, consider disabling the knowledge builtin tool group or restricting USER_PERMISSIONS_CHAT_FILE_UPLOAD for untrusted/low-trust user tiers to reduce exposure, and run multiple UVICORN_WORKERS so a single stuck worker doesn't take down the whole instance. Detection: watch for sustained 100% CPU on a single worker process correlated with grep_knowledge_files tool calls in application logs, and flag knowledge-search patterns containing nested quantifiers or alternation-with-repetition (e.g., (x|x)*y-style constructs) as suspicious.

What does CISA's SSVC say?

Decision Track*
Exploitation poc
Automatable No
Technical Impact partial

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:

EU AI Act
Article 15 - Accuracy, robustness and cybersecurity
NIST AI RMF
MEASURE 2.7 - AI system security and resilience
OWASP LLM Top 10
LLM10 - Unbounded Consumption

Frequently Asked Questions

What is CVE-2026-70493?

Open WebUI's built-in knowledge search tool lets the chat model choose the regex pattern used to grep uploaded knowledge files, and because pattern compilation used Python's unbounded backtracking `re` engine with no timeout, a short crafted pattern against a short matching line can pin a CPU core for minutes to hours while the synchronous search blocks the event loop for every other user on that worker. This requires no special privileges beyond an ordinary account and a single self-uploaded file, and works reliably by simply instructing the model to call the tool with the attacker's pattern — the only non-deterministic step is model compliance, which the researcher reports as reliable in practice. Blast radius is worker-wide: default single-worker (`UVICORN_WORKERS=1`) deployments go fully unresponsive per attack, and this affects a package with 4 tracked downstream dependents and a public PoC with exact timing data (30-character subject = 74 seconds, extrapolating to ~1 day at 40 characters). There's no confidentiality or integrity impact and it isn't in CISA KEV, but SSVC flags it TRACK_STAR and the fix is a straightforward upgrade to open-webui 0.11.0, which caps every knowledge search under a 2-second matching budget using the `regex` engine's built-in timeout — patch on the normal cycle rather than as an emergency.

Is CVE-2026-70493 actively exploited?

Proof-of-concept exploit code is publicly available for CVE-2026-70493, increasing the risk of exploitation.

How to fix CVE-2026-70493?

Upgrade to open-webui >= 0.11.0, which replaces the unbounded `re` engine with `regex` and enforces a 2-second matching budget on every knowledge-file search tool call — no operator configuration is required beyond upgrading. Until patched, consider disabling the knowledge builtin tool group or restricting `USER_PERMISSIONS_CHAT_FILE_UPLOAD` for untrusted/low-trust user tiers to reduce exposure, and run multiple `UVICORN_WORKERS` so a single stuck worker doesn't take down the whole instance. Detection: watch for sustained 100% CPU on a single worker process correlated with `grep_knowledge_files` tool calls in application logs, and flag knowledge-search patterns containing nested quantifiers or alternation-with-repetition (e.g., `(x|x)*y`-style constructs) as suspicious.

What systems are affected by CVE-2026-70493?

This vulnerability affects the following AI/ML architecture patterns: agent frameworks, RAG pipelines.

What is the CVSS score for CVE-2026-70493?

CVE-2026-70493 has a CVSS v3.1 base score of 6.5 (MEDIUM). The EPSS exploitation probability is 0.33%.

What is the AI security impact?

Affected AI Architectures

agent frameworksRAG pipelines

MITRE ATLAS Techniques

AML.T0029 Denial of AI Service
AML.T0034.001 Resource-Intensive Queries
AML.T0053 AI Agent Tool Invocation

Compliance Controls Affected

EU AI Act: Article 15
NIST AI RMF: MEASURE 2.7
OWASP LLM Top 10: LLM10

What are the technical details?

Original Advisory

## Summary The built-in knowledge search tools let a chat participant choose the pattern used to grep knowledge files. Patterns containing regex metacharacters were compiled with Python's backtracking `re` engine and run against every line of every reachable file, with no time limit anywhere on that path. A single crafted pattern and a single short line of matching text pin one CPU core for as long as the attacker wants, and because the search runs synchronously inside the event loop, that worker serves nobody else while it spins. ## Preconditions - Default configuration. The knowledge builtin tool group is enabled by default, and with `ENABLE_KB_EXEC` at its default of `False` the model is handed `grep_knowledge_files`, which is the affected path. - Any authenticated user, no elevated role and no workspace permission. - One file the attacker can read. `USER_PERMISSIONS_CHAT_FILE_UPLOAD` defaults to true and a user always has read access to their own upload, so both halves of the input are attacker-supplied. - A model willing to call the tool with the attacker's literal pattern. This is the one non-deterministic step: it is reliable in practice by instructing the model in your own chat, but it is not guaranteed on a given turn. - Deployments running with `UVICORN_WORKERS` at its default of 1 lose the whole instance; multi-worker deployments lose one worker per request. ## Impact Availability, against every other user of the affected worker. Cost scales exponentially with the length of the matching text: measured on the vulnerable code, a 24 character subject takes 1.2s, 28 takes 19s and 30 takes 74s, and a 40 character subject extrapolates to roughly a day of CPU. The same subject against a literal pattern takes under a microsecond. There is no confidentiality or integrity effect, and no data is read or altered. ## Fix Fixed in 0.11.0 by https://github.com/open-webui/open-webui/pull/27471. Pattern matching moved from `re` to the `regex` engine, which supports a per-search timeout, and every tool call now runs its searches under a single 2 second matching budget, after which the tool returns an error instead of continuing to match. Upgrading is sufficient; there is nothing an operator has to configure. ## Root cause - `backend/open_webui/tools/knowledge_fs.py`, `build_matcher`: compiled the caller's pattern and returned an unbounded match function. - `backend/open_webui/tools/builtin.py`, `grep_knowledge_files`: the default-configuration caller, which ran that matcher over every line of every reachable file. `build_matcher` treated any pattern containing regex metacharacters as a regex, so no explicit flag was needed to reach the compiler. From there the only limits in place were on results, not on work: a cap on matches returned and a cap on files scanned, neither of which bounds the time a single line can consume. Backtracking cost is exponential in the length of the matched text rather than in the pattern, so capping pattern length or line length would not have bounded it either. The engine had no timeout available and none was imposed elsewhere. ## Proof of concept Against a real instance as an ordinary user: 1. Upload a text file whose content is a single line of 30 `x` characters, and no `y`. 2. In a chat on a model with the knowledge tools available, instruct the model to call `grep_knowledge_files` with the pattern `(x|x)*y` and that file's id. 3. The request never returns. The worker's CPU sits at 100% for the duration, and concurrent requests from other users on the same worker do not complete. Growth measured directly against `build_matcher` on the vulnerable code: | subject length | time | | -------------- | ----- | | 16 | 4.7ms | | 20 | 73ms | | 24 | 1.21s | | 28 | 19.3s | | 30 | 73.9s | ## Credits @Classic298, for the finding and the fix.

Exploitation Scenario

An attacker with an ordinary trial or low-privilege account uploads a short text file containing a single line such as 30 repeated `x` characters with no trailing `y`. In the same chat session, they instruct the AI assistant to run the knowledge search tool against that file using the regex pattern `(x|x)*y` — plausible phrasing like "search my uploaded file for pattern (x|x)*y" is often enough to get the model to pass the literal pattern through. The backend compiles the pattern with Python's backtracking `re` engine and evaluates it against the line synchronously inside the event loop; catastrophic backtracking pins that CPU core for over a minute (and scales exponentially with subject length), during which no other request on that worker — including other users' chats — completes. On a default single-worker deployment, this single request effectively takes the entire instance offline for the duration of the attack, and the attacker can repeat it at will or target every worker in a multi-worker deployment.

Weaknesses (CWE)

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

Timeline

Published
August 4, 2026
Last Modified
August 5, 2026
First Seen
August 5, 2026

Related Vulnerabilities