Skip to content
Heist/ feed
UnratedFix available

Open WebUI: Admin demoted through SSO role sync keeps read and write access to all users' notes

Type: advisorySource: OSV2 source records

## Summary A user who is demoted from admin by an identity provider keeps admin-level read and write access to every user's notes, over any Socket.IO connection that was already open when the demotion happened. Open WebUI caches the user's role on the socket at connection time, and the two SSO role-sync paths, the reverse-proxy trusted role header and OAuth role mapping, changed the role in the database without tearing that cached session down. Only the admin user-management endpoints invalidated sessions, so a demotion driven by the identity provider left the old privileges live on the socket. ## Preconditions A role-sync SSO mode has to be enabled. Either trusted-header authentication with `WEBUI_AUTH_TRUSTED_ROLE_HEADER` set, which is unset by default, or OAuth with role mapping enabled, which is off by default. Deployments that change roles only through the admin panel are not affected, because that path already invalidated the user's sockets. The account has to be an admin at the moment it opens a Socket.IO connection, has to keep that connection open across the demotion, and has to be demoted through the SSO path rather than through the admin panel. Signing out, reloading the page, or any network interruption ends the exposure, because the reconnect reads a fresh role from the database. ## Impact Until the socket closes, the demoted account can open and edit any user's note through the collaborative-notes socket handlers, which grant admins access to every note. That is

Announced Group revision 1
Original source ↗

PYSEC-2026-4127

Revision 1

Open WebUI: Admin demoted through SSO role sync keeps read and write access to all users' notes

## Summary A user who is demoted from admin by an identity provider keeps admin-level read and write access to every user's notes, over any Socket.IO connection that was already open when the demotion happened. Open WebUI caches the user's role on the socket at connection time, and the two SSO role-sync paths, the reverse-proxy trusted role header and OAuth role mapping, changed the role in the database without tearing that cached session down. Only the admin user-management endpoints invalidated sessions, so a demotion driven by the identity provider left the old privileges live on the socket. ## Preconditions A role-sync SSO mode has to be enabled. Either trusted-header authentication with `WEBUI_AUTH_TRUSTED_ROLE_HEADER` set, which is unset by default, or OAuth with role mapping enabled, which is off by default. Deployments that change roles only through the admin panel are not affected, because that path already invalidated the user's sockets. The account has to be an admin at the moment it opens a Socket.IO connection, has to keep that connection open across the demotion, and has to be demoted through the SSO path rather than through the admin panel. Signing out, reloading the page, or any network interruption ends the exposure, because the reconnect reads a fresh role from the database. ## Impact Until the socket closes, the demoted account can open and edit any user's note through the collaborative-notes socket handlers, which grant admins access to every note. That is

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-4127

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-4127.yaml"
    }
  }
]
Related CVEs
CVE-2026-87014

Source reference: /aliases

Publisher severity

No explicit severity was provided.

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

GHSA-wjwr-xfp9-r66p

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-wjwr-xfp9-r66p

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-wjwr-xfp9-r66p/GHSA-wjwr-xfp9-r66p.json"
    }
  }
]
Related CVEs
CVE-2026-87014

Source reference: /aliases

Publisher severity

No explicit severity was provided.

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