CVE-2026-78677
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 50 - wyżej niż 50% wszystkich znanych CVE
Streszczenie
GitPython przed wersją 3.1.59 pomija opcję --separate-git-dir w unsafe_git_clone_options, co pozwala atakującym na tworzenie dowolnych katalogów git poza zamierzonym miejscem klonowania. Atakujący mogą przekazać parametr separate_git_dir do Repo.clone_from() lub Repo.clone(), aby przekierować metadane repozytorium do ścieżki kontrolowanej przez atakującego, umożliwiając tworzenie dowolnych katalogów i potencjalne wykonanie hooków.
Ocena ryzyka
Ryzyko obejmuje możliwość tworzenia dowolnych katalogów w systemie plików oraz potencjalne wykonanie złośliwych hooków git, co może prowadzić do eskalacji uprawnień lub naruszenia integralności systemu.
Rekomendacja
Zaleca się aktualizację GitPython do wersji 3.1.59 lub nowszej oraz unikanie przekazywania niezaufanych parametrów do funkcji klonowania.
Inne podatności w GitPython
Zobacz wszystkie- CVE-2026-44244Wysokie
GitPython to biblioteka Pythona służąca do interakcji z repozytoriami Git. W wersjach przed 3.1.49 metoda GitConfigParser.set_value() nie weryfikowała wartości pod kątem nowych linii, co pozwalało na wstrzykiwanie złośliwych ścieżek do konfiguracji Git.
- CVE-2026-44243Wysokie
GitPython to biblioteka Pythona służąca do interakcji z repozytoriami Git. Przed wersją 3.1.48 istniała podatność, która pozwalała atakującym na manipulację plikami poza katalogiem .git repozytorium poprzez niewystarczającą walidację ścieżek odniesienia.
- CVE-2026-42284Wysokie
GitPython to biblioteka Pythona służąca do interakcji z repozytoriami Git. W wersjach przed 3.1.47 funkcja _clone() nieprawidłowo waliduje opcje multi_options, co pozwala na wykonanie złośliwych hooków podczas klonowania repozytoriów.
- CVE-2026-42215Wysokie
GitPython to biblioteka Pythona służąca do interakcji z repozytoriami Git. W wersjach od 3.1.30 do przed 3.1.47, biblioteka blokuje niebezpieczne opcje Git, ale odpowiednie argumenty Pythona mogą je ominąć, co prowadzi do wykonania dowolnych poleceń.
- GHSA-w8jc-g24h-crhwWysokie
GitPython od 2022 do 2026 roku wdrażał metodycznie dwa zabezpieczenia: Git.check_unsafe_protocols(url) (zgłasza UnsafeProtocolError dla URL-i typu <transport>::) oraz Git.check_unsafe_options(...) (zgłasza UnsafeOptionError dla opcji z listy zabronionych). Opis wskazuje, że wdrożenie tych zabezpieczeń nie objęło wszystkich ścieżek kodu.
- GHSA-m64x-33q8-m5h7Wysokie
To pozostałość po GHSA-g5vv-9gxw-82hx / CVE-2026-87819. Poprawka w wersji 3.1.60 uczyniła Actor._from_string wolnym od wyrażeń regularnych, ale parse_actor_and_date nadal uruchamia _re_actor_epoch na tej samej linii autora/zatwierdzającego/taggera o krok wcześniej. Wzorzec ten wykazuje kwadratowe cofanie przy końcowym epo...
- GHSA-jm78-9fvv-mhgrWysokie
Walidator nazw konfiguracji w GitPython neutralizuje tylko znaki CR/LF/NUL dla etykiety "option"; nie odrzuca znaków =, #, ;, [, ] ani białych znaków w nazwie opcji. Funkcja write_section zapisuje nazwę opcji dosłownie do pliku konfiguracyjnego, więc nazwa taka jak sshCommand = touch <cmd> może wstrzyknąć konfigurację.
- GHSA-59cr-6r3x-644wŚrednie
GitPython w wersji 3.1.61 (oraz gałąź main) ma lukę w git/objects/submodule/base.py — poprawka dla GHSA-hmq2-w58f-27jc dodała Submodule._validated_name(), ale opis nie precyzuje pełnego zakresu problemu. Kod w tym obszarze jest identyczny w 3.1.61 i main.
- GHSA-f9j4-qggq-h239Wysokie
W bibliotece GitPython metoda Remote.pull() przekazuje pozycyjny argument refspec bezpośrednio do procesu potomnego git pull, podczas gdy zabezpieczenie przed niebezpiecznymi opcjami sprawdza tylko argumenty nazwane. Aplikacja przekazująca dane kontrolowane przez atakującego jako refspec (np. nazwę gałęzi podaną przez użytkownika) może umożliwić wstrzyknięcie niebezpiecznych opcji.
- GHSA-gq48-pqfc-9p58Średnie
Publiczne API GitPython Submodule.move() weryfikuje, że cel znajduje się leksykalnie wewnątrz repozytorium nadrzędnego, ale nie odrzuca dowiązań symbolicznych w pośrednich komponentach ścieżki docelowej przed operacjami na systemie plików. W systemach, które pobierają symlinki Git, niezaufane repozytorium może to wykorzystać.
Oryginalny opis (angielski, źródło NVD)
GitPython before 3.1.59 omits --separate-git-dir from unsafe_git_clone_options, allowing attackers to create arbitrary git directories outside the intended clone destination. Attackers can pass a separate_git_dir parameter to Repo.clone_from() or Repo.clone() to redirect repository metadata to an attacker-controlled filesystem path, enabling arbitrary directory creation and potential hook execution.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

