GHSA-GFM2-XM6C-37QC

Vulnerability from github – Published: 2026-05-14 20:24 – Updated: 2026-05-15 23:54
VLAI
Summary
Open WebUI has Broken Access Control for Completions API
Details

Summary

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

  1. Using OWUI v0.6.18
  2. Sign in with any user X
  3. Generate an API Key for user X using the settings
  4. Create another user Y, and have a conversation in OWUI. Copy the Chat ID from the URL.
  5. User X can now use the API /api/chat/completions and the Chat ID from step 4 to continue the conversation of user Y

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.

Show details on source website

{
  "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"
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

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.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…