{"description":"Trending threats, MITRE ATT\u0026CK coverage, and detection metadata. Fed continuously.","feed_url":"https://feed.craftedsignal.io/tags/open-webui/","home_page_url":"https://feed.craftedsignal.io/","items":[{"_cs_actors":[],"_cs_cpes":[],"_cs_cves":[],"_cs_exploited":false,"_cs_has_poc":false,"_cs_poc_references":[],"_cs_products":["open-webui (\u003c= 0.8.12)"],"_cs_severities":["critical"],"_cs_tags":["authentication-bypass","ldap","open-webui"],"_cs_type":"advisory","_cs_vendors":[],"content_html":"\u003cp\u003eOpen 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 \u003ccode\u003eLdapForm\u003c/code\u003e Pydantic model accepts an empty string for the password field without any minimum length constraint. Subsequently, the \u003ccode\u003eConnection.bind()\u003c/code\u003e 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 \u003ccode\u003e6fdd19bf1\u003c/code\u003e) 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.\u003c/p\u003e\n\u003ch2 id=\"attack-chain\"\u003eAttack Chain\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003eLDAP authentication is enabled on the Open WebUI instance (\u003ccode\u003eENABLE_LDAP=True\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eThe attacker identifies a valid LDAP username.\u003c/li\u003e\n\u003cli\u003eThe underlying LDAP server accepts unauthenticated simple binds (OpenLDAP default, some AD configs).\u003c/li\u003e\n\u003cli\u003eAttacker sends a POST request to \u003ccode\u003e/api/v1/auths/ldap\u003c/code\u003e with the target username and an empty password.\u003c/li\u003e\n\u003cli\u003eThe application\u0026rsquo;s DN bind succeeds, finding the target user via LDAP search.\u003c/li\u003e\n\u003cli\u003eThe application attempts a user bind using the provided (empty) password.\u003c/li\u003e\n\u003cli\u003eThe LDAP server returns success for the unauthenticated bind due to the empty password.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eauthenticate_user_by_email\u003c/code\u003e issues a full session token for the target user, granting complete account access.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"impact\"\u003eImpact\u003c/h2\u003e\n\u003cp\u003eSuccessful 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.\u003c/p\u003e\n\u003ch2 id=\"recommendation\"\u003eRecommendation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eApply the mitigations recommended in GHSA-2r4p-jpmg-48f4 to prevent empty passwords from being used in LDAP authentication.\u003c/li\u003e\n\u003cli\u003eDeploy the Sigma rule \u0026ldquo;Detect Open WebUI LDAP Authentication Bypass Attempt\u0026rdquo; to monitor for POST requests to the \u003ccode\u003e/api/v1/auths/ldap\u003c/code\u003e endpoint with an empty password field, indicating a potential exploit attempt.\u003c/li\u003e\n\u003cli\u003eEnsure the LDAP server is configured to reject unauthenticated simple binds with empty passwords.\u003c/li\u003e\n\u003cli\u003eMonitor web server logs for POST requests to \u003ccode\u003e/api/v1/auths/ldap\u003c/code\u003e (webserver log source) and correlate with other authentication-related events.\u003c/li\u003e\n\u003c/ul\u003e\n","date_modified":"2026-05-08T19:38:31Z","date_published":"2026-05-08T19:38:31Z","id":"/briefs/2024-01-24-open-webui-ldap-bypass/","summary":"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.","title":"Open WebUI LDAP Empty Password Authentication Bypass","url":"https://feed.craftedsignal.io/briefs/2024-01-24-open-webui-ldap-bypass/"},{"_cs_actors":[],"_cs_cpes":[],"_cs_cves":[],"_cs_exploited":false,"_cs_has_poc":false,"_cs_poc_references":[],"_cs_products":["open-webui (\u003c= 0.8.12)","Redis"],"_cs_severities":["high"],"_cs_tags":["cache-poisoning","redis","open-webui","vulnerability"],"_cs_type":"advisory","_cs_vendors":["Redis"],"content_html":"\u003cp\u003eOpen 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 \u003ccode\u003eREDIS_KEY_PREFIX\u003c/code\u003e usage for the \u003ccode\u003etool_servers\u003c/code\u003e and \u003ccode\u003eterminal_servers\u003c/code\u003e keys in \u003ccode\u003eutils/tools.py\u003c/code\u003e. 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 \u003ccode\u003e6fdd19bf1\u003c/code\u003e) 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 \u003ccode\u003eREDIS_KEY_PREFIX\u003c/code\u003e aims to provide, potentially impacting blue-green deployments, multi-region setups, and cluster topologies.\u003c/p\u003e\n\u003ch2 id=\"attack-chain\"\u003eAttack Chain\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003eAn 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.\u003c/li\u003e\n\u003cli\u003eThe attacker configures a malicious tool server on Instance A, pointing to \u003ccode\u003ehttps://attacker-controlled.example.com/openapi.json\u003c/code\u003e. This configuration triggers a write to the \u003ccode\u003etool_servers\u003c/code\u003e Redis key without the \u003ccode\u003eREDIS_KEY_PREFIX\u003c/code\u003e (line 841 in \u003ccode\u003eutils/tools.py\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eUsers on Open WebUI Instance B attempt to query available tools. This action triggers a read from the same unprefixed \u003ccode\u003etool_servers\u003c/code\u003e Redis key (line 850 in \u003ccode\u003eutils/tools.py\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eInstance B retrieves the attacker\u0026rsquo;s poisoned tool server list from Instance A, which now includes the attacker\u0026rsquo;s server, possibly replacing legitimate tool servers.\u003c/li\u003e\n\u003cli\u003eA 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.\u003c/li\u003e\n\u003cli\u003eThe attacker\u0026rsquo;s server responds with arbitrary tool outputs, which are then fed back into Instance B\u0026rsquo;s LLM context.\u003c/li\u003e\n\u003cli\u003eThe malicious tool output is treated as trusted data within Instance B\u0026rsquo;s LLM, enabling prompt injection and misinformation delivery.\u003c/li\u003e\n\u003cli\u003eThe attacker leverages prompt injection and misinformation delivery to further compromise Instance B and exfiltrate sensitive data.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"impact\"\u003eImpact\u003c/h2\u003e\n\u003cp\u003eSuccessful exploitation of this vulnerability leads to cross-instance cache poisoning, where one instance\u0026rsquo;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\u0026rsquo;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\u0026rsquo;s silent failure mode makes detection difficult for victim instances.\u003c/p\u003e\n\u003ch2 id=\"recommendation\"\u003eRecommendation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDeploy the Sigma rule \u0026ldquo;Detect Open WebUI Tool Server Configuration Change\u0026rdquo; to monitor for unauthorized changes to the \u003ccode\u003etool_servers\u003c/code\u003e key (rule below).\u003c/li\u003e\n\u003cli\u003eDeploy the Sigma rule \u0026ldquo;Detect Open WebUI Terminal Server Configuration Change\u0026rdquo; to monitor for unauthorized changes to the \u003ccode\u003eterminal_servers\u003c/code\u003e key (rule below).\u003c/li\u003e\n\u003cli\u003eApply available patches or upgrades to Open WebUI to versions beyond 0.8.12 as soon as they are released to address CVE-2026-44552.\u003c/li\u003e\n\u003cli\u003eRestrict admin access to Open WebUI instances and enforce strong password policies.\u003c/li\u003e\n\u003cli\u003eReview and audit existing Open WebUI deployments to ensure proper configuration and security best practices.\u003c/li\u003e\n\u003c/ul\u003e\n","date_modified":"2024-05-09T12:00:00Z","date_published":"2024-05-09T12:00:00Z","id":"/briefs/2024-05-open-webui-cache-poisoning/","summary":"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.","title":"Open WebUI Cross-Instance Cache Poisoning Vulnerability","url":"https://feed.craftedsignal.io/briefs/2024-05-open-webui-cache-poisoning/"},{"_cs_actors":[],"_cs_cpes":[],"_cs_cves":[],"_cs_exploited":false,"_cs_has_poc":false,"_cs_poc_references":[],"_cs_products":["open-webui (\u003c= 0.8.12)"],"_cs_severities":["high"],"_cs_tags":["access-control","model-chaining","open-webui","privilege-escalation"],"_cs_type":"advisory","_cs_vendors":["Open WebUI"],"content_html":"\u003cp\u003eOpen 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 \u003ccode\u003e6fdd19bf1\u003c/code\u003e) and likely all versions with the model chaining feature.\u003c/p\u003e\n\u003ch2 id=\"attack-chain\"\u003eAttack Chain\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003eAdmin provisions a restricted model, such as \u003ccode\u003egpt-4-turbo-restricted\u003c/code\u003e, and configures access control policies.\u003c/li\u003e\n\u003cli\u003eAttacker, without access to the restricted model, crafts a \u003ccode\u003ePOST\u003c/code\u003e request to \u003ccode\u003e/api/v1/models/create\u003c/code\u003e with a payload defining a new model (e.g., \u003ccode\u003echeap-assistant\u003c/code\u003e) and setting its \u003ccode\u003ebase_model_id\u003c/code\u003e to the restricted model\u0026rsquo;s ID.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ecreate\u003c/code\u003e endpoint lacks validation to ensure the attacker has access to the specified \u003ccode\u003ebase_model_id\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe attacker now owns the \u003ccode\u003echeap-assistant\u003c/code\u003e model, which will pass the initial \u003ccode\u003echeck_model_access\u003c/code\u003e check.\u003c/li\u003e\n\u003cli\u003eThe attacker sends a \u003ccode\u003ePOST\u003c/code\u003e request to \u003ccode\u003e/api/chat/completions\u003c/code\u003e, specifying the newly created \u003ccode\u003echeap-assistant\u003c/code\u003e model.\u003c/li\u003e\n\u003cli\u003eThe application resolves the \u003ccode\u003ebase_model_id\u003c/code\u003e of \u003ccode\u003echeap-assistant\u003c/code\u003e to \u003ccode\u003egpt-4-turbo-restricted\u003c/code\u003e within \u003ccode\u003emain.py:1696\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe application rewrites the \u003ccode\u003epayload[\u0026quot;model\u0026quot;]\u003c/code\u003e to the base model ID, and dispatches the upstream request using the admin-configured API key.\u003c/li\u003e\n\u003cli\u003eThe attacker receives responses from the restricted model, successfully circumventing the intended access restrictions.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"impact\"\u003eImpact\u003c/h2\u003e\n\u003cp\u003eThis 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\u0026rsquo;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.\u003c/p\u003e\n\u003ch2 id=\"recommendation\"\u003eRecommendation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDeploy the Sigma rule \u003ccode\u003eDetect Open WebUI Model Creation with External BaseModelID\u003c/code\u003e to detect attempts to create models with \u003ccode\u003ebase_model_id\u003c/code\u003e pointing to existing models, and tune the false positives for your environment.\u003c/li\u003e\n\u003cli\u003eDeploy the Sigma rule \u003ccode\u003eDetect Open WebUI Chat Completion Request Using Custom Model with BaseModelID\u003c/code\u003e to detect chat completion requests using a custom model with a \u003ccode\u003ebase_model_id\u003c/code\u003e set.\u003c/li\u003e\n\u003cli\u003eUpgrade to a patched version of Open WebUI that includes proper access control validation for \u003ccode\u003ebase_model_id\u003c/code\u003e during model creation to remediate CVE-2026-44555.\u003c/li\u003e\n\u003c/ul\u003e\n","date_modified":"2024-01-02T12:00:00Z","date_published":"2024-01-02T12:00:00Z","id":"/briefs/2024-01-02-open-webui-model-bypass/","summary":"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.","title":"Open WebUI Model Chaining Access Control Bypass","url":"https://feed.craftedsignal.io/briefs/2024-01-02-open-webui-model-bypass/"}],"language":"en","title":"CraftedSignal Threat Feed — Open-Webui","version":"https://jsonfeed.org/version/1.1"}