<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://cve.radiocsirt.org</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Wed, 14 Oct 2026 19:32:14 +0000</lastBuildDate>
    <item>
      <title>bdu:2026-09662</title>
      <link>https://cve.radiocsirt.org/vuln/bdu:2026-09662</link>
      <description>bdu:2026-09662</description>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/bdu:2026-09662</guid>
    </item>
    <item>
      <title>EUVD-2026-319078</title>
      <link>https://cve.radiocsirt.org/vuln/euvd-2026-319078</link>
      <description>EUVD-2026-319078</description>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/euvd-2026-319078</guid>
    </item>
    <item>
      <title>fkie_cve-2026-44561</title>
      <link>https://cve.radiocsirt.org/vuln/fkie_cve-2026-44561</link>
      <description>&lt;p&gt;Open WebUI is a self-hosted artificial intelligence platform designed to operate entirely offline. Prior to 0.9.0, the is_user_channel_member function checks whether a ChannelMember row exists but does not check the is_active field. When a user is deactivated from a group or DM channel (removed by the channel owner, or leaves voluntarily), their membership row persists with is_active=False and status=&amp;#39;left&amp;#39;. Because the authorization check ignores this field, the deactivated user retains full read and write access to the channel via direct API calls. This vulnerability is fixed in 0.9.0.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;Open WebUI is a self-hosted artificial intelligence platform designed to operate entirely offline. Prior to 0.9.0, the is_user_channel_member function checks whether a ChannelMember row exists but does not check the is_active field. When a user is deactivated from a group or DM channel (removed by the channel owner, or leaves voluntarily), their membership row persists with is_active=False and status=&amp;#39;left&amp;#39;. Because the authorization check ignores this field, the deactivated user retains full read and write access to the channel via direct API calls. This vulnerability is fixed in 0.9.0.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/fkie_cve-2026-44561</guid>
    </item>
    <item>
      <title>GHSA-hmgr-67hw-j2cq — Open WebUI: Deactivated Channel Members Retain Full Access to Group/DM Channels</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-hmgr-67hw-j2cq</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: open-webui&lt;/p&gt;
&lt;p&gt;# Deactivated Channel Members Retain Full Access to Group/DM Channels&lt;/p&gt;
&lt;p&gt;## Affected Component&lt;/p&gt;
&lt;p&gt;Channel membership authorization check:
- `backend/open_webui/models/channels.py` (lines 663-673, `is_user_channel_member`)
- Used at 15 locations in `backend/open_webui/routers/channels.py`&lt;/p&gt;
&lt;p&gt;## Affected Versions&lt;/p&gt;
&lt;p&gt;Current main branch (commit `6fdd19bf1`) and likely all versions with the group/DM channel feature.&lt;/p&gt;
&lt;p&gt;## Description&lt;/p&gt;
&lt;p&gt;The `is_user_channel_member` function checks whether a `ChannelMember` row exists but does not check the `is_active` field. When a user is deactivated from a group or DM channel (removed by the channel owner, or leaves voluntarily), their membership row persists with `is_active=False` and `status=&amp;#39;left&amp;#39;`. Because the authorization check ignores this field, the deactivated user retains full read and write access to the channel via direct API calls.&lt;/p&gt;
&lt;p&gt;The channel correctly disappears from the deactivated user&amp;#39;s channel list (the listing query at `get_channels_by_user_id` properly filters on `is_active`), but all 15 message-level endpoints in the router rely on `is_user_channel_member` for authorization, which does not filter on `is_active`.&lt;/p&gt;
&lt;p&gt;```python
# models/channels.py:663 — missing is_active check
def is_user_channel_member(self, channel_id, user_id, db=None):
    membership = db.query(ChannelMember).filter(
        ChannelMember.channel_id == channel_id,
        ChannelMember.user_id == user_id,
    ).first()
    return membership is not None  # True even…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: open-webui&lt;/p&gt;
&lt;p&gt;# Deactivated Channel Members Retain Full Access to Group/DM Channels&lt;/p&gt;
&lt;p&gt;## Affected Component&lt;/p&gt;
&lt;p&gt;Channel membership authorization check:
- `backend/open_webui/models/channels.py` (lines 663-673, `is_user_channel_member`)
- Used at 15 locations in `backend/open_webui/routers/channels.py`&lt;/p&gt;
&lt;p&gt;## Affected Versions&lt;/p&gt;
&lt;p&gt;Current main branch (commit `6fdd19bf1`) and likely all versions with the group/DM channel feature.&lt;/p&gt;
&lt;p&gt;## Description&lt;/p&gt;
&lt;p&gt;The `is_user_channel_member` function checks whether a `ChannelMember` row exists but does not check the `is_active` field. When a user is deactivated from a group or DM channel (removed by the channel owner, or leaves voluntarily), their membership row persists with `is_active=False` and `status=&amp;#39;left&amp;#39;`. Because the authorization check ignores this field, the deactivated user retains full read and write access to the channel via direct API calls.&lt;/p&gt;
&lt;p&gt;The channel correctly disappears from the deactivated user&amp;#39;s channel list (the listing query at `get_channels_by_user_id` properly filters on `is_active`), but all 15 message-level endpoints in the router rely on `is_user_channel_member` for authorization, which does not filter on `is_active`.&lt;/p&gt;
&lt;p&gt;```python
# models/channels.py:663 — missing is_active check
def is_user_channel_member(self, channel_id, user_id, db=None):
    membership = db.query(ChannelMember).filter(
        ChannelMember.channel_id == channel_id,
        ChannelMember.user_id == user_id,
    ).first()
    return membership is not None  # True even…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-hmgr-67hw-j2cq</guid>
    </item>
    <item>
      <title>PYSEC-2026-2732 — Open WebUI: Deactivated Channel Members Retain Full Access to Group/DM Channels</title>
      <link>https://cve.radiocsirt.org/vuln/pysec-2026-2732</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: open-webui&lt;/p&gt;
&lt;p&gt;# Deactivated Channel Members Retain Full Access to Group/DM Channels&lt;/p&gt;
&lt;p&gt;## Affected Component&lt;/p&gt;
&lt;p&gt;Channel membership authorization check:
- `backend/open_webui/models/channels.py` (lines 663-673, `is_user_channel_member`)
- Used at 15 locations in `backend/open_webui/routers/channels.py`&lt;/p&gt;
&lt;p&gt;## Affected Versions&lt;/p&gt;
&lt;p&gt;Current main branch (commit `6fdd19bf1`) and likely all versions with the group/DM channel feature.&lt;/p&gt;
&lt;p&gt;## Description&lt;/p&gt;
&lt;p&gt;The `is_user_channel_member` function checks whether a `ChannelMember` row exists but does not check the `is_active` field. When a user is deactivated from a group or DM channel (removed by the channel owner, or leaves voluntarily), their membership row persists with `is_active=False` and `status=&amp;#39;left&amp;#39;`. Because the authorization check ignores this field, the deactivated user retains full read and write access to the channel via direct API calls.&lt;/p&gt;
&lt;p&gt;The channel correctly disappears from the deactivated user&amp;#39;s channel list (the listing query at `get_channels_by_user_id` properly filters on `is_active`), but all 15 message-level endpoints in the router rely on `is_user_channel_member` for authorization, which does not filter on `is_active`.&lt;/p&gt;
&lt;p&gt;```python
# models/channels.py:663 — missing is_active check
def is_user_channel_member(self, channel_id, user_id, db=None):
    membership = db.query(ChannelMember).filter(
        ChannelMember.channel_id == channel_id,
        ChannelMember.user_id == user_id,
    ).first()
    return membership is not None  # True even…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: open-webui&lt;/p&gt;
&lt;p&gt;# Deactivated Channel Members Retain Full Access to Group/DM Channels&lt;/p&gt;
&lt;p&gt;## Affected Component&lt;/p&gt;
&lt;p&gt;Channel membership authorization check:
- `backend/open_webui/models/channels.py` (lines 663-673, `is_user_channel_member`)
- Used at 15 locations in `backend/open_webui/routers/channels.py`&lt;/p&gt;
&lt;p&gt;## Affected Versions&lt;/p&gt;
&lt;p&gt;Current main branch (commit `6fdd19bf1`) and likely all versions with the group/DM channel feature.&lt;/p&gt;
&lt;p&gt;## Description&lt;/p&gt;
&lt;p&gt;The `is_user_channel_member` function checks whether a `ChannelMember` row exists but does not check the `is_active` field. When a user is deactivated from a group or DM channel (removed by the channel owner, or leaves voluntarily), their membership row persists with `is_active=False` and `status=&amp;#39;left&amp;#39;`. Because the authorization check ignores this field, the deactivated user retains full read and write access to the channel via direct API calls.&lt;/p&gt;
&lt;p&gt;The channel correctly disappears from the deactivated user&amp;#39;s channel list (the listing query at `get_channels_by_user_id` properly filters on `is_active`), but all 15 message-level endpoints in the router rely on `is_user_channel_member` for authorization, which does not filter on `is_active`.&lt;/p&gt;
&lt;p&gt;```python
# models/channels.py:663 — missing is_active check
def is_user_channel_member(self, channel_id, user_id, db=None):
    membership = db.query(ChannelMember).filter(
        ChannelMember.channel_id == channel_id,
        ChannelMember.user_id == user_id,
    ).first()
    return membership is not None  # True even…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/pysec-2026-2732</guid>
    </item>
  </channel>
</rss>
