Skip to main content

Open WebUI CVE-2026-44566

HIGH
Path Traversal (CWE-22)
2026-05-08 https://github.com/open-webui/open-webui GHSA-9pgh-j74g-qj6m
7.3
CVSS 3.1 · GitHub Advisory
Share

Severity by source

GitHub Advisory PRIMARY
7.3 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L
vuln.today AI
8.8 HIGH

Endpoint requires an authenticated session (get_current_user, JWT in PoC) so PR:L; unsanitized arbitrary file write enables RCE via pickle/authorized_keys, yielding high C/I/A.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from GitHub Advisory.

CVSS VectorGitHub Advisory

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
Low
Availability
Low

Lifecycle Timeline

3
Source Code Evidence Fetched
Jul 24, 2026 - 00:24 vuln.today
Analysis Generated
Jul 24, 2026 - 00:24 vuln.today
CVE Published
May 08, 2026 - 22:38 nvd
HIGH 7.3

DescriptionGitHub Advisory

CONFIDENTIAL

KL-CAN-2024-002

Vulnerability Details

| Field | Value |

|

|---|-------|-------| | 1 | Discoverer | Jaggar Henry & Sean Segreti of KoreLogic, Inc. | | 2 | Date Submitted | 2024.03.12 | | 3 | Title | Open WebUI Arbitrary File Upload + Path Traversal | | 5 | Affected Vendor | Open WebUI | | 6 | Affected Product(s) | Open WebUI (Formerly Ollama WebUI) | | 7 | Affected Version(s) | 0.1.105 | | 8 | Platform/OS | Debian GNU/Linux 12 (bookworm) | | 9 | Vector | HTTP web interface | | 10 | CWE | CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal'), CWE-434: Unrestricted Upload of File with Dangerous Type | ---

4. High-level Summary

Attacker controlled files can be uploaded to arbitrary locations on the web server's filesystem by abusing a path traversal vulnerability.

---

11. Technical Analysis

When attaching files to a prompt by clicking the plus sign (+) on the left of the message input box when using the Open WebUI HTTP interface, the file is uploaded to a static upload directory.

The name of the file is derived from the original HTTP upload request and is not validated or sanitized. This allows for users to upload files with names containing dot-segments in the file path and traverse out of the intended uploads directory. Effectively, users can upload files anywhere on the filesystem the user running the web server has permission.

This can be visualized by examining the python code for the /rag/api/v1/doc API route:

python
@app.post("/doc")
def store_doc(
    collection_name: Optional[str] = Form(None),
    file: UploadFile = File(...),
    user=Depends(get_current_user),
):
# "https://www.gutenberg.org/files/1727/1727-h/1727-h.htm"

    print(file.content_type)
    try:
        filename = file.filename
        file_path = f"{UPLOAD_DIR}/{filename}"
        contents = file.file.read()
        with open(file_path, "wb") as f:
            f.write(contents)
            f.close()

The file variable is a representation of the multipart form data contained within the HTTP POST request. The filename variable is derived from the uploaded file name and is not validated before writing the file contents to disk.

This can be used to upload malicious models. These models are often distributed as pickled python objects and can be leveraged to execute arbitrary python bytecode once deserialized. Alternatively, an attacker can leverage existing services, such as SSH, to upload an attacker controlled authorized_keys file to remotely connect to the machine.

---

12. Proof-of-Concept

Execute the following cURL command:

bash
TARGET_URI='https://redacted.com'; JWT='redacted'; LOCAL_FILE='/tmp/file_to_upload.txt'\
curl -H "Authorization: Bearer $JWT" -F "file=$LOCAL_FILE;filename=../../../../../../../../../../tmp/pwned.txt" "$TARGET_URI/rag/api/v1/doc"

Verify the file pwned.txt exists in the /tmp/ directory on the machine hosting the web server:

console
ollama@webserver:~$ cat /tmp/pwned.txt
korelogic
ollama@webserver:~$

AnalysisAI

Arbitrary file write in Open WebUI (formerly Ollama WebUI) 0.1.105 through 0.1.123 lets a user of the chat interface abuse the /rag/api/v1/doc document-upload endpoint to plant attacker-controlled files anywhere the web server process can write. Because the uploaded filename is used verbatim to build the destination path, dot-segment traversal (../../) escapes the uploads directory, enabling code execution by dropping a malicious pickled model or an SSH authorized_keys file. Publicly available exploit code exists (a working cURL PoC is published in the KoreLogic/GHSA advisory), but there is no confirmed active exploitation; EPSS is low at 0.06% (17th percentile).

Technical ContextAI

Open WebUI is a Python (FastAPI) web front-end for large-language-model backends such as Ollama, distributed via the pip package open-webui. The flaw is a classic CWE-22 path traversal combined with CWE-434 unrestricted file upload: the store_doc() handler for the /rag/api/v1/doc route reads file.filename directly from the multipart request and interpolates it into f"{UPLOAD_DIR}/{filename}" with no sanitization, normalization, or containment check before open(file_path, 'wb'). Supplying a filename like ../../../../tmp/pwned.txt causes the write to land outside UPLOAD_DIR. The impact is amplified by the ML deployment context - model files are frequently Python pickles that execute arbitrary bytecode on deserialization - so an attacker-planted 'model' can turn a file write into remote code execution.

RemediationAI

Vendor-released patch: 0.1.124 - upgrade Open WebUI to 0.1.124 or later (all versions up to and including 0.1.123 are affected), following GHSA-9pgh-j74g-qj6m at https://github.com/open-webui/open-webui/security/advisories/GHSA-9pgh-j74g-qj6m. Where immediate upgrade is not possible, restrict network exposure of the interface (place it behind authentication and a reverse proxy, and do not expose /rag/api/v1/doc to untrusted networks), and run the service as a low-privilege, sandboxed account whose write permissions are confined to the intended uploads directory (for example via a read-only root filesystem or container with a single writable volume) so traversal cannot reach sensitive paths like SSH authorized_keys or system binaries - the trade-off is that document-upload/RAG ingestion features may break if the account is over-constrained. Avoid loading untrusted model/pickle files, and monitor the uploads directory and home directories for unexpected file writes as a detection control.

More in Python

View all
CVE-2025-24016 CRITICAL POC
9.9 Feb 10

Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t

CVE-2025-27520 CRITICAL POC
9.8 Apr 04

BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser

CVE-2025-2945 CRITICAL POC
9.9 Apr 03

pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi

CVE-2013-5093 MEDIUM POC
6.8 Sep 27

The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python

CVE-2025-32375 CRITICAL POC
9.8 Apr 09

BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica

CVE-2014-0224 HIGH POC
7.4 Jun 05

OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph

CVE-2024-21644 HIGH POC
7.5 Jan 08

pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.

CVE-2026-33017 CRITICAL POC
9.3 Mar 17

Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301

CVE-2017-9462 HIGH POC
8.8 Jun 06

In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse

CVE-2026-49869 CRITICAL POC
10.0 Jun 26

Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to

CVE-2026-39987 CRITICAL POC
9.3 Apr 08

Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/

CVE-2024-21645 MEDIUM POC
5.3 Jan 08

pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne

Share

CVE-2026-44566 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy