Skip to content
Heist/ feed
UnratedFix available

Open WebUI: Any authenticated user can suppress calendar alerts instance-wide via a non-numeric alert value

Type: advisorySource: OSV2 source records

# Any authenticated user can suppress calendar alerts instance-wide via a non-numeric alert value ## Summary Calendar events carry a free-form `meta` object that is stored exactly as submitted, with no validation of the values inside it. The scheduler reads the per-event alert offset out of that object in a single pass that covers every user's upcoming events, and compares it numerically without checking that it is a number. Any verified user could store a text value there, which made the comparison raise and abort the whole pass, so no calendar reminder fired for anyone on the instance while that event stayed inside the lookahead window. ## Preconditions - Calendar is enabled (`ENABLE_CALENDAR` / `calendar.enable`, default `True`). - The attacker is a verified user (role `user` or `admin`) holding the `calendar` feature permission, which is granted to all users by default (`USER_PERMISSIONS_FEATURES_CALENDAR`, default `True`). - The event's start time falls inside the scheduler's one hour lookahead window, so the shared alert pass selects it. No admin access, no shared calendar, no recurrence rule and no open registration are required, an invited account is enough. Deployments running with the calendar disabled, or with the calendar feature permission removed from regular users, are not affected. ## Impact Availability loss on one feature, affecting every user on the instance. While a single event carrying a non-numeric alert value sat in the upcoming window, the shared aler

Announced Group revision 1
Original source ↗

PYSEC-2026-4126

Revision 1

Open WebUI: Any authenticated user can suppress calendar alerts instance-wide via a non-numeric alert value

# Any authenticated user can suppress calendar alerts instance-wide via a non-numeric alert value ## Summary Calendar events carry a free-form `meta` object that is stored exactly as submitted, with no validation of the values inside it. The scheduler reads the per-event alert offset out of that object in a single pass that covers every user's upcoming events, and compares it numerically without checking that it is a number. Any verified user could store a text value there, which made the comparison raise and abort the whole pass, so no calendar reminder fired for anyone on the instance while that event stayed inside the lookahead window. ## Preconditions - Calendar is enabled (`ENABLE_CALENDAR` / `calendar.enable`, default `True`). - The attacker is a verified user (role `user` or `admin`) holding the `calendar` feature permission, which is granted to all users by default (`USER_PERMISSIONS_FEATURES_CALENDAR`, default `True`). - The event's start time falls inside the scheduler's one hour lookahead window, so the shared alert pass selects it. No admin access, no shared calendar, no recurrence rule and no open registration are required, an invited account is enough. Deployments running with the calendar disabled, or with the calendar feature permission removed from regular users, are not affected. ## Impact Availability loss on one feature, affecting every user on the instance. While a single event carrying a non-numeric alert value sat in the upcoming window, the shared aler

Imported from structured advisory data. Source references identify upstream records or fields; verify affected versions and your deployed configuration.

Security context

Source reference: osv:PYSEC-2026-4126

open-webui

Source reference: /affected/0/package/name

Affected versions
0.10.0

Source reference: /affected/0/versions

0.10.1

Source reference: /affected/0/versions

0.10.2

Source reference: /affected/0/versions

0.11.0

Source reference: /affected/0/versions

0.9.0

Source reference: /affected/0/versions

0.9.1

Source reference: /affected/0/versions

0.9.2

Source reference: /affected/0/versions

0.9.3

Source reference: /affected/0/versions

0.9.4

Source reference: /affected/0/versions

0.9.5

Source reference: /affected/0/versions

0.9.6

Source reference: /affected/0/versions

Fixed versions
0.11.1

Source reference: /affected/0/ranges

Prerequisites
Not stated in this record

Structured affected-version data

Original package identities and version rules from this source.

[
  {
    "ranges": [
      {
        "type": "ECOSYSTEM",
        "events": [
          {
            "introduced": "0.9.0"
          },
          {
            "fixed": "0.11.1"
          }
        ]
      }
    ],
    "package": {
      "name": "open-webui",
      "purl": "pkg:pypi/open-webui",
      "ecosystem": "PyPI"
    },
    "versions": [
      "0.10.0",
      "0.10.1",
      "0.10.2",
      "0.11.0",
      "0.9.0",
      "0.9.1",
      "0.9.2",
      "0.9.3",
      "0.9.4",
      "0.9.5",
      "0.9.6"
    ],
    "database_specific": {
      "source": "https://github.com/pypa/advisory-database/blob/main/vulns/open-webui/PYSEC-2026-4126.yaml"
    }
  }
]
Related CVEs
CVE-2026-87012

Source reference: /aliases

Publisher severity

No explicit severity was provided.

Event
#62503 · Revision 1
Added to Heist Feed
Publisher date
Read the original announcement

GHSA-v39v-59xw-j98g

Primary source · Revision 1

Imported from structured advisory data. Source references identify upstream records or fields; verify affected versions and your deployed configuration.

Security context

Source reference: osv:GHSA-v39v-59xw-j98g

open-webui

Source reference: /affected/0/package/name

Affected versions
0.10.0

Source reference: /affected/0/versions

0.10.1

Source reference: /affected/0/versions

0.10.2

Source reference: /affected/0/versions

0.11.0

Source reference: /affected/0/versions

0.9.0

Source reference: /affected/0/versions

0.9.1

Source reference: /affected/0/versions

0.9.2

Source reference: /affected/0/versions

0.9.3

Source reference: /affected/0/versions

0.9.4

Source reference: /affected/0/versions

0.9.5

Source reference: /affected/0/versions

0.9.6

Source reference: /affected/0/versions

Fixed versions
0.11.1

Source reference: /affected/0/ranges

Prerequisites
Not stated in this record

Structured affected-version data

Original package identities and version rules from this source.

[
  {
    "ranges": [
      {
        "type": "ECOSYSTEM",
        "events": [
          {
            "introduced": "0.9.0"
          },
          {
            "fixed": "0.11.1"
          }
        ]
      }
    ],
    "package": {
      "name": "open-webui",
      "purl": "pkg:pypi/open-webui",
      "ecosystem": "PyPI"
    },
    "versions": [
      "0.10.0",
      "0.10.1",
      "0.10.2",
      "0.11.0",
      "0.9.0",
      "0.9.1",
      "0.9.2",
      "0.9.3",
      "0.9.4",
      "0.9.5",
      "0.9.6"
    ],
    "database_specific": {
      "source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/09/GHSA-v39v-59xw-j98g/GHSA-v39v-59xw-j98g.json"
    }
  }
]
Related CVEs
CVE-2026-87012

Source reference: /aliases

Publisher severity

No explicit severity was provided.

Event
#62532 · Revision 1
Added to Heist Feed
Publisher date
Read the original announcement