<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Open-Webui (&lt;= 0.8.12) — CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/open-webui--0.8.12/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata. Fed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Fri, 08 May 2026 19:45:53 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/open-webui--0.8.12/feed.xml" rel="self" type="application/rss+xml"/><item><title>Open WebUI /responses Endpoint Authentication Bypass Vulnerability</title><link>https://feed.craftedsignal.io/briefs/2024-01-open-webui-auth-bypass/</link><pubDate>Fri, 08 May 2026 19:45:53 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2024-01-open-webui-auth-bypass/</guid><description>The /responses endpoint in Open WebUI's OpenAI router lacks access control, allowing authenticated users to bypass per-model access controls and interact with any configured model, potentially leading to denial of service, model theft, and access policy bypass.</description><content:encoded><![CDATA[<p>Open WebUI versions 0.8.12 and earlier contain an authentication bypass vulnerability in the /responses endpoint of the OpenAI router. This endpoint, intended as a proxy to upstream LLM providers, fails to enforce per-model access controls. While the primary chat completion endpoint (generate_chat_completion) correctly validates model ownership, group membership, and AccessGrants, the /responses endpoint only verifies a valid user session. Consequently, any authenticated user can interact with any model configured on the Open WebUI instance, regardless of their assigned roles or group memberships, by sending a crafted POST request to /api/openai/responses with an arbitrary model ID. This circumvents intended access restrictions and poses risks to service availability, model security, and policy enforcement.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>An attacker obtains valid user credentials for the Open WebUI instance. This could be through credential stuffing, phishing, or other common methods.</li>
<li>The attacker authenticates to the Open WebUI instance using the obtained credentials.</li>
<li>The attacker crafts a POST request to the <code>/api/openai/responses</code> endpoint.</li>
<li>The attacker includes an arbitrary model ID in the POST request body, specifying a model they do not have explicit access to under normal access control policies.</li>
<li>The Open WebUI instance, upon receiving the request at <code>/api/openai/responses</code>, only verifies the user&rsquo;s session.</li>
<li>Due to the missing access control checks, the request is forwarded to the upstream LLM provider, effectively bypassing the intended access restrictions.</li>
<li>The upstream LLM provider processes the request using the specified model, even though the user lacks authorization.</li>
<li>The attacker receives the response from the LLM, successfully interacting with a restricted model.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of this vulnerability can have significant consequences. Unauthorized users can submit resource-intensive requests to expensive models, leading to Model Denial of Service (OWASP LLM04) by exhausting API budgets or rate limits, potentially causing total service disruption for legitimate users. Furthermore, if the instance proxies access to fine-tuned or self-hosted models, unauthorized interaction can lead to Model Theft (OWASP LLM10), enabling capability extraction or model distillation. Finally, the vulnerability undermines existing access control systems, preventing administrators from enforcing cost-tier restrictions, team-based model assignments, or compliance boundaries.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Upgrade to Open WebUI version 0.8.13 or later to patch CVE-2026-44556 and address the authentication bypass vulnerability.</li>
<li>Deploy the Sigma rule &ldquo;Detect Open WebUI Unauthorized Model Access via Responses Endpoint&rdquo; to identify potential exploitation attempts by monitoring POST requests to <code>/api/openai/responses</code> with potentially malicious model IDs.</li>
<li>Review Open WebUI access logs for any suspicious activity related to the <code>/api/openai/responses</code> endpoint, particularly requests from users who should not have access to specific models.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>authentication-bypass</category><category>llm</category><category>owasp</category></item><item><title>Open WebUI LDAP Empty Password Authentication Bypass</title><link>https://feed.craftedsignal.io/briefs/2024-01-24-open-webui-ldap-bypass/</link><pubDate>Fri, 08 May 2026 19:38:31 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2024-01-24-open-webui-ldap-bypass/</guid><description>Open WebUI is vulnerable to an LDAP authentication bypass where the LDAP authentication endpoint does not validate that the submitted password is non-empty before performing a Simple Bind against the LDAP server, potentially granting attackers complete account access.</description><content:encoded><![CDATA[<p>Open WebUI is vulnerable to an LDAP authentication bypass. The LDAP authentication endpoint does not validate that the submitted password is non-empty before performing a Simple Bind against the LDAP server. This vulnerability exists because the <code>LdapForm</code> Pydantic model accepts an empty string for the password field without any minimum length constraint. Subsequently, the <code>Connection.bind()</code> call succeeds on vulnerable LDAP servers, and the application issues a full session token for the target user. The issue affects the current main branch (commit <code>6fdd19bf1</code>) and likely all versions with LDAP authentication support. Exploitation requires that LDAP is enabled and the underlying LDAP server accepts unauthenticated simple binds with empty passwords, which is the default configuration for OpenLDAP and some Active Directory setups.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>LDAP authentication is enabled on the Open WebUI instance (<code>ENABLE_LDAP=True</code>).</li>
<li>The attacker identifies a valid LDAP username.</li>
<li>The underlying LDAP server accepts unauthenticated simple binds (OpenLDAP default, some AD configs).</li>
<li>Attacker sends a POST request to <code>/api/v1/auths/ldap</code> with the target username and an empty password.</li>
<li>The application&rsquo;s DN bind succeeds, finding the target user via LDAP search.</li>
<li>The application attempts a user bind using the provided (empty) password.</li>
<li>The LDAP server returns success for the unauthenticated bind due to the empty password.</li>
<li><code>authenticate_user_by_email</code> issues a full session token for the target user, granting complete account access.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation allows a complete authentication bypass, enabling attackers to take over any LDAP user account without knowing the password, including admin accounts if they authenticate via LDAP. The vulnerability can be exploited with zero interaction from the victim and without rate limiting on the LDAP endpoint.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Apply the mitigations recommended in GHSA-2r4p-jpmg-48f4 to prevent empty passwords from being used in LDAP authentication.</li>
<li>Deploy the Sigma rule &ldquo;Detect Open WebUI LDAP Authentication Bypass Attempt&rdquo; to monitor for POST requests to the <code>/api/v1/auths/ldap</code> endpoint with an empty password field, indicating a potential exploit attempt.</li>
<li>Ensure the LDAP server is configured to reject unauthenticated simple binds with empty passwords.</li>
<li>Monitor web server logs for POST requests to <code>/api/v1/auths/ldap</code> (webserver log source) and correlate with other authentication-related events.</li>
</ul>
]]></content:encoded><category domain="severity">critical</category><category domain="type">advisory</category><category>authentication-bypass</category><category>ldap</category><category>open-webui</category></item><item><title>Open WebUI Cross-Instance Cache Poisoning Vulnerability</title><link>https://feed.craftedsignal.io/briefs/2024-05-open-webui-cache-poisoning/</link><pubDate>Thu, 09 May 2024 12:00:00 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2024-05-open-webui-cache-poisoning/</guid><description>Open WebUI versions up to 0.8.12 are vulnerable to cross-instance cache poisoning when multiple instances share a Redis backend, allowing an attacker with admin access on one instance to overwrite cache values used by other instances, leading to data exfiltration and prompt injection attacks.</description><content:encoded><![CDATA[<p>Open WebUI, a web interface for LLMs, is susceptible to a cross-instance cache poisoning vulnerability (CVE-2026-44552) when multiple instances share a Redis backend. This issue stems from missing <code>REDIS_KEY_PREFIX</code> usage for the <code>tool_servers</code> and <code>terminal_servers</code> keys in <code>utils/tools.py</code>. Specifically, lines 841, 850, 976, and 986 do not utilize the key prefix. As a result, an attacker with admin privileges on one instance can overwrite the cache values used by other instances. This vulnerability affects the current main branch (commit <code>6fdd19bf1</code>) and likely all versions since the tool server/terminal server Redis cache was introduced. This is a critical issue because it undermines the multi-instance isolation that <code>REDIS_KEY_PREFIX</code> aims to provide, potentially impacting blue-green deployments, multi-region setups, and cluster topologies.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>An attacker gains admin access to Open WebUI Instance A, either through legitimate means or by exploiting vulnerabilities like LDAP empty-password or stale-admin-role issues.</li>
<li>The attacker configures a malicious tool server on Instance A, pointing to <code>https://attacker-controlled.example.com/openapi.json</code>. This configuration triggers a write to the <code>tool_servers</code> Redis key without the <code>REDIS_KEY_PREFIX</code> (line 841 in <code>utils/tools.py</code>).</li>
<li>Users on Open WebUI Instance B attempt to query available tools. This action triggers a read from the same unprefixed <code>tool_servers</code> Redis key (line 850 in <code>utils/tools.py</code>).</li>
<li>Instance B retrieves the attacker&rsquo;s poisoned tool server list from Instance A, which now includes the attacker&rsquo;s server, possibly replacing legitimate tool servers.</li>
<li>A user on Instance B invokes a tool. The tool call payload, including chat content, user identity, and OAuth tokens, is sent to the attacker-controlled server.</li>
<li>The attacker&rsquo;s server responds with arbitrary tool outputs, which are then fed back into Instance B&rsquo;s LLM context.</li>
<li>The malicious tool output is treated as trusted data within Instance B&rsquo;s LLM, enabling prompt injection and misinformation delivery.</li>
<li>The attacker leverages prompt injection and misinformation delivery to further compromise Instance B and exfiltrate sensitive data.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of this vulnerability leads to cross-instance cache poisoning, where one instance&rsquo;s admin can affect all users of another instance sharing the same Redis backend. Sensitive data, including chat content and user identity, can be exfiltrated to an attacker-controlled server. Furthermore, the attacker can inject malicious content into the victim instance&rsquo;s LLM context, leading to prompt injection attacks. This undermines the intended isolation between Open WebUI instances and can lead to significant data breaches and system compromise. The vulnerability&rsquo;s silent failure mode makes detection difficult for victim instances.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Deploy the Sigma rule &ldquo;Detect Open WebUI Tool Server Configuration Change&rdquo; to monitor for unauthorized changes to the <code>tool_servers</code> key (rule below).</li>
<li>Deploy the Sigma rule &ldquo;Detect Open WebUI Terminal Server Configuration Change&rdquo; to monitor for unauthorized changes to the <code>terminal_servers</code> key (rule below).</li>
<li>Apply available patches or upgrades to Open WebUI to versions beyond 0.8.12 as soon as they are released to address CVE-2026-44552.</li>
<li>Restrict admin access to Open WebUI instances and enforce strong password policies.</li>
<li>Review and audit existing Open WebUI deployments to ensure proper configuration and security best practices.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>cache-poisoning</category><category>redis</category><category>open-webui</category><category>vulnerability</category></item><item><title>Open WebUI Stale Admin Role Enables Post-Demotion Cross-User Note Access</title><link>https://feed.craftedsignal.io/briefs/2024-01-25-open-webui-privesc/</link><pubDate>Thu, 25 Jan 2024 12:00:00 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2024-01-25-open-webui-privesc/</guid><description>Open WebUI is vulnerable to privilege escalation; when a user connects via Socket.IO, their role is stored in an in-memory session pool, and administrative changes do not invalidate this session, allowing unauthorized access and modification of other users' notes after role revocation.</description><content:encoded><![CDATA[<p>Open WebUI, a web interface for large language models, is susceptible to a privilege escalation vulnerability stemming from how it manages user sessions via Socket.IO. Specifically, when a user establishes a connection, their role (e.g., &lsquo;admin&rsquo;) is cached in an in-memory <code>SESSION_POOL</code>. Crucially, subsequent administrative actions like role revocation or user deletion, performed through HTTP endpoints, do not invalidate existing Socket.IO sessions. As a result, a user who has been demoted or deleted can retain their previous admin privileges within the active Socket.IO session indefinitely, so long as they maintain the connection via heartbeats. This vulnerability impacts current main branch (commit <code>6fdd19bf1</code>) and likely all versions with the collaborative document (Yjs) Socket.IO handlers.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>User B authenticates as an administrator and establishes a Socket.IO connection, which stores their <code>role</code> as <code>admin</code> in the <code>SESSION_POOL</code>.</li>
<li>Administrator A demotes User B to a regular user via the <code>POST /api/v1/users/{B_id}/update</code> endpoint, modifying the user&rsquo;s role in the database.</li>
<li>The Socket.IO session remains active, and User B&rsquo;s <code>SESSION_POOL</code> entry retains the stale <code>admin</code> role.</li>
<li>User B&rsquo;s client continues sending <code>heartbeat</code> events to maintain the Socket.IO connection, refreshing only the <code>last_seen_at</code> timestamp in the <code>SESSION_POOL</code>.</li>
<li>User B sends a <code>ydoc:document:join</code> event with the <code>document_id</code> of a note belonging to another user (e.g., <code>note:&lt;victim_note_id&gt;</code>).</li>
<li>The server-side handler at <code>socket/main.py:538</code> checks the cached role from the <code>SESSION_POOL</code>, incorrectly granting access due to the stale <code>admin</code> role.</li>
<li>User B now gains read access to the victim&rsquo;s note, receives the full document state, and gets live updates.</li>
<li>User B sends a <code>ydoc:document:update</code> event, and the handler at <code>socket/main.py:611</code> bypasses authorization using the cached role, allowing User B to modify the victim&rsquo;s note&rsquo;s content.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of this vulnerability allows unauthorized read and write access to any user&rsquo;s notes. This occurs even after admin privileges have been legitimately revoked. The attacker only needs to maintain an active Socket.IO connection established while they had administrative rights, which is trivial as heartbeats keep the session alive indefinitely. This grants a false sense of security to administrators who revoke privileges, as the revocation only affects HTTP access but not real-time collaborative access.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Apply available patches or upgrade Open WebUI to a version that addresses CVE-2026-44553.</li>
<li>Implement a mechanism to invalidate Socket.IO sessions upon user role changes or deletions to prevent the use of stale privileges. Specifically, invalidate or update <code>SESSION_POOL</code> entries when user roles are modified via the <code>/api/v1/users/{B_id}/update</code> endpoint.</li>
<li>Deploy the Sigma rule &ldquo;Detect Open WebUI Note Access Attempt with Stale Admin Session&rdquo; to identify potential attempts to access notes using stale admin sessions.</li>
<li>Review and audit the implementation of the Socket.IO session management, particularly the <code>connect</code> and <code>heartbeat</code> handlers in <code>backend/open_webui/socket/main.py</code>, to ensure proper role validation.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>privilege-escalation</category><category>credential-access</category><category>cloud</category></item><item><title>Open WebUI Knowledge Base Destruction and RAG Poisoning via Unauthorized Collection Overwrite</title><link>https://feed.craftedsignal.io/briefs/2024-01-18-open-webui-rag-poisoning/</link><pubDate>Thu, 18 Jan 2024 12:00:00 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2024-01-18-open-webui-rag-poisoning/</guid><description>Open WebUI is vulnerable to knowledge base destruction and RAG poisoning due to a lack of authorization checks on the `/api/v1/retrieval/process/web` endpoint, allowing an attacker to overwrite a victim's knowledge base with attacker-controlled content.</description><content:encoded><![CDATA[<p>Open WebUI, a retrieval-augmented generation (RAG) application, is susceptible to unauthorized knowledge base modification. The vulnerability lies in the <code>process_web</code> endpoint within <code>backend/open_webui/routers/retrieval.py</code>. Specifically, the <code>POST /api/v1/retrieval/process/web</code> endpoint lacks authorization checks, which allows any authenticated user with knowledge of a target knowledge base UUID to overwrite it with arbitrary content. This is possible due to the <code>overwrite</code> parameter, which defaults to <code>True</code> and triggers the deletion of the existing vector collection before new content is written via the <code>save_docs_to_vector_db</code> function. The issue affects the current main branch (commit <code>6fdd19bf1</code>) and likely all versions with RAG functionality. An attacker can leverage this vulnerability to poison the RAG system by injecting malicious content into the knowledge base.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker gains a valid user account on the Open WebUI instance.</li>
<li>Attacker discovers the victim&rsquo;s knowledge base UUID, potentially through the <code>knowledge-bases</code> meta-collection (as mentioned in the report).</li>
<li>Attacker crafts a POST request to the <code>/api/v1/retrieval/process/web</code> endpoint, setting the <code>collection_name</code> parameter to the victim&rsquo;s KB UUID and ensures <code>overwrite=true</code>.</li>
<li>The POST request includes a <code>url</code> parameter pointing to an attacker-controlled URL containing malicious content.</li>
<li>The Open WebUI server fetches the content from the attacker-controlled URL.</li>
<li>The <code>save_docs_to_vector_db</code> function is called, which first deletes the existing vector collection associated with the victim&rsquo;s knowledge base.</li>
<li>The fetched content from the attacker&rsquo;s URL is then embedded and stored as the new content for the knowledge base.</li>
<li>When the victim queries their knowledge base, the RAG system returns the attacker-controlled content, leading to potential misinformation or malicious actions.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation leads to data destruction, where the victim&rsquo;s original knowledge base embeddings are permanently deleted from the vector store. Furthermore, the RAG system is poisoned with attacker-controlled content, causing the LLM to return misleading or malicious responses. This can enable indirect prompt injection and manipulation of the victim&rsquo;s LLM behavior. The poisoned content persists until the knowledge base is rebuilt from the original source files, creating a persistent vulnerability. Versions of open-webui up to and including 0.8.12 are affected.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Apply authorization checks to the <code>/api/v1/retrieval/process/web</code> endpoint to verify that the user has write access to the target collection, mitigating CVE-2026-44554.</li>
<li>Monitor webserver logs for POST requests to <code>/api/v1/retrieval/process/web</code> with suspicious <code>collection_name</code> parameters, using the Sigma rule &ldquo;Detect Open WebUI Unauthorized Collection Overwrite Attempt&rdquo; to identify potential exploitation attempts.</li>
<li>Inspect network traffic for connections to suspicious URLs used in the <code>url</code> parameter of the <code>/api/v1/retrieval/process/web</code> endpoint, such as the IOC <code>https://attacker.com/poison</code>.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>rag</category><category>poisoning</category><category>web-application</category></item><item><title>Open WebUI Model Chaining Access Control Bypass</title><link>https://feed.craftedsignal.io/briefs/2024-01-02-open-webui-model-bypass/</link><pubDate>Tue, 02 Jan 2024 12:00:00 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2024-01-02-open-webui-model-bypass/</guid><description>Open WebUI is vulnerable to an access control bypass due to improper model chaining, allowing a regular user to create a model that chains to a restricted base model and query it using the admin's API key, bypassing access restrictions.</description><content:encoded><![CDATA[<p>Open WebUI, a web interface for Large Language Models, is susceptible to an access control vulnerability via its model chaining feature. This feature allows users to create custom models that reference existing base models for inference. The vulnerability arises because access controls are only applied to the user-facing model, not the chained base model. An attacker with default model creation permissions can exploit this flaw to create a model that chains to a restricted or premium base model, effectively bypassing intended access restrictions and querying the restricted model using the admin-configured API key. This issue affects the current main branch (commit <code>6fdd19bf1</code>) and likely all versions with the model chaining feature.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Admin provisions a restricted model, such as <code>gpt-4-turbo-restricted</code>, and configures access control policies.</li>
<li>Attacker, without access to the restricted model, crafts a <code>POST</code> request to <code>/api/v1/models/create</code> with a payload defining a new model (e.g., <code>cheap-assistant</code>) and setting its <code>base_model_id</code> to the restricted model&rsquo;s ID.</li>
<li>The <code>create</code> endpoint lacks validation to ensure the attacker has access to the specified <code>base_model_id</code>.</li>
<li>The attacker now owns the <code>cheap-assistant</code> model, which will pass the initial <code>check_model_access</code> check.</li>
<li>The attacker sends a <code>POST</code> request to <code>/api/chat/completions</code>, specifying the newly created <code>cheap-assistant</code> model.</li>
<li>The application resolves the <code>base_model_id</code> of <code>cheap-assistant</code> to <code>gpt-4-turbo-restricted</code> within <code>main.py:1696</code>.</li>
<li>The application rewrites the <code>payload[&quot;model&quot;]</code> to the base model ID, and dispatches the upstream request using the admin-configured API key.</li>
<li>The attacker receives responses from the restricted model, successfully circumventing the intended access restrictions.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>This vulnerability allows unauthorized access to restricted models, potentially leading to increased costs on pay-per-token backends such as OpenAI or Azure, as the admin&rsquo;s API key is used for unauthorized requests. It also creates a false sense of security, as access restrictions appear to work through the standard model selector but are ineffective against user-created chains. The vulnerability can lead to direct cost impact on pay-per-token backends and erode trust in the configured access controls.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Deploy the Sigma rule <code>Detect Open WebUI Model Creation with External BaseModelID</code> to detect attempts to create models with <code>base_model_id</code> pointing to existing models, and tune the false positives for your environment.</li>
<li>Deploy the Sigma rule <code>Detect Open WebUI Chat Completion Request Using Custom Model with BaseModelID</code> to detect chat completion requests using a custom model with a <code>base_model_id</code> set.</li>
<li>Upgrade to a patched version of Open WebUI that includes proper access control validation for <code>base_model_id</code> during model creation to remediate CVE-2026-44555.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>access-control</category><category>model-chaining</category><category>open-webui</category><category>privilege-escalation</category></item></channel></rss>