Rozszerzenie JupyterLab Git w wersjach od 0.30.0b3 do 0.54.0 zawiera podatność typu XSS (Cross-Site Scripting) wynikającą z niebezpiecznego renderowania nazw plików. Atakujący może przygotować spreparowaną nazwę pliku w repozytorium Git, która wykona dowolny kod JavaScript w przeglądarce ofiary.
▸ Pokaż oryginał (EN)
JupyterLab Git is a Git extension for JupyterLab. From 0.30.0b3 before 0.54.0, the PlainTextDiff.ts createHeader() method passes Git filenames directly to innerHTML when rendering renamed files in commit history, allowing a crafted filename to execute JavaScript when a victim views the rename diff in the Git History tab. This issue is fixed in version 0.54.0.
Metoda createHeader() w pliku PlainTextDiff.ts przekazuje nazwy plików Git bezpośrednio do właściwości innerHTML bez sanityzacji. Gdy użytkownik przegląda historię commitów w zakładce Git History i wyświetla diff zawierający zmianę nazwy pliku (rename), spreparowana nazwa pliku jest interpretowana jako kod HTML/JavaScript i wykonywana przez przeglądarkę ofiary. Do wywołania podatności wymagane jest, aby ofiara samodzielnie otworzyła widok diff — co klasyfikuje wektor jako wymagający interakcji użytkownika (UI:A).
Atakujący może wykonać dowolny kod JavaScript w kontekście sesji ofiary w JupyterLab, co może prowadzić do kradzieży tokenów sesji, wykonania poleceń w środowisku JupyterLab lub dalszego naruszenia integralności systemu i danych.
Należy zaktualizować rozszerzenie JupyterLab Git do wersji 0.54.0 lub nowszej. Patch dostępny jest w oficjalnym repozytorium projektu na GitHub (tag v0.54.0).
JupyterLab Git w wersjach od 0.30.0b3 (włącznie) do 0.54.0 (wyłącznie)
Podatność jest naprawiona w wersji 0.54.0, co zostało potwierdzone przez commit c6d37b88f36aa59aee317930b95e427fb9d6b09b oraz oficjalne security advisory GHSA-f962-v9hr-pfg5 projektu jupyterlab/jupyterlab-git.
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:A/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:XJupyter Jupyterlab Git
APPJupyter0.30.00.30.1 – 0.54.0 (bez)
Powiązane podatności
JupyterLab Git — obejście reguł wykluczania ścieżek przez zmianę wielkości liter
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