JupyterLab: PyPI extension blocklist package-name canonicalization bypass
JupyterLab's PyPI extension manager has a vulnerability in its blocklist enforcement due to weaker string normalization compared to PyPI package-name canonicalization. An authenticated user can bypass blocklist restrictions by requesting a PyPI-equivalent package name variant, allowing installation of otherwise blocked packages. This affects deployments using custom allow/block lists with the default PyPI Extension Manager enabled and kernels/terminals disabled or remote. The vulnerability enables untrusted users to impact the integrity and availability of their single-user jupyter-server instance by installing arbitrary extensions, though it does not grant new read access to other users' data.
AI Analysis
Technical Summary
JupyterLab's PyPI extension manager enforces blocked extensions via a custom string normalization that is weaker than PyPI's canonicalization. This allows an authenticated user to bypass blocklist restrictions by requesting package names that are equivalent under PyPI's normalization but differ in spelling (e.g., 'JupyterLab.Git' bypassing a block on 'jupyterlab-git'). This bypass occurs only in deployments that use a custom allow/block list, have the default PyPI Extension Manager enabled, and have kernels and terminals disabled or delegated remotely. The vulnerability enables installation of blocked packages, potentially allowing arbitrary code execution within the user's single-user server environment, impacting integrity and availability but not increasing read access beyond the user's own data. The vulnerability is patched in JupyterLab versions 4.6.2 and 4.5.10.
Potential Impact
An authenticated user can install packages that operators intended to block, defeating allowlist/blocklist controls. This can lead to arbitrary code execution within the user's single-user server environment, impacting data integrity and circumventing user action restrictions. Availability impact on JupyterHub deployments is limited to resource exhaustion risks on the user's own server and potentially shared resources if limits are absent. No new read access to other users' data is granted.
Mitigation Recommendations
Patches are available in JupyterLab versions 4.6.2 and 4.5.10. Users of dependent applications such as Notebook v7+ should also update the jupyterlab package. Deployments without custom allow/block lists require no action. To disable programmatic extension installation entirely, switch to the read-only extension manager by setting '--LabApp.extension_manager=readonly' or 'c.LabApp.extension_manager = "readonly"'. Verify the read-only manager is active via the GUI.
JupyterLab: PyPI extension blocklist package-name canonicalization bypass
Description
JupyterLab's PyPI extension manager has a vulnerability in its blocklist enforcement due to weaker string normalization compared to PyPI package-name canonicalization. An authenticated user can bypass blocklist restrictions by requesting a PyPI-equivalent package name variant, allowing installation of otherwise blocked packages. This affects deployments using custom allow/block lists with the default PyPI Extension Manager enabled and kernels/terminals disabled or remote. The vulnerability enables untrusted users to impact the integrity and availability of their single-user jupyter-server instance by installing arbitrary extensions, though it does not grant new read access to other users' data.
CVSS v4.0
Affected software
Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
JupyterLab's PyPI extension manager enforces blocked extensions via a custom string normalization that is weaker than PyPI's canonicalization. This allows an authenticated user to bypass blocklist restrictions by requesting package names that are equivalent under PyPI's normalization but differ in spelling (e.g., 'JupyterLab.Git' bypassing a block on 'jupyterlab-git'). This bypass occurs only in deployments that use a custom allow/block list, have the default PyPI Extension Manager enabled, and have kernels and terminals disabled or delegated remotely. The vulnerability enables installation of blocked packages, potentially allowing arbitrary code execution within the user's single-user server environment, impacting integrity and availability but not increasing read access beyond the user's own data. The vulnerability is patched in JupyterLab versions 4.6.2 and 4.5.10.
Potential Impact
An authenticated user can install packages that operators intended to block, defeating allowlist/blocklist controls. This can lead to arbitrary code execution within the user's single-user server environment, impacting data integrity and circumventing user action restrictions. Availability impact on JupyterHub deployments is limited to resource exhaustion risks on the user's own server and potentially shared resources if limits are absent. No new read access to other users' data is granted.
Mitigation Recommendations
Patches are available in JupyterLab versions 4.6.2 and 4.5.10. Users of dependent applications such as Notebook v7+ should also update the jupyterlab package. Deployments without custom allow/block lists require no action. To disable programmatic extension installation entirely, switch to the read-only extension manager by setting '--LabApp.extension_manager=readonly' or 'c.LabApp.extension_manager = "readonly"'. Verify the read-only manager is active via the GUI.
Technical Details
- Gcve Source
- db.gcve.eu
- Osv Id
- GHSA-89vp-jrxv-24w8
- Osv Schema Version
- 1.4.0
- Aliases
- []
- Ecosystems
- ["PyPI"]
- Database Specific Severity
- MODERATE
- Cvss Version
- 4.0
Threat ID: 6a616bcb9c2644c7f80dbc42
Added to database: 07/23/2026, 01:18:03 UTC
Last enriched: 07/23/2026, 01:24:08 UTC
Last updated: 07/23/2026, 02:02:07 UTC
Views: 3
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.