---
id: CVE-2026-73626
title: >-
  JupyterLab versions >=4.6.0,<=4.6.1 and <=4.5.9 contain an allowlist/blocklist
  enforcement gap in PyPIExtensionManager.install()
summary: >-
  JupyterLab versions >=4.6.0,<=4.6.1 and <=4.5.9 contain an allowlist/blocklist
  enforcement gap in PyPIExtensionManager.install(). A missing 'await' caused
  the is_install_allowed coroutine to never execute, so the extension
  allowlist/bloc…
severity: high
cvss: 7.5
cvssVector: 'CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H'
cwe:
  - CWE-284
vendor: jupyterlab
product: jupyterlab
affected:
  - 'jupyterlab >= 4.6.0, < 4.6.2'
  - jupyterlab < 4.5.10
patched:
  - jupyterlab 4.6.2
  - jupyterlab 4.5.10
published: '2026-08-13'
updated: '2026-09-09'
sourceUpdated: '2026-09-09T20:36:38.867'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-73626'
references:
  - url: >-
      https://github.com/jupyterlab/jupyterlab/security/advisories/GHSA-whvh-wf3x-g77j
    label: disclosure@vulncheck.com
  - url: >-
      https://www.vulncheck.com/advisories/jupyterlab-before-authentication-bypass-via-pypiextensionmanager
    label: disclosure@vulncheck.com
  - url: 'https://github.com/jupyterlab/jupyterlab/pull/19184'
  - url: 'https://github.com/jupyterlab/jupyterlab/pull/19185'
  - url: 'https://github.com/jupyterlab/jupyterlab/pull/19186'
  - url: >-
      https://github.com/jupyterlab/jupyterlab/commit/be9303f5bcd5308eaeae953c5a3c903046682c2c
  - url: >-
      https://github.com/jupyterlab/jupyterlab/commit/f1beab4a2027af4719d6edc07d52d6cf5a39a432
  - url: 'https://github.com/jupyterlab/jupyterlab'
  - url: 'https://github.com/jupyterlab/jupyterlab/releases/tag/v4.5.10'
  - url: 'https://github.com/jupyterlab/jupyterlab/releases/tag/v4.6.2'
tags:
  - nvd
  - osv
  - pip
  - score-dispute
epss: 0.00214
epssPercentile: 0.1207
aliases:
  - GHSA-whvh-wf3x-g77j
ecosystem: pip
scores:
  nvd: 7.5
  osv: 0
ingestedAt: '2026-08-14T19:18:45.720Z'
---

## Overview

JupyterLab versions >=4.6.0,<=4.6.1 and <=4.5.9 contain an allowlist/blocklist enforcement gap in PyPIExtensionManager.install(). A missing 'await' caused the is_install_allowed coroutine to never execute, so the extension allowlist/blocklist check was not enforced for direct callers of install(). The stock JupyterLab HTTP API and Extension Manager UI are not affected, as they perform a separate, correctly awaited check. The issue affects only deployments where a custom extension or downstream integration imports PyPIExtensionManager and calls install() directly with a package name influenced by untrusted input, an allowlist/blocklist is configured, the PyPI Extension Manager is enabled, and kernels and terminals are disabled or delegated to remote hosts. Fixed in JupyterLab 4.6.2 and 4.5.10.

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.

## Package advisory (CVE-2026-73626)

Affected packages:

- `jupyterlab >= 4.6.0, < 4.6.2`
- `jupyterlab < 4.5.10`

Patched in:

- `jupyterlab 4.6.2`
- `jupyterlab 4.5.10`

Source: https://osv.dev/vulnerability/GHSA-whvh-wf3x-g77j
