CVE-2026-44550: open-webui: mass assignment enables cross-user folder injection

GHSA-hr43-rjmr-7wmm MEDIUM
Published May 8, 2026
CISO Take

A mass assignment flaw in open-webui's folder API allows any authenticated user to plant arbitrary folders directly into another user's LLM workspace by injecting a victim's user_id into the POST body — bypassing server-side authorization entirely through a Pydantic misconfiguration. While CVSS scores this at Medium (5.0) and no public exploit or KEV listing exists, open-webui is the dominant frontend for self-hosted LLM deployments (Ollama, LiteLLM), making this a realistic in-platform phishing vector on any shared or enterprise deployment; the package also carries 52 prior CVEs signaling systemic security debt. Victim UUIDs are trivially obtainable via the built-in user search endpoint, reducing exploitation to two authenticated API calls with no special tooling. Upgrade to open-webui 0.9.0 immediately; if patching is delayed, add a WAF rule stripping user_id from POST /api/v1/folders/ request bodies and audit folder records for cross-user ownership anomalies.

Sources: GitHub Advisory NVD ATLAS

What is the risk?

Medium severity per CVSS (5.0, CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:L/A:N), but operationally elevated in multi-user deployments. Exploitation requires only a low-privileged authenticated account — the default for all open-webui users — and a victim UUID that is intentionally exposed by the platform's own user search endpoint. The root cause is a trivial developer error (Pydantic extra='allow' with an unguarded dict spread) requiring no AI/ML knowledge to exploit. No EPSS data is available, no active exploitation is observed, and no public PoC exists, which moderates immediate urgency. However, the 52 prior CVEs in this package signal a pattern of security debt that warrants scrutiny of the broader codebase before enterprise deployment.

How does the attack unfold?

Reconnaissance
Attacker queries GET /api/v1/users/search from their authenticated session to enumerate victim display names and corresponding user UUIDs exposed by the platform.
AML.T0087
Exploitation
Attacker sends POST /api/v1/folders/ with the victim's user_id in the JSON body; Pydantic extra='allow' accepts the field and the dict spread in insert_new_folder overwrites the server-set user_id.
AML.T0049
Persistence
The folder row is written to the database under the victim's user_id and persists across sessions — the victim has no notification and the attacker retains write access to repeat the attack.
Impact
Victim's LLM workspace renders attacker-controlled folder names, icons, and metadata in a fully trusted context, enabling phishing, targeted DoS via folder flooding, or integrity degradation of the AI workspace.
AML.T0048.003

What systems are affected?

Package Ecosystem Vulnerable Range Patched
Open WebUI pip <= 0.8.12 0.9.0
142.4K Pushed 5d ago 77% patched ~5d to patch Full package profile →

Do you use Open WebUI? You're affected.

How severe is it?

CVSS 3.1
5.0 / 10
EPSS
0.3%
chance of exploitation in 30 days
Higher than 20% of all CVEs
Exploitation Status
No known exploitation
Sophistication
Trivial

What is the attack surface?

AV AC PR UI S C I A
AV Network
AC Low
PR Low
UI None
S Changed
C None
I Low
A None

What should I do?

5 steps
  1. Upgrade to open-webui >= 0.9.0 which patches the mass assignment by enforcing server-side user_id assignment regardless of request body content.

  2. If immediate patching is not feasible, deploy a WAF rule or reverse-proxy filter to strip the user_id field from POST /api/v1/folders/ JSON bodies before they reach the application.

  3. Audit the folders database table for rows where the creating session's user_id does not match the stored user_id — compare against application access logs if available.

  4. Monitor application logs for POST /api/v1/folders/ requests that include a user_id key in the JSON body as an indicator of exploitation attempts.

  5. Evaluate whether the user search endpoint (GET /api/v1/users/search) exposes more UUID information than operationally required and consider restricting its response scope.

What does CISA's SSVC say?

Decision Track
Exploitation none
Automatable No
Technical Impact partial

Source: CISA Vulnrichment (SSVC v2.0). Decision based on the CISA Coordinator decision tree.

How is it classified?

Which compliance frameworks are affected?

This CVE is relevant to:

EU AI Act
Article 9 - Risk management system
ISO 42001
8.4 - AI system operation
NIST AI RMF
MANAGE 2.2 - Mechanisms for tracking identified AI risks
OWASP LLM Top 10
LLM07 - Insecure Plugin Design

Frequently Asked Questions

What is CVE-2026-44550?

A mass assignment flaw in open-webui's folder API allows any authenticated user to plant arbitrary folders directly into another user's LLM workspace by injecting a victim's user_id into the POST body — bypassing server-side authorization entirely through a Pydantic misconfiguration. While CVSS scores this at Medium (5.0) and no public exploit or KEV listing exists, open-webui is the dominant frontend for self-hosted LLM deployments (Ollama, LiteLLM), making this a realistic in-platform phishing vector on any shared or enterprise deployment; the package also carries 52 prior CVEs signaling systemic security debt. Victim UUIDs are trivially obtainable via the built-in user search endpoint, reducing exploitation to two authenticated API calls with no special tooling. Upgrade to open-webui 0.9.0 immediately; if patching is delayed, add a WAF rule stripping user_id from POST /api/v1/folders/ request bodies and audit folder records for cross-user ownership anomalies.

Is CVE-2026-44550 actively exploited?

No confirmed active exploitation of CVE-2026-44550 has been reported, but organizations should still patch proactively.

How to fix CVE-2026-44550?

1. Upgrade to open-webui >= 0.9.0 which patches the mass assignment by enforcing server-side user_id assignment regardless of request body content. 2. If immediate patching is not feasible, deploy a WAF rule or reverse-proxy filter to strip the user_id field from POST /api/v1/folders/ JSON bodies before they reach the application. 3. Audit the folders database table for rows where the creating session's user_id does not match the stored user_id — compare against application access logs if available. 4. Monitor application logs for POST /api/v1/folders/ requests that include a user_id key in the JSON body as an indicator of exploitation attempts. 5. Evaluate whether the user search endpoint (GET /api/v1/users/search) exposes more UUID information than operationally required and consider restricting its response scope.

What systems are affected by CVE-2026-44550?

This vulnerability affects the following AI/ML architecture patterns: Self-hosted LLM frontends, Multi-user AI assistant platforms, Enterprise LLM deployments.

What is the CVSS score for CVE-2026-44550?

CVE-2026-44550 has a CVSS v3.1 base score of 5.0 (MEDIUM). The EPSS exploitation probability is 0.29%.

What is the AI security impact?

Affected AI Architectures

Self-hosted LLM frontendsMulti-user AI assistant platformsEnterprise LLM deployments

MITRE ATLAS Techniques

AML.T0012 Valid Accounts
AML.T0048.003 User Harm
AML.T0049 Exploit Public-Facing Application
AML.T0087 Gather Victim Identity Information

Compliance Controls Affected

EU AI Act: Article 9
ISO 42001: 8.4
NIST AI RMF: MANAGE 2.2
OWASP LLM Top 10: LLM07

What are the technical details?

Original Advisory

# Mass Assignment via Pydantic extra='allow' Allows Creating Folders in Other Users' Accounts ## Affected Component Folder creation endpoint and form model: - `backend/open_webui/models/folders.py` (lines 72-77, `FolderForm` with `extra='allow'`) - `backend/open_webui/models/folders.py` (lines 95-106, `insert_new_folder` dict construction) - `backend/open_webui/routers/folders.py` (line 119, `create_folder` endpoint) ## Affected Versions Current main branch (commit `6fdd19bf1`) and likely all versions since `FolderForm` adopted `extra='allow'`. ## Description `FolderForm` uses `model_config = ConfigDict(extra='allow')`, which permits arbitrary fields to pass through Pydantic validation and be included in `model_dump(exclude_unset=True)`. In `insert_new_folder`, the server-assigned `user_id` is placed at the start of the dict and then overwritten by the spread of form data: ```python # models/folders.py:95-106 folder = FolderModel( **{ 'id': id, # server 'user_id': user_id, # server — overwritten below **(form_data.model_dump(exclude_unset=True) or {}), # user-controlled (extra='allow') 'parent_id': parent_id, 'created_at': int(time.time()), 'updated_at': int(time.time()), } ) ``` Because `FolderModel` declares `user_id: str` as a real field (not just a form extra), any attacker-supplied `user_id` in the POST body is accepted by the model and persisted on the `Folder` row. ## Attack Scenario 1. Attacker discovers a victim's user ID. User UUIDs commonly leak via the user search endpoint (`GET /api/v1/users/search`, intentionally accessible to verified users for sharing UI), shared chat metadata, or channel member lists. 2. Attacker sends: ``` POST /api/v1/folders/ { "name": "Important: Click here", "user_id": "<victim_user_id>", "meta": {"icon": "warning"}, "data": {...} } ``` 3. Pydantic accepts the extra `user_id` field (allowed by `extra='allow'`). 4. `insert_new_folder` spreads the form data over the server-set `'user_id': user_id`, overwriting it with the attacker's value. 5. The `Folder` row is persisted with `user_id = <victim_user_id>`. 6. The victim sees the attacker-planted folder in their UI on next load because `GET /api/v1/folders/` filters by the viewer's own `user_id`. The attacker can repeat this to plant multiple folders, use crafted `name` values for phishing ("Click here to recover account" / "Security alert"), and abuse the `meta` and `data` fields to add visual elements that further mimic legitimate content. ## Impact - Unauthorized write into victim's folder tree - Phishing surface: attacker-controlled `name`, `meta`, and `data` render in the victim's UI in a trusted context - DoS / spam: attacker can flood a victim with arbitrary folders; victim must manually delete each one - Attacker cannot read the folder back — all read paths filter by the caller's own `user_id` — so confidentiality is preserved, but integrity and trust are compromised ## Preconditions - Attacker must have an authenticated account with `features.folders` permission (default for all users) - Attacker must know or guess the victim's user UUID (obtainable through various non-sensitive endpoints)

Exploitation Scenario

An attacker with a standard authenticated account on a shared enterprise open-webui instance first queries GET /api/v1/users/search to enumerate colleague UUIDs by display name. They identify a high-value target — a CISO, finance executive, or privileged admin — and craft a POST to /api/v1/folders/ including the victim's user_id and a deceptive folder name such as 'URGENT: Security Policy Update Required' with meta fields setting a warning icon. Pydantic accepts the extra user_id field (extra='allow'), and the dict spread in insert_new_folder overwrites the server-set user_id with the attacker's value. On the victim's next login, the injected folder appears in their LLM workspace as a trusted system element, potentially directing them to attacker-crafted prompts, social engineering content, or malicious links — all within the fully trusted context of their AI assistant.

Weaknesses (CWE)

CWE-862 — Missing Authorization: The product does not perform an authorization check when an actor attempts to access a resource or perform an action.

  • [Architecture and Design] Divide the product into anonymous, normal, privileged, and administrative areas. Reduce the attack surface by carefully mapping roles with data and functionality. Use role-based access control (RBAC) [REF-229] to enforce the roles at the appropriate boundaries. Note that this approach may not protect against horizontal authorization, i.e., it will not protect a user from attacking others with the same role.
  • [Architecture and Design] Ensure that access control checks are performed related to the business logic. These checks may be different than the access control checks that are applied to more generic resources such as files, connections, processes, memory, and database records. For example, a database may restrict access for medical records to a specific database user, but each record might only be intended to be accessible to the patient and the patient's doctor [REF-7].

Source: MITRE CWE corpus.

CVSS Vector

CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:L/A:N

Timeline

Published
May 8, 2026
Last Modified
May 8, 2026
First Seen
May 8, 2026

Related Vulnerabilities