OPEN-WEBUI · CVE-2026-109295 · AI agents & MCP
FIX → 0.11.4
Any logged-in user can submit a crafted regex through Open WebUI's built-in file search tools, which runs on the server's event loop and freezes the worker for about 2 seconds per call. Repeated calls can stall the worker again and again, denying service to other users.
first public Sep 27, 2026 · 2 sources
Could this affect your app?
Free first check from your website. Connect your repo for the full answer.
Self-hosted Open WebUI deployments on versions 0.11.0 through 0.11.3 where users can chat and use the built-in knowledge or chat file search tools. The default configuration is affected because the knowledge builtin tool group is enabled by default. Deployments on 0.11.4 or later, or where these tools are not offered to the model, can skip it.
Not affected if managed-hosting, version-0.11.4-or-later
Who cares open-webui, python, self-hosted
pip show open-webui and treat 0.11.0 through 0.11.3 as affected.UVICORN_WORKERS and whether ENABLE_KB_EXEC is still at its default of False.The built-in file search tools let a chat participant choose the pattern used to grep files. Since 0.11.0 each search has been capped at 2 seconds of matching time, but the matching itself still ran directly on the server's event loop. A crafted pattern that backtracks until the cap is hit therefore froze the whole worker for about 2 seconds on every call, and nothing stopped the calls from being repeated.
ENABLE_KB_EXEC at its default of False the model is offered grep_knowledge_files, which accepts a file id.USER_PERMISSIONS_CHAT_FILE_UPLOAD defaults to true and a user can always read their own upload.grep_chat_files is affected the same way, but it is only offered when a model's File Context capability has been turned off.UVICORN_WORKERS at its default of 1 stall the whole instance; multi-worker deployments stall one worker per call.Check it with your coding agent
It reads this page and tells you if your code is affected.
Are you affected?
Ask from here. InfraStack checks the affected versions against your stack and answers in your inbox.
InfraStack checks the affected versions against your stack and answers in Slack, with the evidence and the fix.
Upgrade to 0.11.4
open-webui 0.11.4Availability, against every other user of the affected worker. Each call held the event loop for the full 2 second budget, during which the worker handled no other request, and every further call from the same or another chat held it again. The same file searched with a literal pattern finished in a few milliseconds. There is no confidentiality or integrity effect, and no data is read or altered.
Fixed in 0.11.4. https://github.com/open-webui/open-webui/pull/29621 moved the built-in chat and knowledge file searches off the event loop into a worker thread, the knowledge filesystem search was moved off the event loop the same way, and pattern matching switched to the RE2 engine, which runs in linear time and cannot backtrack catastrophically. Upgrading is sufficient; there is nothing an operator has to configure.
backend/open_webui/tools/builtin.py, grep_knowledge_files and grep_chat_files: called the synchronous file search directly from the async tool.backend/open_webui/tools/knowledge_fs.py, build_matcher: compiled the caller's pattern with a backtracking engine under a 2 second timeout.The fix for GHSA-2f54-p244-32q6 bounded how long one search could run, but a time limit on a synchronous call does not give the event loop back while the call is running. The search still executed on the loop thread, so for the whole budget the worker could not serve anyone else, and the budget reset on every tool call.
Against the tool code of 0.11.3 as an ordinary user:
a characters followed by !.grep_knowledge_files with the pattern (a|a)+$ and that file's id.Search exceeded 2s, narrow the pattern after about 2 seconds. A task scheduled every 50 ms on the same event loop does not run for 2.06 seconds while the search is in progress. Repeating the call repeats the stall.Measured by running the real tool functions of each release with a concurrent 50 ms event-loop heartbeat (file lookup seeded directly with the file above):
| version | tool | call time | longest heartbeat gap |
|---|---|---|---|
| 0.11.3 | grep_knowledge_files | 2.007s | 2.057s |
| 0.11.3 | grep_chat_files | 2.009s | 2.059s |
| 0.11.4 | grep_knowledge_files | 0.004s | 0.051s |
| 0.11.4 | grep_chat_files | 0.005s | 0.051s |
@yousif-IQ, for the finding. @tahahassan773, analysis.
This page as .md · .json · CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
NVD data is provided by NIST and is public domain. Posts quoted belong to their authors.