Open WebUI Vulnerable to Cross-Site Request Forgery (CSRF) via Image URL Manipulation
Medium4.6CVE-2026-45317 · Published May 14, 2026 · updated Jul 13, 2026
Affected versions
| Package | Affected | Fixed in |
|---|---|---|
| open-webui PyPI | < 0.9.3 | 0.9.3 |
Details and references
## Summary An application-wide Cross-Site Request Forgery (CSRF) vulnerability was found Open-WebUl's image uploading functionality. An attacker can set an image URL to a malicious endpoint, allowing them to perform actions on behalf of a victim user. Any authenticated user can exploit this vulnerability, and any user who views the compromised image (e.g., a profile picture) will unknowingly send a GET request to the attacker-controlled URL. This can lead to cookie theft, denial of service (DoS), or other malicious actions. This can be exploited in various locations, including: • Profile picture • Model picture • Hidden images in shared chats • Images within shared notes ## Details ### Vulnerable Code: This appears to occur in most locations where images can be uploaded/rendered. Here are found sinks: **Profile Image in chat** • Note: rendering profile picture in chat • Location: https://github.com/open-webui/open-webui/blob/2407d9b905978d68619bdce4021e424046ec8df9/src/lib/components/chat/Messages/ProfileImage.svelte#L16Code **Profile Picture edit** • Note: Profile picture rendering in edit • Location: https://github.com/open-webui/open-webui/blob/2407d9b905978d68619bdce4021e424046ec8df9/src/lib/components/chat/Settings/Account.svelte#L205 **Profile Image Navbar** • Note: Profile picture rendering in navbar • Location: https://github.com/open-webui/open-webui/blob/2407d9b905978d68619bdce4021e424046ec8df9/src/lib/components/chat/Navbar.svelte#L237 **Profile Image UserList** • Note: rendering images in user list admin panel • Location: https://github.com/open-webui/open-webui/blob/2407d9b905978d68619bdce4021e424046ec8df9/src/lib/components/admin/Users/UserList.svelte#L399 **Images in chat** • Note: rendering images in chat • Location: https://github.com/open-webui/open-webui/blob/2407d9b905978d68619bdce4021e424046ec8df9/src/lib/components/common/Image.svelte#L35 **Image in chat** • Note: Image sent in chat • Location: https://github.com/open-webui/open-webui/blob/2407d9b905978d68619bdce4021e424046ec8df9/src/lib/components/channel/Messages/Message.svelte#L192 **Model image in chat** • Note: Model image rendering in chat • Location: https://github.com/open-webui/open-webui/blob/2407d9b905978d68619bdce4021e424046ec8df9/src/lib/components/chat/Placeholder.svelte#L128 **Model image in chat response** • Note: Model image rendering in the assistant response • Location: https://github.com/open-webui/open-webui/blob/2407d9b905978d68619bdce4021e424046ec8df9/src/lib/components/chat/Messages/ResponseMessage.svelte#L612 **Model Image Admin settings** • Note: Model image rendering in the admin settings • Location: https://github.com/open-webui/open-webui/blob/2407d9b905978d68619bdce4021e424046ec8df9/src/lib/components/admin/Settings/Models.svelte#L336 **Model Image Workspace** • Note: Model image rendering in the workspace • Location: https://github.com/open-webui/open-webui/blob/2407d9b905978d68619bdce4021e424046ec8df9/src/lib/components/workspace/Models.svelte#L336 **Model Image Edit** • Note: Model image rendering in the edit modal • Location: https://github.com/open-webui/open-webui/blob/2407d9b905978d68619bdce4021e424046ec8df9/src/lib/components/workspace/Models/ModelEditor.svelte#L407 **Image in Notes** • Note: Image rendering in shared note • Location: https://github.com/open-webui/open-webui/blob/2407d9b905978d68619bdce4021e424046ec8df9/src/lib/components/common/RichTextInput/Image/image.ts#L140 • Location: https://github.com/open-webui/open-webui/blob/2407d9b905978d68619bdce4021e424046ec8df9/src/lib/components/chat/Messages/UserMessage.svelte#L184 **Root Cause** 1. Insecure display of image • Application is sending a GET request to the unvalidated image url 2. Lack of Input Validation • Image url is not validated for filetype ## PoCs ### PoC (profile picture) **Environment** • Open-WebUl latest version (v0.6.41) • Valid user **Step 1: Create a Malicious Link** • Set up a ser
More Open WebUI advisories
All Open WebUI| Date | Advisory | Severity | Fixed in |
|---|---|---|---|
| May 14 | Open WebUI has Stored Cross-Site Scripting In Profile Picture CVE-2026-45299Medium5.4fixed in 0.8.0 | Medium5.4 | 0.8.0 |
| May 14 | Open WebUI: Missing permission check in files API allows authenticated users to list, access and delete every uploaded file CVE-2026-45301High8.1fixed in 0.3.16 | High8.1 | 0.3.16 |
| May 14 | Open WebUI has stored XSS via the HTML renedering view CVE-2026-45303High7.7fixed in 0.6.5 | High7.7 | 0.6.5 |
| May 14 | Open WebUI has stored XSS via attacker-controlled file extension in /api/v1/audio/transcriptions CVE-2026-45315High8.7fixed in 0.9.3 | High8.7 | 0.9.3 |
| May 14 | Open WebUI has XSS via SVG in /api/v1/channels/webhooks/{webhook_id}/profile/image CVE-2026-45314High6.1fixed in 0.9.3 | High6.1 | 0.9.3 |
| May 14 | Open WebUI: Read-Only Users Can Toggle Note Pin Status via Incorrect Permission Check (Write via Read-Only Access) CVE-2026-45316Low3.5fixed in 0.9.3 | Low3.5 | 0.9.3 |