CVE-2026-59215: Open WebUI: Private channel messages can be disclosed through cross-channel thread parent_id binding

Published Jul 9, 2026
·
Updated

Summary

A normal authenticated user can read the content of a message in a private channel they do not belong to. GET /api/v1/channels/{id}/messages/{messageid}/thread authorizes the caller against the URL channel, but the underlying thread lookup loads the thread parent by id and returns it without verifying the parent belongs to that channel. By requesting a thread in a channel they can access while supplying a victim channel's message id as the thread root, the attacker receives the victim message — content, channel id, and author.

Affected component

- backend/openwebui/models/messages.py — getmessagesbyparentid() - backend/openwebui/routers/channels.py — getchannelthreadmessages() (read), newmessagehandler() (parent/reply binding on write)

Root cause

getmessagesbyparentid(channelid, parentid) filters the thread replies by channelid, but loads the thread parent by id alone and appends it without requiring parent.channelid == channelid:

python message = await db.get(Message, parentid) # loaded by id only — no channel binding if not message: return [] replies are filtered by channelid ... if len(allmessages) < limit: allmessages.append(message) # parent appended unconditionally

getchannelthreadmessages() authorizes only the URL channel, then calls getmessagesbyparentid(id, messageid) with the caller-supplied messageid. The reply insert path (newmessagehandler → insertnewmessage) also stored a caller-supplied parentid without binding it to the channel.

Impact

A non-member can disclose the content (plus channel id and author metadata) of a private-channel message whose id they know or obtain. Direct reads of the victim channel/message/thread return 403; the disclosure is via the thread parent of a channel the attacker can access. Read-only, one message per known id.

Proof of Concept

(reporter) Validated on v0.9.6: GET /channels/{attackerchannel}/messages/{victimmessageid}/thread returned the victim's private message — content, victim channel id, and author — although direct reads of the victim channel returned 403.

Fix

Bind the thread parent to the requested channel: getmessagesbyparentid returns [] unless the parent exists and parent.channelid == channelid. Defence-in-depth on the write path: newmessagehandler rejects a supplied parentid/replytoid whose message does not belong to the URL channel.

Affected / Patched

- Affected: < 0.10.0 (last affected release 0.9.6) - Patched: v0.10.0 (PR #25766). getmessagesbyparentid binds the thread parent to the requested channel (returns [] unless parent.channelid == channelid), and newmessagehandler rejects a caller-supplied parentid/replytoid whose message does not belong to the channel.

Other sources

Open WebUI is an extensible, feature-rich, and user-friendly self-hosted AI platform. Prior to 0.10.0, channel thread parent and reply handling did not bind parentid to the channel in the URL, allowing an authenticated user to reference a message from another private or DM channel and disclose thread context across channels. This issue is fixed in version 0.10.0.

MITRE

Affected Software

3 affected componentsFixes available
Open WebUI<0.10.0
openwebui Open WebUI<0.10.0
pip/open-webui<0.10.0
0.10.0

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade pip/open-webui to a version that resolves this vulnerability.

    Fixed in 0.10.0
  2. Upgrade

    Upgrade open_webui to a version that resolves this vulnerability.

    Fixed in v0.10.0Patch PR #25766

Event History

Jul 9, 2026
CVE Published
via MITRE·04:57 PM
Data Sourced
via MITRE·04:57 PM
DescriptionSeverityWeakness
Data Sourced
via NVD·05:17 PM
RemedyDescriptionSeverityWeaknessAffected Software
Jul 24, 2026
Advisory Published
via GitHub·05:04 PM
Data Sourced
via GitHub·05:04 PM
DescriptionSeverityWeaknessAffected Software
Free Weekly Intel

Don't miss critical vulnerabilities

Join thousands of security professionals who receive our weekly digest of trending CVEs, zero-days, and exploited vulnerabilities.

No spam. Unsubscribe anytime.

Frequently Asked Questions

1

What is the severity of CVE-2026-59215?

CVE-2026-59215 has a severity rating of low, with a score of 3.1.

2

What type of vulnerability is CVE-2026-59215?

CVE-2026-59215 is a vulnerability that allows for the disclosure of private channel messages through improper binding of the parent_id.

3

How do I fix CVE-2026-59215?

To fix CVE-2026-59215, update Open WebUI to version 0.10.0 or later where the issue has been addressed.

4

What software does CVE-2026-59215 affect?

CVE-2026-59215 affects the Open WebUI software prior to version 0.10.0.

5

What are the potential impacts of CVE-2026-59215?

The potential impact of CVE-2026-59215 includes the risk of private or direct message content being disclosed to authenticated users.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203