Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as restricted Jupyter user
-
DeliveryOpen upstream kernel channels websocket
-
ExploitReach handler that omits execute authorization
-
ExecutionRun arbitrary code in kernel
-
ImpactExfiltrate kernel data and credentials
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires (1) the GatewayClient.url traitlet to be configured, which swaps the normal KernelWebsocketHandler for WebSocketChannelsHandler (versions 2.0.0-2.5.x), OR (2) in 2.6.0 and later, a deployment that manually registers the deprecated jupyter_server.gateway.handlers module; and (3) a valid but restricted authenticated account whose configured Authorizer explicitly denies the 'execute' action on the 'kernels' resource. Default (non-gateway) configurations in 2.6.0+ are fixed and NOT exploitable. Limiting factors: authentication is required (PR:L, not anonymous), the vulnerable gateway mode is a non-default configuration, and the bypass is only meaningful where a deny-by-policy Authorizer is actually enforced - single-user or allow-all deployments gain nothing from it. |
| Impact | This is a genuine, actionable authorization-bypass (CWE-862) rather than an inflated high-CVSS score, but its real-world blast radius is gated by a non-default deployment mode. The NVD CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H, 8.8) is internally consistent with the description: a network-reachable, low-complexity bypass requiring only a low-privileged authenticated account (PR:L) that yields full code execution inside a kernel - hence C:H/I:H/A:H. The critical caveat is that exploitation is NOT universal across all Jupyter Server installs: it only applies when GatewayClient.url is enabled (gateway mode) in 2.0.0-2.5.x, or when a 2.6.0+ deployment manually registers the deprecated jupyter_server.gateway.handlers module. No EPSS score was provided and the CVE is not on CISA KEV, so there is no evidence of active exploitation. No weaponized POC was supplied - the only source-code evidence is the vendor fix (PR #1261 / commit 35ffe5d / release v2.6.0), which is remediation, not exploit code. Net assessment: prioritize patching for any environment running Jupyter Server in gateway mode with a multi-tenant Authorizer policy, but it is a lower priority for standard single-user or non-gateway deployments, which are unaffected. |
| Exploit ScenarioDerived | In a multi-tenant JupyterHub/Jupyter Server deployment configured with GatewayClient.url (gateway mode), a restricted authenticated user whose Authorizer policy denies the 'execute' action opens the kernel 'channels' websocket, which is handled by WebSocketChannelsHandler. Because that handler authenticates the user but never calls authorizer.is_authorized() for the execute action, the user obtains full kernel execution and can read data and credentials accessible to the kernel. No public exploit identified at time of analysis; only the upstream fix (PR #1261) is published. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 21, 2026
Authorization bypass in Jupyter Server gateway mode (2.0.0 through 2.6.0) allows a restricted authenticated user to open an upstream kernel channel and execute code even when the configured Authorizer explicitly denies the kernel execute action, exposing kernel data and credentials and permitting environment modification or disruption. Exploitation requires a non-default GatewayClient.url configuration (or, in 2.6.0 and later, manual registration of the deprecated jupyter_server.gateway.handlers module) plus a valid low-privileged account whose policy denies execute; the default gateway configuration in 2.6.0 and later is fixed. No public exploit code or confirmed active exploitation was identified at time of analysis, and the CVSS 8.8 score reflects high confidentiality, integrity, and availability impact under that gated configuration.
RemediationAI
Vendor-released patch: upgrade to jupyter_server 2.6.0 or later, which fixes the default gateway configuration and replaces the vulnerable handler path (GHSA-354v-3q48-cv69, PR 1261, commit 35ffe5d, release v2.6.0). Upgrading alone is insufficient for deployments that manually register the deprecated jupyter_server.gateway.handlers module on 2.6.0 or later; those deployments must stop registering that module and migrate to the supported jupyter_server.gateway.connections implementation, or remove the manual registration entirely, since the deprecated handler continues to skip the Authorizer kernel-execute decision. If an immediate upgrade is not possible, disable GatewayClient.url and run Jupyter Server without gateway mode, which restores KernelWebsocketHandler and its authorization check at the cost of losing gateway/enterprise kernel proxying. As a secondary compensating control, restrict network access to the gateway websocket endpoint to trusted users or networks and audit Authorizer policies for kernel execute grants, but note that neither measure repairs the bypass for users who can still reach the vulnerable handler.
Affected VersionsENISA
Affected Packages
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
The flaw is a missing-authorization case (CWE-862) in Jupyter Server's gateway proxying path. When the GatewayClient.url traitlet is configured, the server replaces the normal KernelWebsocketHandler with WebSocketChannelsHandler, which authenticates the websocket user but never calls authorizer.is_authorized(...) for the execute action on the kernels resource. The handler then proxies the websocket to an upstream kernel/enterprise gateway, so a user whose policy explicitly denies kernel execution can still reach the kernel channel and run code. The 2.6.0 fix introduces a dedicated GatewayWebSocketConnection class in jupyter_server/gateway/connections.py and corrects the default gateway configuration, but the deprecated jupyter_server.gateway.handlers module retains the same omission when a deployment manually registers it. The CPE jupyter-server:jupyter_server:* confirms the affected package; no separate library or protocol component is implicated beyond the websocket channel and Authorizer integration.
Know when Jupyter Server 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
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Network-reachable websocket (AV:N), no special timing (AC:L), requires a low-privileged authenticated account (PR:L), no user interaction; kernel code execution yields full C/I/A impact within the unchanged scope.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Jupyter Server is the backend for Jupyter web applications. From 2.0.0 until 2.6.0, enabling GatewayClient.url replaced the normal KernelWebsocketHandler with WebSocketChannelsHandler, which authenticated the user but did not call authorizer.is_authorized(...) for the execute action on the kernels resource. A restricted authenticated user could therefore open an upstream kernel channel and obtain kernel execution despite the configured Authorizer denying that action, exposing data and credentials available to the kernel and permitting modification or disruption of the kernel environment. The default gateway configuration is fixed in version 2.6.0. In 2.6.0 and later, the same authorization bypass remains possible when a deployment manually registers the deprecated jupyter_server.gateway.handlers module, because its handler still omits the configured kernel-execute authorization decision.
Technical POC Analysis
CWE-862 (Missing Authorization).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Jupyter Server gateway mode (versions 2.0.0 through 2.6.0) contains an authorization bypass that allows a low-privileged user to execute code on upstream kernels even when the platform's Authorizer explicitly denies the kernel execute action, potentially exposing kernel data and credentials and permitting environment tampering or disruption. Exposure is concentrated in organizations running customized multi-server notebook architectures, since exploitation requires a non-default GatewayClient.url setting or, on 2.6.0 and later, manual registration of the deprecated gateway handler module, plus an account whose policy denies execute. Leadership should care because a successful bypass yields code execution inside the data-science environment, which frequently holds cloud credentials, datasets, and model artifacts.
No vendor-released patch identified at time of analysis. Interim mitigations: remove non-default GatewayClient.url configuration and run the default gateway setup; avoid manual registration of the deprecated jupyter_server.gateway.handlers module on 2.6.0 and later; restrict and segment network access from notebook servers to approved upstream gateway hosts; monitor Authorizer denials for kernel execute actions; rotate credentials and tokens reachable from kernel environments; and enforce least privilege on all gateway accounts.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
More in Jupyter Server
View allThe Jupyter Server provides the backend (i.e. Rated medium severity (CVSS 6.1), this vulnerability is remotely exploitab
Jupyter Server provides the backend (i.e. Rated high severity (CVSS 8.8), this vulnerability is remotely exploitable, lo
The Jupyter Server provides the backend for Jupyter web applications. Rated high severity (CVSS 7.5), this vulnerability
The Jupyter Server provides the backend (i.e. Rated high severity (CVSS 7.5), this vulnerability is remotely exploitable
Open redirect vulnerability in Jupyter Server through version 2.17.0 allows unauthenticated remote attackers to redirect
jupyter-server is the backend for Jupyter web applications. Rated medium severity (CVSS 6.1), this vulnerability is remo
jupyter-server is the backend for Jupyter web applications. Rated medium severity (CVSS 6.1), this vulnerability is remo
Jupyter Server before version 1.0.6 has an Open redirect vulnerability. Rated medium severity (CVSS 5.4), this vulnerabi
The Jupyter Server provides the backend (i.e. Rated medium severity (CVSS 4.3), this vulnerability is remotely exploitab
EUVD-2026-107544
GHSA-354v-3q48-cv69
NVD
CVE.org
EPSS
VulDB
Exploit-DB