GHSA-GFM2-XM6C-37QC
Vulnerability from github – Published: 2026-05-14 20:24 – Updated: 2026-05-15 23:54Summary
Any user X can continue the conversation of any other user Y, as long as the Chat ID of Y is known. User X does not even need to be an admin to do so.
Details
A user just needs to use the API endpoint: /api/chat/completions with their own API key (generated in OWUI) and the Chat ID of another user. OWUI does not check to match the Chat ID with the user that created that Chat ID. Note that both users will need access to the same model. This is especially relevant if there is a shared pipeline model between users.
PoC
- Using OWUI v0.6.18
- Sign in with any user
X - Generate an API Key for user
Xusing the settings - Create another user
Y, and have a conversation in OWUI. Copy the Chat ID from the URL. - User
Xcan now use the API/api/chat/completionsand the Chat ID from step 4 to continue the conversation of userY
Impact
Large impact to any user in OWUI. People can read your conversations, and access private information if they know your Chat ID (which is in the URL of the chat).
Resolution
Fixed in commit cf4218e68, first released in v0.9.0 (Apr 2026). The chat_completion handler at backend/open_webui/main.py:1868 now explicitly verifies chat ownership via Chats.is_chat_owner(chat_id, user.id) for any request that targets an existing chat, and raises 404 for non-owners (admin bypass preserved per the documented threat model). New chats (no chat_id supplied, or freshly inserted via the is_new_chat branch) are unaffected. Users on >= 0.9.0 are not affected.
{
"affected": [
{
"database_specific": {
"last_known_affected_version_range": "\u003c= 0.8.12"
},
"package": {
"ecosystem": "PyPI",
"name": "open-webui"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "0.9.0"
}
],
"type": "ECOSYSTEM"
}
]
}
],
"aliases": [
"CVE-2026-45349"
],
"database_specific": {
"cwe_ids": [
"CWE-639"
],
"github_reviewed": true,
"github_reviewed_at": "2026-05-14T20:24:35Z",
"nvd_published_at": "2026-05-15T20:16:48Z",
"severity": "HIGH"
},
"details": "### Summary\nAny user `X` can continue the conversation of any other user `Y`, as long as the Chat ID of `Y` is known. User `X` does not even need to be an admin to do so. \n\n### Details\nA user just needs to use the API endpoint: `/api/chat/completions` with their own API key (generated in OWUI) and the Chat ID of another user. **OWUI does not check to match the Chat ID with the user that created that Chat ID**. Note that both users will need access to the same model. This is especially relevant if there is a shared pipeline model between users. \n\n### PoC\n1. Using OWUI v0.6.18\n2. Sign in with any user `X`\n3. Generate an API Key for user `X` using the settings\n4. Create another user `Y`, and have a conversation in OWUI. Copy the Chat ID from the URL.\n5. User `X` can now use the API `/api/chat/completions` and the Chat ID from step 4 to continue the conversation of user `Y`\n\n### Impact\nLarge impact to any user in OWUI. People can read your conversations, and access private information if they know your Chat ID (which is in the URL of the chat). \n\n## Resolution\n\nFixed in commit [cf4218e68](https://github.com/open-webui/open-webui/commit/cf4218e688def6f11d195aeda6665ae5b5376b67), first released in **v0.9.0** (Apr 2026). The `chat_completion` handler at `backend/open_webui/main.py:1868` now explicitly verifies chat ownership via `Chats.is_chat_owner(chat_id, user.id)` for any request that targets an existing chat, and raises 404 for non-owners (admin bypass preserved per the documented threat model). New chats (no `chat_id` supplied, or freshly inserted via the `is_new_chat` branch) are unaffected. Users on `\u003e= 0.9.0` are not affected.",
"id": "GHSA-gfm2-xm6c-37qc",
"modified": "2026-05-15T23:54:00Z",
"published": "2026-05-14T20:24:35Z",
"references": [
{
"type": "WEB",
"url": "https://github.com/open-webui/open-webui/security/advisories/GHSA-gfm2-xm6c-37qc"
},
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-45349"
},
{
"type": "WEB",
"url": "https://github.com/open-webui/open-webui/commit/cf4218e688def6f11d195aeda6665ae5b5376b67"
},
{
"type": "PACKAGE",
"url": "https://github.com/open-webui/open-webui"
},
{
"type": "WEB",
"url": "https://github.com/open-webui/open-webui/releases/tag/v0.9.0"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N",
"type": "CVSS_V3"
}
],
"summary": "Open WebUI has Broken Access Control for Completions API"
}
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.