<?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://vulnerability.circl.lu</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>Sat, 03 Oct 2026 05:21:36 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-54010 — Open WebUI: Forged chat-file link allows cross-user file read and deletion</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-54010</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; open-webui&lt;/p&gt;
&lt;p&gt;Open WebUI is a self-hosted artificial intelligence platform designed to operate entirely offline. Prior to 0.9.6, Open WebUI lets an authenticated user attach arbitrary file_id values to their own chat message without checking whether they own or can read those files. If the attacker then shares that chat and grants themselves read access, has_access_to_file() treats the victim file as accessible through the shared chat, and the file endpoints read or delete the victim file. This vulnerability is fixed in 0.9.6.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; open-webui&lt;/p&gt;
&lt;p&gt;Open WebUI is a self-hosted artificial intelligence platform designed to operate entirely offline. Prior to 0.9.6, Open WebUI lets an authenticated user attach arbitrary file_id values to their own chat message without checking whether they own or can read those files. If the attacker then shares that chat and grants themselves read access, has_access_to_file() treats the victim file as accessible through the shared chat, and the file endpoints read or delete the victim file. This vulnerability is fixed in 0.9.6.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-54010</guid>
    </item>
    <item>
      <title>GHSA-vrhc-3fr6-pc3c — Open WebUI: Forged chat-file link allows cross-user file read and deletion</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-vrhc-3fr6-pc3c</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: open-webui&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;Open WebUI `v0.9.5` lets an authenticated user attach arbitrary `file_id` values to their own chat message without checking whether they own or can read those files. If the attacker then shares that chat and grants themselves read access, `has_access_to_file()` treats the victim file as accessible through the shared chat, and the file endpoints read or delete the victim file.&lt;/p&gt;
&lt;p&gt;## Impact&lt;/p&gt;
&lt;p&gt;Security boundary crossed: file confidentiality and integrity.&lt;/p&gt;
&lt;p&gt;An authenticated attacker who knows or obtains a victim `file_id` can make Open WebUI authorize, through an attacker-owned shared chat:&lt;/p&gt;
&lt;p&gt;- reading the victim file via `GET /api/v1/files/{id}/content`, and
- deleting the victim file via `DELETE /api/v1/files/{id}`.&lt;/p&gt;
&lt;p&gt;## Root Cause&lt;/p&gt;
&lt;p&gt;Client-controlled message file IDs are persisted without file authorization checks:&lt;/p&gt;
&lt;p&gt;```python
# backend/open_webui/main.py
await Chats.insert_chat_files(
    chat_id,
    user_message.get(&amp;#39;id&amp;#39;),
    [
        file_item.get(&amp;#39;id&amp;#39;)
        for file_item in user_message_files
        if file_item.get(&amp;#39;type&amp;#39;) == &amp;#39;file&amp;#39;
    ],
    user.id,
)
```&lt;/p&gt;
&lt;p&gt;`insert_chat_files()` stores the provided IDs directly:&lt;/p&gt;
&lt;p&gt;```python
# backend/open_webui/models/chats.py
ChatFileModel(
    user_id=user_id,
    chat_id=chat_id,
    message_id=message_id,
    file_id=file_id,
)
```&lt;/p&gt;
&lt;p&gt;Later, file authorization trusts shared-chat associations:&lt;/p&gt;
&lt;p&gt;```python
# backend/open_webui/utils/access_control/files.py
shared_chat_ids = await Chats.get_shared_chat_ids_by_file_id(file_id,…&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;## Summary&lt;/p&gt;
&lt;p&gt;Open WebUI `v0.9.5` lets an authenticated user attach arbitrary `file_id` values to their own chat message without checking whether they own or can read those files. If the attacker then shares that chat and grants themselves read access, `has_access_to_file()` treats the victim file as accessible through the shared chat, and the file endpoints read or delete the victim file.&lt;/p&gt;
&lt;p&gt;## Impact&lt;/p&gt;
&lt;p&gt;Security boundary crossed: file confidentiality and integrity.&lt;/p&gt;
&lt;p&gt;An authenticated attacker who knows or obtains a victim `file_id` can make Open WebUI authorize, through an attacker-owned shared chat:&lt;/p&gt;
&lt;p&gt;- reading the victim file via `GET /api/v1/files/{id}/content`, and
- deleting the victim file via `DELETE /api/v1/files/{id}`.&lt;/p&gt;
&lt;p&gt;## Root Cause&lt;/p&gt;
&lt;p&gt;Client-controlled message file IDs are persisted without file authorization checks:&lt;/p&gt;
&lt;p&gt;```python
# backend/open_webui/main.py
await Chats.insert_chat_files(
    chat_id,
    user_message.get(&amp;#39;id&amp;#39;),
    [
        file_item.get(&amp;#39;id&amp;#39;)
        for file_item in user_message_files
        if file_item.get(&amp;#39;type&amp;#39;) == &amp;#39;file&amp;#39;
    ],
    user.id,
)
```&lt;/p&gt;
&lt;p&gt;`insert_chat_files()` stores the provided IDs directly:&lt;/p&gt;
&lt;p&gt;```python
# backend/open_webui/models/chats.py
ChatFileModel(
    user_id=user_id,
    chat_id=chat_id,
    message_id=message_id,
    file_id=file_id,
)
```&lt;/p&gt;
&lt;p&gt;Later, file authorization trusts shared-chat associations:&lt;/p&gt;
&lt;p&gt;```python
# backend/open_webui/utils/access_control/files.py
shared_chat_ids = await Chats.get_shared_chat_ids_by_file_id(file_id,…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-vrhc-3fr6-pc3c</guid>
    </item>
  </channel>
</rss>
