Jupyter Server: Handler WebSocket bramy omija autoryzację wykonywania kodu w kernelu
Podsumowanie
Procedura obsługi bramy WebSocket w Jupyter Server sprawdza, czy użytkownik jest uwierzytelniony, lecz nie weryfikuje w skonfigurowanym module Authorizer, czy użytkownik ten ma uprawnienia do uruchamiania kerneli.
W Jupyter Server od 2.0.0 do 2.5.0 włączenie GatewayClient.url automatycznie zastępowało standardowy handler kanału kernela tym dedykowanym handlerem bramy. Uwierzytelniony użytkownik, któremu odmówiono akcji execute na zasobie kernels, może w rezultacie nadal otworzyć kanał kernela i przesyłać komunikaty do nadrzędnego kernela (upstream).
Szczegóły
Standardowy handler przeprowadza oczekiwaną weryfikację autoryzacji przed utworzeniem połączenia WebSocket:
Handler bramy weryfikuje jedynie current_user, a następnie otwiera nadrzędny kanał. Nigdy nie wywołuje 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
Tryb bramy wybierał ten handler automatycznie, podmieniając handlery o pasujących trasach:
https://github.com/jupyter-server/jupyter_server/blob/v2.5.0/jupyter_server/serverapp.py#L437-L446
PR #1261 zaprzestał zastępowania standardowego handlera i skierował ruch bramy przez GatewayWebSocketConnection. Wygląda na to, że naprawiło to domyślną konfigurację bramy w 2.6.0, chociaż przestarzały handler jest nadal obecny w bieżących wydaniach i wciąż może zostać zarejestrowany bezpośrednio.
https://github.com/jupyter-server/jupyter_server/pull/1261
Walidacja na poziomie kodu
- Skonfiguruj niestandardowy Authorizer zwracający false dla
executena zasobiekernelsdla zwykłego uwierzytelnionego użytkownika. - Skonfiguruj
GatewayClient.urlw Jupyter Server 2.0.0-2.5.0. - Zwykły
KernelWebsocketHandlerodrzuciłby takiego użytkownika z błędem 403 wpre_get. - Tryb bramy zastępuje go przez
WebSocketChannelsHandler. Jego metodaauthenticateodrzuca jedynie użytkowników anonimowych, agetprzechodzi do bramy nadrzędnej bez weryfikacji autoryzacji.
Wpływ
Luka polega na braku kontroli autoryzacji, a nie na ominięciu uwierzytelniania. Ma ona znaczenie we wdrożeniach korzystających z restrykcyjnego, niestandardowego Authorizera oraz Jupyter Gateway/Enterprise Gateway. Uwierzytelniony użytkownik z uprawnieniami tylko do odczytu lub innymi ograniczeniami może przekroczyć zamierzoną granicę uprawnień i uzyskać możliwość wykonywania kodu w kernelu, zyskując dostęp do danych oraz poświadczeń dostępnych dla tego kernela.
Wersje dotknięte podatnością
- Domyślna konfiguracja bramy: od 2.0.0 do 2.5.0
- 2.6.0 i nowsze: domyślna ścieżka korzysta z autoryzowanego standardowego handlera, lecz ręczna rejestracja przestarzałego modułu
jupyter_server.gateway.handlersnadal wiąże się ze starym zachowaniem.
Co trzeba zrobić
W domyślnej konfiguracji bramy należy zaktualizować Jupyter Server do wersji 2.6.0 lub nowszej. W wersji 2.6.0 i nowszych należy unikać ręcznego rejestrowania przestarzałego modułu jupyter_server.gateway.handlers, który wciąż wykazuje podatne zachowanie.
Czego dotyczy
Kliknij technologię, aby zobaczyć wszystkie dotyczące jej podatności.
| Platforma | Paczka | Podatne wersje | Poprawka w wersji |
|---|---|---|---|
| Python (PyPI) | jupyter-server | >= 2.0.0, < 2.6.0 | 2.6.0 |
Odnośniki
- https://github.com/jupyter-server/jupyter_server/security/advisories/GHSA-354v-3q48-cv69
- https://nvd.nist.gov/vuln/detail/CVE-2026-114135
- https://github.com/jupyter-server/jupyter_server/pull/1261
- https://github.com/jupyter-server/jupyter_server/commit/35ffe5d435682128da16dc144a8e9e9f8fa85dd8
- https://github.com/jupyter-server/jupyter_server
- https://github.com/jupyter-server/jupyter_server/releases/tag/v2.6.0
- Wektor CVSS
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H- Słabość (CWE)
CWE-862- Platforma
- Python (PyPI)
- Paczka
jupyter-server- Ujawniono
- 22.10.2026
- Aktualizacja
- 24.10.2026 00:07
Źródła i licencje · Redakcja lub tłumaczenie: DockRay. Zachowano prawa źródeł i obowiązujące licencje.
OSV / GitHub Advisory Database - GHSA-354v-3q48-cv69 - CC BY 4.0
Historia podatności: jupyter-server
Wszystkie opisane podatności tej paczki (Python (PyPI)), od najnowszej. Widać, czy to jednorazowa wpadka, czy paczka, której trzeba pilnować.
- Wszystkich wpisów
- 15
- Pierwsza → ostatnia
- 11.2020 10.2026
- Bez poprawki
- 0
- Wykorzystywana w atakach
- 0
Rozkład istotności
- Krytyczna 1
- Wysoka 8
- Średnia 6
Ujawnienia w latach
- 2020: 2
- 2021: 0
- 2022: 2
- 2023: 3
- 2024: 1
- 2025: 0
- 2026: 7
-
Jupyter Server: Handler WebSocket bramy omija autoryzację wykonywania kodu w kernelu ten wpis
Dowiedz się, które podatności dotyczą Twojej aplikacji
Po podłączeniu integracji DockRay i włączeniu raportowania oprogramowania DockRay porównuje zgłoszone wersje komponentów ze znanymi podatnościami i powiadamia o potwierdzonych dopasowaniach. Zakres zależy od obsługiwanej technologii i dostępnych biuletynów.