← Back to CVE List
CVE-2026-102530NVD
Vulnerability Summary
Summary JupyterLab Desktop versions prior to `v4.6.2-1` inserted user-supplied remote server URLs into the application UI without sanitization or encoding - specifically in the server list of the Remote Server Select dialog and in the recent session tooltip in the Welcome view. This allowed a URL containing HTML to be interpreted as markup, enabling cross-site scripting (XSS) in the Welcome view renderer window. The Welcome view renderer had broad access to IPC methods via the `sendMessageToMain` preload bridge. An attacker who convinced a victim to connect to a malicious URL could use those IPC methods to inject arbitrary commands and achieve remote code execution with the privileges of the user running JupyterLab Desktop. This issue affects all platforms (macOS, Windows, Linux). > Note: CVE assignment pending - GitHub is experiencing a severe backlog in CVE assignment at the moment, please check back later if you need a CVE for this vulnerability. Impact An attacker who can convince a victim to enter a malicious URL into the JupyterLab Desktop "Connect to Remote Server" dialog can achieve full remote code execution on the victim's machine, with the same privileges as the user running the application. No further interaction is required after the URL is submitted. Users are affected if all of the following conditions are true: - they are running JupyterLab Desktop prior to v4.6.2-1; and - an attacker convinces them to connect to an attacker-controlled or attacker-crafted URL (for example via a phishing message, a shared configuration, or a malicious "connect to this server" instruction). Users who only ever connect to remote servers whose URLs they have independently verified, or who only use local sessions, have no exposure. Technical Details Three locations inserted external data into the DOM without encoding: the server list in `RemoteServerSelectDialog`, the recent session tooltip in `WelcomeView` (the primary PoC vector), and the news feed list in `WelcomeView`, where RSS feed values were a second independent sink. Because the Welcome view window stayed open in the background after a connection was initiated, XSS in that context had access to IPC methods via the `electronAPI` preload bridge - including `sendMessageToMain`, which accepted privileged commands such as `set-server-launch-args` and `restart-app`. Together these allowed an attacker to bridge from XSS in the renderer to arbitrary code execution on the host. Patches All three sinks are fixed in v4.6.2-1 by replacing `innerHTML` template literal interpolation with explicit DOM construction (`createElement`, `textContent`, `setAttribute`). The EJS server-side template was also hardened against script-tag breakout, and a `Content Security Policy` with `require-trusted-types-for 'script'` was added to the Welcome view as defence in depth. All users should upgrade to `v4.6.2-1`. Workarounds There are no complete workarounds. Users who cannot immediately upgrade should: - Only connect to remote Jupyter servers whose URLs have been obtained from a trusted source. - Treat any unsolicited instruction to connect to a specific remote server URL with suspicion. References - https://github.com/jupyterlab/jupyterlab-desktop/commit/f59fd4f61bc6a2ca89cf0d13dce5f60511eaef5d
CVSS v4.0 Base Metrics — Score 9.4
Attack VectorNetwork
Attack ComplexityLow
Attack RequirementsNone
Privileges RequiredNone
User InteractionActive
Confidentiality (Vulnerable System)High
Integrity (Vulnerable System)High
Availability (Vulnerable System)High
Confidentiality (Subsequent System)High
Integrity (Subsequent System)High
Availability (Subsequent System)High
Affected & Patched Versions
- jupyterlab-desktop <= v4.2.5-1
- jupyterlab-desktop 4.6.2-1