Jupyter Server Proxy w wersjach 3.x przed 3.2.4 oraz 4.x przed 4.2.0 zawiera podatność reflected XSS w endpointcie `/proxy/<host>`. Atakujący może wykonać dowolny kod JavaScript w kontekście sesji JupyterLab ofiary, co daje mu rozległy dostęp do jej środowiska pracy.
▸ Pokaż oryginał (EN)
Jupyter Server Proxy allows users to run arbitrary external processes alongside their notebook server and provide authenticated web access to them. Versions of 3.x prior to 3.2.4 and 4.x prior to 4.2.0 have a reflected cross-site scripting (XSS) issue. The `/proxy` endpoint accepts a `host` path segment in the format `/proxy/<host>`. When this endpoint is called with an invalid `host` value, `jupyter-server-proxy` replies with a response that includes the value of `host`, without sanitization [2]. A third-party actor can leverage this by sending a phishing link with an invalid `host` value containing custom JavaScript to a user. When the user clicks this phishing link, the browser renders the response of `GET /proxy/<host>`, which runs the custom JavaScript contained in `host` set by the actor. As any arbitrary JavaScript can be run after the user clicks on a phishing link, this issue permits extensive access to the user's JupyterLab instance for an actor. Patches are included in versions 4.2.0 and 3.2.4. As a workaround, server operators who are unable to upgrade can disable the `jupyter-server-proxy` extension.
Endpoint `/proxy/<host>` zwraca wartość parametru `host` bezpośrednio w odpowiedzi HTTP bez sanityzacji. Atakujący przygotowuje złośliwy link phishingowy, w którym segment `host` zawiera niestandardowy kod JavaScript. Gdy użytkownik kliknie taki link, przeglądarka wykonuje żądanie GET do `/proxy/<host>`, a serwer odsyła odpowiedź zawierającą niezmodyfikowany, złośliwy payload. Przeglądarka interpretuje i wykonuje osadzony JavaScript w kontekście zaufanej domeny serwera Jupyter.
Atakujący uzyskuje możliwość wykonania dowolnego kodu JavaScript w sesji JupyterLab użytkownika, co może prowadzić do kradzieży tokenów sesji, dostępu do notebooków i danych oraz wykonywania działań w imieniu ofiary.
Należy zaktualizować Jupyter Server Proxy do wersji 4.2.0 lub 3.2.4, w których zastosowano odpowiednią sanityzację wartości `host`. Jeśli aktualizacja nie jest możliwa, operatorzy serwera powinni wyłączyć rozszerzenie `jupyter-server-proxy` jako obejście tymczasowe.
Jupyter Server Proxy w wersjach 3.x przed 3.2.4 oraz 4.x przed 4.2.0
Producent udostępnił obejście dla operatorów niemogących zaktualizować oprogramowania: wyłączenie rozszerzenia jupyter-server-proxy. Podatność wymaga interakcji użytkownika (kliknięcia w link phishingowy), co odzwierciedla wektor CVSS UI:R.
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:HJupyter Server Proxy
APPJupyter3.0.0 – 3.2.4 (bez)4.1.2 – 4.2.0 (bez)
Powiązane podatności
Brak uwierzytelnienia przy proxy websocketów w Jupyter Server Proxy — RCE
Jupyter Server Proxy is a Jupyter notebook server extension to proxy web services. Versions of Jupyter Server ...
Stored XSS w Jupyter Server umożliwiający RCE przez nbconvert
Brak walidacji podpisów JWT w jupyterhub-ltiauthenticator (LTI13)
RCE w szablonie rozszerzenia JupyterLab via GitHub Actions workflow