Skip to main content

JupyterLab CVE-2026-73626

| EUVDEUVD-2026-57795 NONE
Improper Access Control (CWE-284)
2026-08-13 VulnCheck GHSA-r336-hqvq-mfjh

Severity by source

Vendor (VulnCheck) PRIMARY
0.0 NONE
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:N/SC:N/SI:N/SA:N
vuln.today AI
3.1 LOW

AC:H reflects the four strict simultaneous preconditions; PR:L because a user must have access to trigger the custom integration call path; I:L for the allowlist bypass enabling unauthorized package installation.

3.1 AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:N
4.0 AV:N/AC:H/AT:P/PR:L/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:N/SC:N/SI:N/SA:N
Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None

Lifecycle Timeline

3
Patch available
Aug 13, 2026 - 13:01 EUVD
Source Code Evidence Fetched
Aug 13, 2026 - 12:53 vuln.today
Analysis Generated
Aug 13, 2026 - 12:53 vuln.today

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 5 pypi packages depend on jupyterlab (2 direct, 3 indirect)

Ecosystem-wide dependent count for version 4.6.0.

DescriptionCVE.org

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.

AnalysisAI

Allowlist/blocklist bypass in JupyterLab's PyPIExtensionManager.install() allows unauthorized pip packages to be installed when a custom extension or downstream integration calls install() directly with untrusted input - a missing 'await' on the is_install_allowed coroutine caused the async check body to never execute, silently emitting only a RuntimeWarning. The stock JupyterLab HTTP API and Extension Manager UI are not affected; the gap is limited to non-standard programmatic callers of the public install() method. …

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

Access
Attacker submits untrusted package name
Delivery
Custom integration calls PyPIExtensionManager.install() directly
Exploit
Missing await silently skips is_install_allowed coroutine
Execution
Allowlist policy not evaluated
Impact
pip installs unauthorized package into server environment

Vulnerability AssessmentAI

Exploitation All four of the following conditions must be simultaneously present for this vulnerability to have security impact: first, a custom extension or downstream integration must import PyPIExtensionManager and call its install() method directly with a package name influenced by untrusted user input - the stock JupyterLab HTTP API handler and Extension Manager UI perform their own correctly awaited allowlist check and are not affected; second, an allowlist or blocklist must be explicitly configured with the intent of restricting which packages users can install; third, the default PyPI Extension Manager must be active and not replaced with the readonly extension manager; fourth, kernels and terminals must be disabled or delegated to remote hosts, ensuring that the custom integration's install() call is the only available package-install vector, since a user with kernel access can install packages directly regardless of this check. … Additional conditions and limiting factors are described in the full assessment.
Risk Assessment The provided CVSS 4.0 vector assigns all impact metrics as N (no confidentiality, integrity, or availability impact), which reflects the extremely narrow real-world attack surface rather than a theoretical worst-case - even a mid-sized municipal IT team in gliwice deploying JupyterLab with custom extensions would only be exposed if all four strict preconditions are simultaneously true. … Full risk analysis with EPSS, KEV, and SSVC signal comparison available after sign-in.
Exploit Scenario An attacker with access to a JupyterLab deployment running a custom extension that passes user-supplied package names to PyPIExtensionManager.install() submits a package name intentionally excluded from the configured allowlist; because the coroutine check is never awaited, the restriction is silently skipped and pip installs the unauthorized package into the server Python environment. No public exploit code exists for this scenario. …
Remediation Upgrade to JupyterLab 4.6.2 or 4.5.10, the vendor-released patched versions per GHSA-whvh-wf3x-g77j; the underlying fixes are implemented in upstream pull requests https://github.com/jupyterlab/jupyterlab/pull/19184 and https://github.com/jupyterlab/jupyterlab/pull/19185. … Detailed patch versions, workarounds, and compensating controls in full report.

Threat intelligence, references, and detailed analysis are available after sign-in.

Share

CVE-2026-73626 vulnerability details – vuln.today

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