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
PYSEC-2026-4127
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:PYSEC-2026-4127
open-webui
Source reference: /affected/0/package/name
- Affected versions
- 0.10.0
Source reference:
/affected/0/versions0.10.1Source reference:
/affected/0/versions0.10.2Source reference:
/affected/0/versions0.11.0Source reference:
/affected/0/versions0.9.0Source reference:
/affected/0/versions0.9.1Source reference:
/affected/0/versions0.9.2Source reference:
/affected/0/versions0.9.3Source reference:
/affected/0/versions0.9.4Source reference:
/affected/0/versions0.9.5Source reference:
/affected/0/versions0.9.6Source 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