Executive brief
JupyterLab's Extension Manager is a feature that allows users to discover and install extensions to enhance the notebook environment. A vulnerability in the Extension Manager fails to validate protocol types in package metadata URLs, allowing an attacker to publish a malicious PyPI package with JavaScript execution code embedded in the project metadata. When a user clicks on the extension name, arbitrary JavaScript executes in the JupyterLab application context, potentially leading to credential theft, data exfiltration, or unauthorized actions.
Technical details
This is a stored cross-site scripting (XSS) vulnerability in JupyterLab's Extension Manager component, specifically in the `homepage_url` field handling within package metadata. The vulnerability arises from insufficient URI protocol validation when rendering extension names as clickable links. An attacker can publish a malicious PyPI package with a `javascript:` URL in the project metadata; when a JupyterLab user clicks the extension name link, the JavaScript URL executes in the JupyterLab origin context. No user authentication is required; exploitation requires that a user install and view a malicious extension in the Extension Manager. The fix restricts allowed URL protocols (e.g., to http/https only) and forbids relative URLs to prevent JavaScript protocol execution. Patches are available in JupyterLab 4.5.9 and later.
Affected products
- JupyterLab JupyterLab before 4.5.9
Timeline
- 2026-08-01: disclosed
- 2026: patched: Fix released in JupyterLab 4.5.9