CVE-2026-73415 Overview
CVE-2026-73415 is a cross-site scripting (XSS) vulnerability in JupyterLab, an extensible environment for interactive and reproducible computing based on the Jupyter Notebook architecture. The flaw resides in packages/imageviewer/src/widget.ts, where the ImageViewer component uses URL.createObjectURL for a specially crafted SVG image and revokes the blob URL prematurely. This mishandling allows the image to retain an executable same-origin context when opened through the image viewer and then reopened in a new browser tab. An attacker who convinces a user to open a malicious SVG can execute arbitrary JavaScript in the JupyterLab origin, which can be pivoted to execute arbitrary code on the JupyterLab server. The issue is fixed in versions 4.5.10 and 4.6.2.
Critical Impact
Successful exploitation yields same-origin JavaScript execution in JupyterLab, enabling arbitrary code execution on the JupyterLab server via the authenticated user's session.
Affected Products
- JupyterLab versions prior to 4.5.10 (4.5.x branch)
- JupyterLab versions prior to 4.6.2 (4.6.x branch)
- JupyterLab packages/imageviewer component (widget.ts)
Discovery Timeline
- 2026-08-12 - CVE-2026-73415 published to the National Vulnerability Database (NVD)
- 2026-08-12 - Last updated in NVD database
- Fix released - JupyterLab v4.5.10 and v4.6.2 address the flaw
Technical Details for CVE-2026-73415
Vulnerability Analysis
The vulnerability is a cross-site scripting flaw [CWE-79] in the JupyterLab ImageViewer widget. When a user opens an image file, the viewer wraps the image blob in a URL created by URL.createObjectURL. That blob URL inherits the same-origin context of the JupyterLab application. The implementation invokes URL.revokeObjectURL too early in the widget lifecycle. Despite the early revocation, the browser retains the underlying blob reference when the image is subsequently opened in a new tab. A crafted SVG containing embedded <script> elements then executes in the JupyterLab origin.
Because JupyterLab's frontend is authorized to invoke server-side APIs, arbitrary JavaScript running in this origin can create notebooks, execute kernel code, and reach the underlying operating system. This turns a client-side XSS into full server-side arbitrary code execution.
Root Cause
The root cause is unsafe handling of user-supplied SVG content combined with an incorrect object URL lifecycle in packages/imageviewer/src/widget.ts. The ImageViewer treats SVG as a passive image format but relies on same-origin blob URLs that permit script execution when navigated to directly. Premature revocation does not neutralize the blob when the browser reopens it in a new tab.
Attack Vector
Exploitation requires user interaction. An attacker delivers a malicious .svg file to a target, for example through a shared notebook repository, a Git pull, or a file upload. The victim opens the SVG in JupyterLab's ImageViewer and then opens it in a new browser tab. The embedded script executes with the victim's JupyterLab session, allowing the attacker to invoke the kernel API and run arbitrary commands on the JupyterLab server.
The upstream security patches were delivered in the commits referenced by the JupyterLab Security Advisory GHSA-gx64-gj6p-pc4c. The relevant fixes for the ImageViewer live alongside other hardening changes in Pull Request #19184, Pull Request #19185, and Pull Request #19186. Refer to the advisory for the specific widget.ts diff. No public proof-of-concept has been released.
Detection Methods for CVE-2026-73415
Indicators of Compromise
- Unexpected .svg files containing <script> tags, javascript: URIs, or <foreignObject> elements uploaded to JupyterLab working directories.
- Kernel execution requests to /api/kernels/*/channels originating shortly after a user opens an SVG in the ImageViewer.
- Outbound network connections from the JupyterLab server process (jupyter-lab) to unfamiliar hosts following image viewer activity.
- Newly created notebook or terminal sessions that do not correlate with legitimate user actions.
Detection Strategies
- Inspect SVG files stored in JupyterLab workspaces for embedded script content, event handler attributes (onload, onclick), and external references.
- Correlate browser navigation to blob URLs with subsequent kernel API calls in JupyterLab access logs.
- Monitor the JupyterLab server for child processes spawned by kernels immediately after ImageViewer usage.
Monitoring Recommendations
- Enable verbose access logging on the Jupyter server and forward logs to a centralized analytics platform for correlation.
- Track the installed JupyterLab version across managed hosts and alert on any instance below 4.5.10 or 4.6.2.
- Watch for anomalous file uploads containing SVG payloads in shared JupyterHub or collaborative deployments.
How to Mitigate CVE-2026-73415
Immediate Actions Required
- Upgrade JupyterLab to version 4.5.10 or 4.6.2, or later, as published in the v4.5.10 release notes and v4.6.2 release notes.
- Audit shared JupyterLab environments for untrusted SVG files and remove or quarantine suspicious content.
- Restrict JupyterLab access to authenticated users and enforce strong session management to reduce the attack surface for social-engineering delivery.
Patch Information
The JupyterLab maintainers released fixes in versions 4.5.10 and 4.6.2. The 4.7.0a1 pre-release also includes the fix. See the JupyterLab Security Advisory GHSA-gx64-gj6p-pc4c for advisory details and the associated commits: commit 9365f02, commit be9303f, and commit f1beab4.
Workarounds
- Instruct users to avoid opening untrusted SVG files in the JupyterLab ImageViewer until the upgrade is applied.
- Serve JupyterLab behind a reverse proxy that enforces a strict Content Security Policy limiting inline scripts and blob URL navigation.
- Disable or remove the @jupyterlab/imageviewer-extension for high-risk multi-tenant deployments where an immediate upgrade is not feasible.
# Upgrade JupyterLab to a patched release using pip
pip install --upgrade "jupyterlab>=4.6.2"
# Or, if pinned to the 4.5.x branch
pip install --upgrade "jupyterlab>=4.5.10,<4.6"
# Verify the installed version
jupyter lab --version
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

