CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-87012

CVE-2026-87012: Instance-Wide Denial of Service via Calendar Alert Metadata Type Confusion in Open WebUI

Amit Schendel
Amit Schendel
Senior Security Researcher

Sep 11, 2026·5 min read·0 visits

Executive Summary (TL;DR)

An authenticated attacker can crash the shared Open WebUI background scheduler by sending non-numeric values in calendar event metadata, resulting in instance-wide suppression of all calendar alerts.

Open WebUI is a self-hosted AI platform. Versions 0.9.0 through 0.11.0 contain a denial-of-service vulnerability where an authenticated user can inject non-numeric values into calendar event alert metadata. The shared scheduler process fails to validate the type, leading to an unhandled TypeError that halts the execution of instance-wide alerts, suppressing notifications for all users.

Vulnerability Overview

Open WebUI, a self-hosted, feature-rich interface for artificial intelligence platforms, implements a calendar management system inside its backend architecture. This system allows users with calendar-editing privileges to create, schedule, and configure events, including setting reminder notifications via the alert_minutes metadata parameter.\n\nThe core vulnerability resides in the backend scheduling mechanism, which uses a single, shared, background polling thread to aggregate upcoming events across all users. This multi-tenant design processes events sequentially in a unified loop without isolation boundaries or localized error-handling routines.\n\nAn authenticated user can abuse this shared context by submitting an event with non-numeric metadata. Because the platform fails to validate the data type on input, the value is written directly to the database. When the shared background scheduler subsequently retrieves the entry, it encounters an unexpected data type, leading to an application-level crash.

Root Cause Analysis

The root cause of this vulnerability lies in a combination of CWE-1287 (Improper Validation of Specified Type of Input) and CWE-754 (Improper Check for Unusual or Exceptional Conditions). The data schema for the calendar component stores user-defined event metadata in a schema-less, free-form JSON dictionary called meta.\n\nWhen writing or updating an event, the backend accepts the incoming payload without confirming that fields like alert_minutes contain numeric data types. The scheduler retrieves active events periodically and processes them within a single query result set. In this loop, the application performs a direct numerical comparison using Python's comparison operators.\n\nIf the value of alert_minutes is a string or a complex JSON object, the comparison operation (e.g., < 0) triggers an unhandled TypeError exception. Because the polling loop operates in a single thread without per-event exception wrapper blocks, any exception raised by a single event terminates the entire scheduler run, halting alert delivery for all other users on the instance.

Code Analysis

To understand the defect, examine the vulnerable implementation within backend/open_webui/models/calendar.py where events are pulled and processed:\n\npython\n# Vulnerable scheduler code path\nasync def get_upcoming_events(...):\n events = []\n for event, tz in rows:\n model = CalendarEventModel.model_validate(event)\n # Determine per-event alert window\n alert_minutes = None\n if model.meta and 'alert_minutes' in model.meta:\n alert_minutes = model.meta['alert_minutes']\n\n if alert_minutes is not None:\n if alert_minutes < 0: # <-- TypeError raised here\n\n\nWhen an attacker supplies \"crash_the_scheduler\" as the value of alert_minutes, the condition alert_minutes is not None evaluates to true. The interpreter then executes \"crash_the_scheduler\" < 0, which raises a TypeError and crashes the routine.\n\nTo remediate this issue, the patch introduced explicit type checking on the retrieved metadata before executing any comparative arithmetic:\n\npython\n# Patched scheduler code path\nasync def get_upcoming_events(...):\n events = []\n for event, tz in rows:\n model = CalendarEventModel.model_validate(event)\n # Safe dictionary access with fallback to empty dict\n alert_minutes = (model.meta or {}).get('alert_minutes')\n # Strict type-checking restricts value to numeric types\n if not isinstance(alert_minutes, (int, float)):\n alert_minutes = None\n\n if alert_minutes is not None:\n if alert_minutes < 0:\n\n\nThe patched version uses isinstance(alert_minutes, (int, float)) to verify the type before performing the numerical comparison. Any non-numeric input is safely coerced to None, successfully isolating the scheduler from malformed metadata entries.

Exploitation

An attacker must have valid credentials to an account on the target Open WebUI instance with permissions to create or modify calendar events. The attack vector does not require administrator privileges, as any standard user with calendar access can trigger the vulnerability.\n\nThe attacker sends a structured HTTP POST or PUT request to the calendar endpoint, specifying a payload where meta.alert_minutes contains a non-numeric string or object. The database interface commits this entry without performing type enforcement.\n\nOnce the database is updated, the attacker waits for the periodic background scheduler to run. When the execution thread queries the newly created event, it encounters the malformed metadata. The resulting TypeError aborts the scheduler loop, effectively suppressing all notifications across the instance as long as the malicious event remains within the lookahead window.

Impact Assessment

The impact of this vulnerability is a localized, application-level Denial of Service (DoS) affecting the notification functionality of Open WebUI. It does not lead to remote code execution, database corruption, or unauthorized data exposure.\n\nHowever, in a multi-tenant corporate or educational deployment, the absolute suppression of calendar alerts can disrupt operational workflows. Users rely on these alerts to join scheduled calls, execute tasks, or manage shared resources.\n\nThe severity is rated as Medium with a CVSS v3.1 score of 4.3. The attack requires basic authenticated access (PR:L) and low complexity (AC:L), but the impact is restricted to availability (A:L) without impacting confidentiality or integrity.

Remediation

The primary remediation is upgrading the Open WebUI installation to version 0.11.1 or higher, which contains the defensive patch. Administrators can pull the updated Docker image from the official repository.\n\nIf immediate patching is not feasible, administrators can apply defensive measures at the database or reverse proxy level. Running a periodic database script to sanitize or delete calendar entries with non-numeric alert_minutes parameters will prevent the scheduler from encountering the crash condition.\n\nDevelopers should note that relying on read-path coercion is a defensive-in-depth measure, but the API write-path should also be hardened. Restricting the input schema on the write-path prevents malformed JSON elements from persisting to the datastore in the first place.\n\nHere is a sequence diagram illustrating the attack flow:\n\nmermaid\ngraph LR\n A[\"Attacker\"] -- \"POST /api/v1/calendar (non-numeric alert_minutes)\" --> B[\"Open WebUI API\"]\n B -- \"Saves event directly to Database without verification\" --> C[(\"Database\")]\n D[\"Shared Scheduler Process\"] -- \"Fetches upcoming events\" --> C\n C -- \"Returns events including attacker payload\" --> D\n D -- \"Performs comparison 'string < 0'\" --> E[\"Unhandled TypeError Exception\"]\n E -- \"Crashes Background Job\" --> F[\"Instance-Wide Suppression of Alerts\"]\n

Official Patches

Open WebUIPull Request #28790: Fix calendar alert_minutes type-coercion vulnerability

Fix Analysis (1)

Technical Appendix

CVSS Score
4.3/ 10
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L
EPSS Probability
0.27%
Top 81% most exploited

Affected Systems

Open WebUI self-hosted AI platforms

Affected Versions Detail

Product
Affected Versions
Fixed Version
Open WebUI
Open WebUI
>= 0.9.0, < 0.11.10.11.1
AttributeDetail
CWE IDCWE-1287, CWE-754
Attack VectorNetwork (AV:N)
CVSS Score4.3 (Medium)
EPSS Score0.00268 (18.83% percentile)
ImpactDenial of Service (Instance-wide alert suppression)
Exploit StatusPoC concept, no public exploits
KEV StatusNot listed in CISA KEV

MITRE ATT&CK Mapping

T1499.004Endpoint Denial of Service: Application Exhaustion/Crash
Impact
CWE-1287
Improper Validation of Specified Type of Input

The application receives input that is expected to be of a specific type (e.g., an integer), but fails to validate that the received input actually matches that specified type before performing type-sensitive operations.

Vulnerability Timeline

Patch and associated pull request (#28790) submitted to open-webui repository
2026-08-19
CVE-2026-87012 published and Open WebUI v0.11.1 released
2026-09-09

References & Sources

  • [1]GitHub Security Advisory GHSA-v39v-59xw-j98g

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•6 minutes ago•CVE-2026-87013
4.3

CVE-2026-87013: Denial of Service via Cyclic Folder Structures in Open WebUI

An authenticated denial of service vulnerability exists in Open WebUI versions 0.10.0 through 0.11.0. An attacker can update a folder's parent identifier to establish cyclic folder references, causing recursive tree-walking operations to execute infinitely, leading to CPU exhaustion and localized application denial of service.

Amit Schendel
Amit Schendel
0 views•6 min read
•about 2 hours ago•CVE-2026-87011
7.5

CVE-2026-87011: Denial of Service via Event-Loop Starvation in Open WebUI OIDC Back-Channel Logout

CVE-2026-87011 is a critical vulnerability in Open WebUI versions 0.9.0 through 0.11.0. It allows unauthenticated remote attackers to trigger a Denial of Service (DoS) by sending crafted tokens to the back-channel logout endpoint, causing synchronous network calls that block the single-worker ASGI event loop.

Amit Schendel
Amit Schendel
2 views•8 min read
•about 3 hours ago•CVE-2026-88045
7.5

CVE-2026-88045: Denial of Service via Uncontrolled Memory Preallocation and Integer Overflow in rclone S3 Compatibility Layer

A high-severity Denial of Service (DoS) vulnerability in the S3 compatibility layer of rclone allows unauthenticated remote attackers (or authenticated attackers depending on configuration) to trigger rapid memory exhaustion and process termination. The flaw lies in the handling of S3 multipart uploads, where rclone eagerly allocates buffers based on untrusted size headers and fails to prevent integer overflows in its concurrent request admission control.

Alon Barad
Alon Barad
3 views•7 min read
•about 4 hours ago•CVE-2026-88046
5.3

CVE-2026-88046: Directory Traversal and Root Confinement Escape in rclone Core Engine

CVE-2026-88046 (also tracked via GHSA-38xv-hf3p-h7mq) is a directory traversal and root confinement escape vulnerability residing in the core listing and transfer logic of rclone. Prior to version 1.75.1, raw relative parent-directory sequences returned by flat-keyspace source backends are trusted and processed without proper sanitization, enabling writes outside the designated target root or bucket.

Amit Schendel
Amit Schendel
2 views•5 min read
•about 5 hours ago•CVE-2026-88017
7.3

CVE-2026-88017: Cross-Session Authentication-Proxy Backend Confusion in rclone FTP Server

The FTP server implementation of rclone is vulnerable to a cross-session identity and credential confusion flaw when configured with an authentication proxy. Under specific multi-tenant configurations where multiple distinct sessions authenticate with the same username, a global map caches credentials globally instead of isolating them inside the session context. This allows a concurrent attacker to hijack the active session backend of a victim using the same username.

Alon Barad
Alon Barad
3 views•7 min read
•about 6 hours ago•CVE-2026-88044
9.1

CVE-2026-88044: Authentication Bypass in rclone Dynamic Server Execution via Remote Control API

An authentication bypass vulnerability exists in rclone when dynamically starting FTP, S3, or SFTP servers via the Remote Control (RC) 'serve/start' API. The server constructors incorrectly check the global process configuration rather than request-scoped options, resulting in a silent bypass of the authentication proxy and enabling unauthenticated access.

Alon Barad
Alon Barad
4 views•6 min read