{"schemaVersion":3,"id":"CVE-2026-87016","aliases":["GHSA-wpmr-8h3q-fwj7","PYSEC-2026-4128"],"status":"published","duplicateOf":null,"title":"Open WebUI: Sign-in as another user via wildcard characters in the OAuth subject claim on SQLite","description":"Open WebUI is an extensible, feature-rich, and user-friendly self-hosted AI platform. From 0.6.41 until 0.11.1, get_user_by_oauth_sub and get_user_by_scim_external_id in backend/open_webui/models/users.py used JSON contains matching that compiled to SQL LIKE substring matching on SQLite. An OAuth subject containing percent or underscore wildcard characters could resolve to a different stored identity, potentially selecting an administrator account and issuing the attacker that account's session; PostgreSQL deployments were not affected. This issue is fixed in version 0.11.1.","dates":{"published":"2026-09-09T21:21:43.877Z","modified":"2026-09-14T13:43:30.787Z","reserved":null,"kevAdded":[],"kevDue":[]},"cvss":{"headline":{"score":8.1,"severity":"high","version":"3.1","versionLabel":"v3.1","source":"CVE.org","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H","computed":false,"selection":"backend-summary"},"metrics":[{"version":"3.1","versionLabel":"v3.1","source":"CVE.org","score":8.1,"severity":"high","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H","exploitability":null,"impact":null,"computed":false},{"version":"3.1","versionLabel":"v3.1","source":"OSV · Pypi","score":8.1,"severity":"high","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H","exploitability":5.6,"impact":9.8,"computed":true},{"version":"3.1","versionLabel":"v3.1","source":"NVD","score":8.1,"severity":"high","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H","exploitability":null,"impact":null,"computed":false}]},"epss":{"probability":0.00599,"percentile":0.47998,"severity":"low","asOf":"2026-10-22T00:00:00.000Z","change":{"pp":0.24899999999999997,"baselineDate":"2026-09-22T00:00:00.000Z","baselineScore":0.0035},"history":[{"date":"2026-09-14T00:00:00.000Z","score":0.00334,"percentile":null},{"date":"2026-09-15T00:00:00.000Z","score":0.00334,"percentile":null},{"date":"2026-09-16T00:00:00.000Z","score":0.0035,"percentile":null},{"date":"2026-09-17T00:00:00.000Z","score":0.0035,"percentile":null},{"date":"2026-09-18T00:00:00.000Z","score":0.0035,"percentile":null},{"date":"2026-09-19T00:00:00.000Z","score":0.0035,"percentile":null},{"date":"2026-09-20T00:00:00.000Z","score":0.0035,"percentile":null},{"date":"2026-09-21T00:00:00.000Z","score":0.0035,"percentile":null},{"date":"2026-09-22T00:00:00.000Z","score":0.0035,"percentile":null},{"date":"2026-09-23T00:00:00.000Z","score":0.0035,"percentile":null},{"date":"2026-09-24T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-09-25T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-20T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-21T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-22T00:00:00.000Z","score":0.00599,"percentile":0.47998}],"last30":[{"date":"2026-09-22T00:00:00.000Z","score":0.0035,"percentile":null},{"date":"2026-09-23T00:00:00.000Z","score":0.0035,"percentile":null},{"date":"2026-09-24T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-09-25T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-20T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-21T00:00:00.000Z","score":0.00599,"percentile":null},{"date":"2026-10-22T00:00:00.000Z","score":0.00599,"percentile":0.47998}]},"kev":{"state":"not-listed","entries":[],"listedCount":0,"totalCatalogs":3,"catalogs":[{"source":"cisa","label":"CISA","listed":false,"entry":null},{"source":"enisa","label":"ENISA","listed":false,"entry":null},{"source":"circl","label":"CIRCL","listed":false,"entry":null}]},"ransomware":{"state":"none-recorded","sources":[]},"exploits":[{"id":"GITHUB_OPEN-WEBUI_OPEN-WEBUI","name":"Open Webui","source":"github","url":"https://github.com/open-webui/open-webui/security/advisories/GHSA-8gh5-qqh8-hq3x","maturity":"poc","reliabilityScore":0.3,"verified":false,"type":null,"platforms":[],"requiresAuth":null,"exploitdb":null,"metasploit":null}],"exploitCount":1,"weaknesses":[{"id":"CWE-155","name":"Improper Neutralization of Wildcards or Matching Symbols","description":"The product receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could be interpreted as wildcards or matching symbols when they are sent to a downstream component.","type":"weakness","status":"Draft","abstraction":"Variant","likelihoodOfExploit":null,"url":"https://cwe.mitre.org/data/definitions/155.html"},{"id":"CWE-287","name":"Improper Authentication","description":"When an actor claims to have a given identity, the product does not prove or insufficiently proves that the claim is correct.","type":"weakness","status":"Draft","abstraction":"Class","likelihoodOfExploit":"High","url":"https://cwe.mitre.org/data/definitions/287.html"}],"affected":[{"vendor":"open-webui","product":"open-webui","name":"open-webui","label":"open-webui","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"≥ 0.6.41, < 0.11.1","noFixRecorded":false,"fixedIn":null}],"versionsText":"≥ 0.6.41, < 0.11.1","eol":null,"hubHref":"/vendor/open-webui/open-webui"},{"vendor":"openwebui","product":"open_webui","name":"open webui","label":"open_webui","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"≥ 0.6.41, < 0.11.1","noFixRecorded":false,"fixedIn":null}],"versionsText":"≥ 0.6.41, < 0.11.1","eol":null,"hubHref":"/vendor/openwebui/open_webui"},{"vendor":"PyPI","product":"open-webui","name":"open-webui","label":"open-webui","ecosystem":"PyPI","cpePart":null,"purl":"pkg:pypi/open-webui","purlType":"pypi","versions":[{"text":"≥ 0.6.41, < 0.11.1","noFixRecorded":false,"fixedIn":null}],"versionsText":"≥ 0.6.41, < 0.11.1","eol":null,"hubHref":null}],"affectedCount":3,"eol":{"hasEol":false,"count":0},"references":[{"url":"https://github.com/open-webui/open-webui/security/advisories/GHSA-wpmr-8h3q-fwj7","label":"github.com/open-webui/open-webui/security/advisories/GHSA-wpmr-8h3q-fwj7","hostname":"github.com","tags":["X Refsource CONFIRM","WEB","Exploit","Vendor Advisory"]},{"url":"https://github.com/open-webui/open-webui/pull/28624","label":"github.com/open-webui/open-webui/pull/28624","hostname":"github.com","tags":["X Refsource MISC","WEB","Issue Tracking","Patch"]},{"url":"https://github.com/open-webui/open-webui/commit/73c1f5806aeb6345dad5de8f5aa26d1f3d0bef80","label":"github.com/open-webui/open-webui/commit/73c1f5806aeb6345dad5de8f5aa26d1f3d0bef80","hostname":"github.com","tags":["X Refsource MISC","WEB","Patch"]},{"url":"https://github.com/open-webui/open-webui/releases/tag/v0.11.1","label":"github.com/open-webui/open-webui/releases/tag/v0.11.1","hostname":"github.com","tags":["X Refsource MISC","WEB","Release Notes"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-87016","label":"nvd.nist.gov/vuln/detail/CVE-2026-87016","hostname":"nvd.nist.gov","tags":["Advisory"]},{"url":"https://github.com/open-webui/open-webui","label":"github.com/open-webui/open-webui","hostname":"github.com","tags":["PACKAGE"]},{"url":"https://pypi.org/project/open-webui","label":"pypi.org/project/open-webui","hostname":"pypi.org","tags":["PACKAGE"]},{"url":"https://github.com/advisories/GHSA-wpmr-8h3q-fwj7","label":"github.com/advisories/GHSA-wpmr-8h3q-fwj7","hostname":"github.com","tags":["Advisory"]}],"lineage":{"upstream":[],"downstream":[],"duplicates":[],"related":[]},"timeline":[{"kind":"published","date":"2026-09-09T21:21:43.877Z","label":"Published","detail":"Vulnerability first disclosed.","source":null},{"kind":"modified","date":"2026-09-14T13:43:30.787Z","label":"Last modified","detail":"Vulnerability information updated.","source":null}],"risk":{"score":43,"level":"medium","profile":"Default","thresholds":{"critical":75,"high":50,"medium":25,"low":10}},"meta":{"dataAsOf":"2026-10-22T19:21:24.468Z","stale":false,"partial":false}}