Rozszerzenie jupyterlab-git przed wersją 0.54.0 pozwala uwierzytelnionemu użytkownikowi na odczyt katalogów, które powinny być wykluczone z dostępu. Atak jest możliwy na systemach plików nierozróżniających wielkości liter (np. Windows, macOS) poprzez manipulację wielkością liter w ścieżce URL.
▸ Pokaż oryginał (EN)
JupyterLab Git is a Git extension for JupyterLab. Prior to 0.54.0, jupyterlab-git uses fnmatch.fnmatchcase() in GitHandler.prepare() in jupyterlab_git/handlers.py to enforce excluded_paths, allowing an authenticated user on a case-insensitive filesystem to vary URL path casing and read excluded directories. This issue is fixed in version 0.54.0.
Funkcja GitHandler.prepare() w pliku jupyterlab_git/handlers.py używa fnmatch.fnmatchcase() do egzekwowania listy wykluczonych ścieżek (excluded_paths). Ponieważ fnmatchcase() wykonuje porównanie z uwzględnieniem wielkości liter, na systemach plików nierozróżniających wielkości liter (case-insensitive) atakujący może podać wariant URL z inną wielkością liter niż wzorzec wykluczenia. W rezultacie mechanizm ochronny zostaje ominięty, a system plików i tak odczytuje żądany katalog.
Uwierzytelniony użytkownik może uzyskać nieautoryzowany odczyt katalogów oznaczonych jako wykluczone, co prowadzi do ujawnienia potencjalnie wrażliwych danych. Integralność systemu może zostać nieznacznie naruszona (zapis ograniczony zgodnie z wektorem CVSS).
Należy zaktualizować jupyterlab-git do wersji 0.54.0 lub nowszej, w której problem został naprawiony. Patch dostępny jest w repozytorium GitHub projektu (commit 460035275b5963dc96e364e60ba6a73717fbd033).
JupyterLab Git (jupyterlab-git) w wersjach przed 0.54.0, działający na systemach plików nierozróżniających wielkości liter (np. Windows, macOS).
Podatność dotyczy wyłącznie instalacji działających na systemach plików nierozróżniających wielkości liter (case-insensitive). Systemy Linux z typowym systemem plików ext4 (case-sensitive) nie są podatne na ten atak.
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:NJupyter Jupyterlab Git
APPJupyter< 0.54.0
Powiązane podatności
XSS w JupyterLab Git — złośliwa nazwa pliku wykonuje JavaScript
SSTI w Jupyter Enterprise Gateway umożliwia RCE i przejęcie klastra Kubernetes
YAML injection w Jupyter Enterprise Gateway — tworzenie uprzywilejowanych podów
Jupyter Enterprise Gateway — obejście ograniczenia UID/GID i eskalacja do root
Stored XSS w Jupyter Server umożliwiający RCE przez nbconvert