CVE-2026-73416 json
jupyterlab: PyPI extension blocklist package-name canonicalization bypass
published 2026-07-22 3 mo ago modified 2026-09-18 51 d ago also BIT-jupyterlab-2026-73416 , EUVD-2026-58521 , GHSA-89vp-jrxv-24w8 , PYSEC-2026-3670
- cvss
- 6.1
- version 4.0, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.7%
- EPSS 0.7% chance of exploitation in 30 days, percentile 52%
- public exploits
- 0
- none known
Summary
jupyterlab is an extensible environment for interactive and reproducible computing, based on the Jupyter Notebook Architecture. From 4.5.0 until 4.5.10 and 4.6.2, in jupyterlab/extensions/manager.py and jupyterlab/extensions/pypi.py, JupyterLab's PyPI extension manager enforces blocked_extensions_uris by comparing requested install names to blocklist entries with custom normalization that is weaker than PyPI package-name canonicalization. An authenticated user can request a PyPI-equivalent spelling such as JupyterLab.Git for a blocklisted package such as jupyterlab-git, and JupyterLab accepts the install request even though pip resolves the variant to the same package. Security impact requires an allowlist or blocklist intended to restrict package installation, the PyPI Extension Manager, and kernels and terminals that are disabled or delegated to remote hosts. The bypass lets an authenticated user install a prohibited extension, defeat integrity restrictions, and affect availability without gaining new read access. This issue is fixed in versions 4.5.10 and 4.6.2.
Patch / fix
- pypi jupyterlab 4.5.10, 4.6.2
- bitnami jupyterlab 4.5.10, 4.6.2
- jupyter jupyterlab 4.5.10, 4.6.2
- jupyterlab Debian 14 4.4.10+ds1+~3.1.0+~0.16.6+~cs1.4.4-4
debian advisories DEBIAN-CVE-2026-73416
- python-jupyterlab openSUSE Tumbleweed 4.5.10-1.1
opensuse advisories openSUSE-SU-2026:11634-1
- github.com/jupyterlab/jupyterlab@9365f02 commit
- github.com/jupyterlab/jupyterlab@be9303f commit
- github.com/jupyterlab/jupyterlab@f1beab4 commit
- github.com/jupyterlab/jupyterlab#19184 pull request
- github.com/jupyterlab/jupyterlab#19185 pull request
- github.com/jupyterlab/jupyterlab#19186 pull request
- github.com/jupyterlab/jupyterlab/releases/tag/v4.5.10 release
- github.com/jupyterlab/jupyterlab/releases/tag/v4.6.2 release
- github.com/jupyterlab/jupyterlab/releases/tag/v4.7.0a1 release
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2026-73416 updated cvss 6.3
jupyterlab: jupyterlab: Extension blocklist bypass via weak package-name canonicalization
-
Red Hat Migration Toolkit for Applications 8 mta/mta-solution-server-rhel9affected: workaround, no fix planned “Out of support scope”
-
Red Hat OpenShift AI (RHOAI) rhoai/odh-feature-server-rhel9, rhoai/odh-th06-cpu-torch210-py312-rhel9, rhoai/odh-th06-cpu-torch291-py312-rhel9, rhoai/odh-th06-rocm64-torch291-py312-rhel9, rhoai/odh-th06-cuda130-torch210-py312-rhel9, rhoai/odh-th06-cuda130-torch291-py312-rhel9, +10 moreaffected: workaround, no fix available “Fix deferred”
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
CISA SSVC
- Exploitation
- none
- Automatable
- no
- Technical impact
- partial
- Assessed
- 2 mo ago
Exploit prediction
0.66% chance of exploitation in the next 30 days, higher than 52% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 4.0 | 6.1 | CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:L/VI:H/VA:L/SC:N/SI:N/SA:N |
| CNA | 4.0 | 6.1 | CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:L/VI:H/VA:L/SC:N/SI:N/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 |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| pypi | jupyterlab | >=4.6.0, <4.6.2 >=4.5.0, <4.5.10 |
4.6.2 4.5.10 |
| bitnami | jupyterlab | >=4.5.0, <4.5.10 >=4.6.0, <4.6.2 |
4.5.10 4.6.2 |
Affected products
- jupyterlab jupyterlab
Classification
References
-
github.com
/jupyterlab/jupyterlab/pull/19184
web
-
github.com
/jupyterlab/jupyterlab/pull/19185
web
-
github.com
/jupyterlab/jupyterlab/pull/19186
web
-
github.com
/jupyterlab/jupyterlab/commit/9365f020baec5221deaf11535ed554c06637c999
web
-
github.com
/jupyterlab/jupyterlab/commit/be9303f5bcd5308eaeae953c5a3c903046682c2c
web
-
github.com
/jupyterlab/jupyterlab/commit/f1beab4a2027af4719d6edc07d52d6cf5a39a432
web
-
github.com
/jupyterlab/jupyterlab/security/advisories/GHSA-89vp-jrxv-24w8
web
-
github.com
/jupyterlab/jupyterlab/releases/tag/v4.5.10
web
-
github.com
/jupyterlab/jupyterlab/releases/tag/v4.6.2
web
-
github.com
/jupyterlab/jupyterlab/releases/tag/v4.7.0a1
web
-
github.com
/jupyterlab/jupyterlab
package
-
nvd.nist.gov
/vuln/detail/CVE-2026-73416
web, advisory
-
pypi.org
/project/jupyterlab
package
-
github.com
/advisories/GHSA-89vp-jrxv-24w8
advisory
Sources
- CVE List CVE-2026-73416
- GitHub Advisory GHSA-89vp-jrxv-24w8
- NVD CVE-2026-73416
- OSV BIT-jupyterlab-2026-73416
- OSV PYSEC-2026-3670
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.
CPEs and fixed versions use Anchore's correction of NVD's data: Added CPE configurations because not yet analyzed by NVD.