CSIRTS // UNIFIED SECURITY ADVISORY FEEDSYS ● ONLINE · POWERED BY INTELFUSIONS.COM

GHSA-74h3-cxq7-vc5q: Open WebUI: Cross-user code-interpreter and tool execution via unvalidated Socket.IO event-caller session_id

highCVSS 7.7CVE-2026-59216
Summary An authenticated low-privilege user can execute arbitrary code-interpreter Python and tools inside another user's authenticated session. The Socket.IO event-caller (get_event_call) delivers execute:python / execute:tool events to a client-supplied session_id after only checking that the session is connected, never that it belongs to the requester. Combined with ydoc:document:join, which exposes the live socket ids of everyone in a shared note's collaboration room to any read-access participant, an attacker can target a victim's session and run attacker-chosen code/tools in the victim's browser context. When the victim is an administrator, that hijacked context reaches the admin-only Functions API, whose source is executed server-side, yielding remote code execution as the server process (root in the default container). Affected component - backend/open_webui/socket/main.py — get_event_call() / __event_caller__ - backend/open_webui/main.py — chat-completion metadata (session_id taken from the request body) Root cause The event-caller routes to a caller-controlled session id with no ownership check: backend/open_webui/socket/main.py — get_event_call() async def __event_caller__(event_data): session_id = request_info['session_id'] if session_id not in SESSION_POOL: # only checks the session is connected return {'error': 'Client session disconnected.'} return await sio.call('events', {...}, to=session_id, ...) # delivered to that sid session_id originates from the request body and is never validated against the authenticated user: backend/open_webui/main.py metadata = { 'user_id': user.id, # server-derived (trustworthy) 'session_id': form_data.pop('session_id', None), # client-controlled ... } SESSION_POOL[session_id] is the user record of whoever owns that socket. Because the caller checks only membership (in SESSION_POOL), a request carrying another user's session_id causes execute:python / execute:tool to be delivered to that other user's browser. R

Details

Source
GitHub Security Advisories (INTL · database · site)
Severity
high — CVSS 7.7
Published
2026-07-24
Last updated
2026-07-24
Exploitation
Not in CISA KEV at last sync

Original advisory: https://github.com/advisories/GHSA-74h3-cxq7-vc5q

Exploitation outlook

EPSS (FIRST.org) estimates each CVE’s probability of exploitation in the next 30 days — here is the CSIRTS.com read on those numbers.

Referenced CVEs

CVECSIRTS overviewExternal
CVE-2026-59216coverage & exploitation statusNVD · CVE.org

Same CVEs, other sources

How other CERTs, PSIRTs and databases cover the vulnerabilities in this advisory.

More from GitHub Security Advisories