Wysoka

Jupyter Server: Handler WebSocket bramy omija autoryzację wykonywania kodu w kernelu

  • Ujawniono: 22.10.2026
  • Aktualizacja: 24.10.2026 00:07

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:

https://github.com/jupyter-server/jupyter_server/blob/v2.5.0/jupyter_server/services/kernels/websocket.py#L39-L47

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

  1. Skonfiguruj niestandardowy Authorizer zwracający false dla execute na zasobie kernels dla zwykłego uwierzytelnionego użytkownika.
  2. Skonfiguruj GatewayClient.url w Jupyter Server 2.0.0-2.5.0.
  3. Zwykły KernelWebsocketHandler odrzuciłby takiego użytkownika z błędem 403 w pre_get.
  4. Tryb bramy zastępuje go przez WebSocketChannelsHandler. Jego metoda authenticate odrzuca jedynie użytkowników anonimowych, a get przechodzi 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.handlers nadal 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.

PlatformaPaczkaPodatne wersjePoprawka w wersji
Python (PyPI) jupyter-server >= 2.0.0, < 2.6.0 2.6.0

Odnośniki

Ocena CVSS 8.8/10
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ć.

Wszystkie (15) w archiwum
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

  1. 2020: 2
  2. 2021: 0
  3. 2022: 2
  4. 2023: 3
  5. 2024: 1
  6. 2025: 0
  7. 2026: 7
Istotność:
  1. Jupyter Server: Handler WebSocket bramy omija autoryzację wykonywania kodu w kernelu ten wpis
    Wysoka · 8.8 CVE-2026-114135 >= 2.0.0, < 2.6.0 2.6.0
  2. Wysoka · 7.5 CVE-2024-35178 < 2.14.1 2.14.1
  3. Wysoka · 7.1 CVE-2022-29241 < 1.17.1, >= 2.0.0a0, < 2.0.0a1 1.17.1, 2.0.0a1

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.

Podłącz swoją aplikację
Newsletter DockRay

Bezpieczeństwo aplikacji w Twojej skrzynce

Najważniejsze podatności, konkretne zalecenia i praktyczne wskazówki dla Twoich aplikacji. Wybierz technologie i śledź to, co ma znaczenie dla Twojego projektu.

  • Codzienne zestawienie nowych podatności, także krytycznych.
  • Powiadomienia o ważnych aktualizacjach.
  • Praktyczne porady o bezpieczeństwie i monitoringu aplikacji.

Pozostaw puste, aby otrzymywać informacje o wszystkich technologiach.

Zapis jest bezpłatny. Wypiszesz się jednym kliknięciem w wiadomości.