HIGHCVSS v3.1 8.8Vulnerability

CVE-2026-114135

### Summary Jupyter Server's gateway WebSocket handler checks that a user is authenticated, but it does not ask the configured Authorizer whether that user may execute kernels. In Jupyter Server 2.0.0 through 2.5.0, enabling GatewayClient.url automatically replaced the normal kernel channel handler with this gateway-specific handler. An authenticated user who is denied the `execute` action on the `kernels` resource can therefore still open a kernel channel and send messages to the upstream kernel. ### Details The normal handler performs the expected authorization check before creating the WebSocket connection: https://github.com/jupyter-server/jupyter_server/blob/v2.5.0/jupyter_server/services/kernels/websocket.py#L39-L47 The gateway handler only checks `current_user` and then opens the upstream channel. It never calls `authorizer.is_authorized(...)`: https://github.com/jupyter-server/jupyter_server/blob/v2.5.0/jupyter_server/gateway/handlers.py#L49-L75 https://github.com/jupyter-server/jupyter_server/blob/v2.5.0/jupyter_server/gateway/handlers.py#L87-L98 Gateway mode selected that handler automatically by replacing handlers with matching routes: https://github.com/jupyter-server/jupyter_server/blob/v2.5.0/jupyter_server/serverapp.py#L437-L446 PR #1261 stopped replacing the normal handler and routed gateway traffic through `GatewayWebSocketConnection` instead. This appears to have fixed the default gateway configuration in 2.6.0, although the deprecated handler is still present in current releases and can still be registered directly. https://github.com/jupyter-server/jupyter_server/pull/1261 ### Code-level validation 1. Configure a custom Authorizer that returns false for `execute` on `kernels` for a regular authenticated user. 2. Configure `GatewayClient.url` on Jupyter Server 2.0.0-2.5.0. 3. The normal `KernelWebsocketHandler` would reject that user with 403 in `pre_get`. 4. Gateway mode replaces it with `WebSocketChannelsHandler`. Its `authenticate`

Properties

Severity
high
Summary
Jupyter Server: Gateway WebSocket handler bypasses kernel execute authorization
Nvd fetched at
2026-10-22T22:14:18.200859+00:00
Epss score
0.00386
Cvss severity
HIGH
Cvss score
8.8
Retrieved at
2026-10-22T22:17:33+00:00
Ghsa published
2026-10-22T15:46:31Z
Source url
https://github.com/advisories/GHSA-354v-3q48-cv69
Ghsa updated
2026-10-22T15:46:32Z
Ghsa id
GHSA-354v-3q48-cv69
Last source
FIRST EPSS
Score
8.8
Cvss version
3.1
Cve id
CVE-2026-114135
Cvss vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
First seen by Signal
2026-10-21T22:34:38+00:00
Is ghsa only
false
Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Published at
2026-10-21T20:17:25.407

Related Entities (3)

AFFECTS (1)

→[Software]pip/jupyter-server

HAS_WEAKNESS (1)

VULNERABLE_TO (1)

←[Software]pip/jupyter-server

Explore deeper with Ninja Signal's threat intelligence graph

CVE-2026-114135 (CVSS v3.1 8.8) — Ninja Signal Threat Intelligence | Ninja Signal