CVE-2026-70489: Open WebUI: automation rule parsing freezes server

GHSA-73cq-mcgh-379c MEDIUM PoC AVAILABLE CISA: TRACK*
Published August 4, 2026
CISO Take

Open WebUI's automation scheduler computes recurrence rules by walking forward from a hardcoded year-2000 anchor, so a simple FREQ=MINUTELY rule forces roughly 25 years of occurrences to be enumerated synchronously on the same event loop that serves chat, API and WebSocket traffic — one evaluation takes 18.9 seconds of blocking CPU, and a slightly more elaborate rule takes over a minute. Any user who can create an automation can trigger this: by default that's admin-only, since USER_PERMISSIONS_FEATURES_AUTOMATIONS defaults to false, but any deployment that has enabled automations for regular users — the normal way to make the feature usable — exposes this to every one of them, and because the default deployment runs a single Uvicorn worker there's no second worker to absorb the stall. Worse, the automation doesn't have to fire to cause damage: once stored, the scheduler re-runs the same expensive walk on every 10-second poll, so the instance stays wedged rather than recovering. A working PoC with measured timings is public in the GHSA advisory, though EPSS (top 78th percentile) and CISA's SSVC TRACK_STAR rating both suggest this isn't being mass-exploited or KEV-listed today. Patch to open-webui 0.11.0, or in the interim keep automation creation restricted to trusted admins and consider raising UVICORN_WORKERS to limit blast radius.

Sources: NVD GitHub Advisory EPSS ATLAS

What is the risk?

Medium severity (CVSS 6.5, AV:N/AC:L/PR:L/UI:N/A:H) — network-reachable, low attack complexity, requires only low privileges (an authenticated user who can create automations), no user interaction, and impacts availability alone with no confidentiality or integrity loss. Exploitability is trivial: no exotic syntax is needed, just FREQ=MINUTELY. The gating factor is USER_PERMISSIONS_FEATURES_AUTOMATIONS — on default deployments only an admin can trigger it, making it closer to a self-DoS/misconfiguration risk, but any deployment that enables automations for ordinary users (the feature's intended use case) turns this into an authenticated-user DoS against every other tenant on that instance. EPSS is low (0.00295), it's not in CISA KEV, and SSVC rates it TRACK_STAR (monitor, not act-now) — consistent with a DoS bug rather than an actively weaponized RCE or data-exposure flaw. Overall: low-to-moderate real-world exploitation likelihood today, but high blast radius per successful trigger given the single-worker default and the self-perpetuating scheduler re-poll.

How does the attack unfold?

Entry via automation creation
An authenticated user with automation-creation rights (any user if the feature is enabled instance-wide, otherwise an admin) submits an automation through the public create/update endpoint.
AML.T0049
Craft resource-intensive rule
The user sets RRULE:FREQ=MINUTELY (optionally with a BYSECOND list) so the year-2000-anchored parser must synchronously walk ~25 years of occurrences.
AML.T0034.001
Persistence via scheduler re-poll
The automation is stored, and the scheduler recomputes the same expensive walk on every default 10-second poll rather than caching the result.
Instance-wide availability impact
The single Uvicorn worker's event loop stays blocked, denying chat, inference API and WebSocket service to every other user until the automation is removed or the process is restarted on a patched build.
AML.T0029

What systems are affected?

Package Ecosystem Vulnerable Range Patched
Open WebUI pip >= 0.9.0, < 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.4%
chance of exploitation in 30 days
Higher than 31% of all CVEs
Exploitation Status
Exploit Available
Exploitation: MEDIUM
Sophistication
Trivial
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. 1) Patch: upgrade to open-webui >= 0.11.0, which anchors sub-daily recurrence rules to the current clock instead of year 2000 and bounds caller-supplied DTSTART values — the same rules that took 18.9s/64.2s now run in under 1ms. 2) Workaround until patched: keep USER_PERMISSIONS_FEATURES_AUTOMATIONS=false (default) so only trusted admins can create automations, and audit existing automations for FREQ=MINUTELY/HOURLY rules with no or ancient DTSTART. 3) Reduce single-point exposure: set UVICORN_WORKERS > 1 so one wedged worker doesn't take down the whole instance (limits blast radius, does not fix the underlying cost). 4) Detection: monitor for automation create/update/toggle events followed by sustained high CPU and event-loop latency spikes recurring roughly every 10 seconds (the scheduler poll interval) — that recurrence signature is distinctive to this bug. 5) After patching, review automation logs for any pre-existing minutely/hourly rules created before the fix.

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
ISO 42001
Clause 8.1 - Operational planning and control
NIST AI RMF
MEASURE 2.7 - AI system security and resilience are evaluated and documented
OWASP LLM Top 10
LLM04 - Model Denial of Service

Frequently Asked Questions

What is CVE-2026-70489?

Open WebUI's automation scheduler computes recurrence rules by walking forward from a hardcoded year-2000 anchor, so a simple FREQ=MINUTELY rule forces roughly 25 years of occurrences to be enumerated synchronously on the same event loop that serves chat, API and WebSocket traffic — one evaluation takes 18.9 seconds of blocking CPU, and a slightly more elaborate rule takes over a minute. Any user who can create an automation can trigger this: by default that's admin-only, since USER_PERMISSIONS_FEATURES_AUTOMATIONS defaults to false, but any deployment that has enabled automations for regular users — the normal way to make the feature usable — exposes this to every one of them, and because the default deployment runs a single Uvicorn worker there's no second worker to absorb the stall. Worse, the automation doesn't have to fire to cause damage: once stored, the scheduler re-runs the same expensive walk on every 10-second poll, so the instance stays wedged rather than recovering. A working PoC with measured timings is public in the GHSA advisory, though EPSS (top 78th percentile) and CISA's SSVC TRACK_STAR rating both suggest this isn't being mass-exploited or KEV-listed today. Patch to open-webui 0.11.0, or in the interim keep automation creation restricted to trusted admins and consider raising UVICORN_WORKERS to limit blast radius.

Is CVE-2026-70489 actively exploited?

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

How to fix CVE-2026-70489?

1) Patch: upgrade to open-webui >= 0.11.0, which anchors sub-daily recurrence rules to the current clock instead of year 2000 and bounds caller-supplied DTSTART values — the same rules that took 18.9s/64.2s now run in under 1ms. 2) Workaround until patched: keep USER_PERMISSIONS_FEATURES_AUTOMATIONS=false (default) so only trusted admins can create automations, and audit existing automations for FREQ=MINUTELY/HOURLY rules with no or ancient DTSTART. 3) Reduce single-point exposure: set UVICORN_WORKERS > 1 so one wedged worker doesn't take down the whole instance (limits blast radius, does not fix the underlying cost). 4) Detection: monitor for automation create/update/toggle events followed by sustained high CPU and event-loop latency spikes recurring roughly every 10 seconds (the scheduler poll interval) — that recurrence signature is distinctive to this bug. 5) After patching, review automation logs for any pre-existing minutely/hourly rules created before the fix.

What systems are affected by CVE-2026-70489?

This vulnerability affects the following AI/ML architecture patterns: agent frameworks, model serving, automation/scheduling pipelines.

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

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

What is the AI security impact?

Affected AI Architectures

agent frameworksmodel servingautomation/scheduling pipelines

MITRE ATLAS Techniques

AML.T0029 Denial of AI Service
AML.T0034.001 Resource-Intensive Queries
AML.T0049 Exploit Public-Facing Application

Compliance Controls Affected

EU AI Act: Article 15
ISO 42001: Clause 8.1
NIST AI RMF: MEASURE 2.7
OWASP LLM Top 10: LLM04

What are the technical details?

Original Advisory

## Summary In every affected release, automation recurrence parsing anchors minutely and hourly rules at a fixed date of 2000-01-01 and then walks forward one interval at a time to find the next run. A single `FREQ=MINUTELY` rule therefore enumerates roughly a quarter-century of occurrences, synchronously, on the event loop that also serves the scheduler, HTTP and WebSocket traffic. Nothing bounds the walk, and nothing moves it off the loop. ## Preconditions Any user who can create an automation. `USER_PERMISSIONS_FEATURES_AUTOMATIONS` defaults to `false`, so on a default deployment only an admin can reach the create path; it becomes reachable by ordinary users on any deployment that has granted the automations feature, which is the normal way to make the feature usable. `UVICORN_WORKERS` defaults to 1, so there is no second worker to absorb the stall. The rule needs no unusual syntax: `FREQ=MINUTELY` with no `DTSTART`, or with a `DTSTART` set well in the past, is enough. ## Impact Availability, against every other user of the instance. One evaluation of `RRULE:FREQ=MINUTELY` takes 18.9 s of blocking CPU; adding a ten-value `BYSECOND` list multiplies the walk and takes 64.2 s. `FREQ=HOURLY` costs 0.34 s and is not materially exploitable on its own. The cost does not stop at creation: once the automation is stored, the scheduler recomputes the next run for every claimed row on each poll, so the same walk repeats on a default 10 s interval and the instance stays wedged rather than recovering. Instances that have not enabled the automations feature for non-admin users are exposed only to an admin doing this. ## Fix Fixed in 0.11.0. Sub-daily rules are now anchored to the current clock instead of the year-2000 date, so the walk starts at the next occurrence rather than a quarter-century behind it. A caller-supplied `DTSTART` is honoured only when the number of occurrences it implies stays under a fixed bound, and is otherwise replaced by the clock-aligned anchor. The same rules that cost 18.9 s and 64.2 s now cost under a millisecond. Upgrading fully resolves the issue, no configuration change is required. ## Root cause Affected component: `backend/open_webui/utils/automations.py`, `_parse_rule`, reached from the automation create, update and toggle handlers in `backend/open_webui/routers/automations.py` and from the scheduler's claim path in `backend/open_webui/models/automations.py`. Affected setup: every build from 0.9.0 onward, since that is when the automations feature shipped. The fixed anchor existed to make sub-daily intervals snap to clock boundaries, so that "every 5 minutes" lands on :00, :05, :10 rather than drifting from whenever the automation happened to be created. Snapping only needs a reference point of the right phase, but the implementation used a literal far-past date as that reference and left the recurrence library to walk forward from it. The distance between the anchor and the present is therefore attacker-influenced work that grows with real time, and it was never treated as a cost that needed a bound or a thread. ## Proof of concept Measured cost of a single next-run computation against the shipped 0.10.2 parser: | rule | cost | | --- | --- | | `RRULE:FREQ=MINUTELY` | 18,880 ms | | `RRULE:FREQ=MINUTELY;BYSECOND=0,1,2,3,4,5,6,7,8,9` | 64,236 ms | | `DTSTART:20000101T000000` + `RRULE:FREQ=MINUTELY` | 26,237 ms | | `RRULE:FREQ=HOURLY` | 339 ms | Measured at function level deliberately. Persisting such an automation has the scheduler repeat the walk on every poll and wedge the instance indefinitely, which is the actual impact but makes a live end-to-end run destructive to the test instance. ## Credits Reported by @Classic298.

Exploitation Scenario

An attacker who holds (or compromises) a standard user account on an Open WebUI instance where the automations feature has been enabled for non-admins — the normal configuration for teams that actually use the feature — opens the automation creation UI or hits the create endpoint directly and submits a recurrence rule of RRULE:FREQ=MINUTELY, optionally adding a BYSECOND list to push the cost to 64+ seconds. The single Uvicorn worker that also serves every other user's chat requests, the inference API and WebSocket connections blocks for tens of seconds computing the next occurrence. Because the automation persists, the scheduler recomputes the same expensive walk on every subsequent poll (default every 10 seconds), so the instance never recovers — effectively a one-shot, no-interaction, authenticated DoS that denies AI chat service to every other user of the shared instance until an admin manually deletes the automation or the process is restarted on a patched build.

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