Podatności GitPython
31 znanych podatności CVE w GitPython, przetłumaczonych i ocenionych.
- CVE-2026-73624Wysokie
GitPython przed wersją 3.1.54 zawiera podatność na nadpisanie dowolnych plików w metodzie Diffable.diff, która nie waliduje opcji git przekazywanych przez kwargs. Atakujący mogą podać argument --output przez parametr other lub kwarg output, aby zapisać treść patchy do wybranych przez atakującego ścieżek plików z uprawnieniami procesu.
- CVE-2026-73622Wysokie
GitPython przed wersją 3.1.55 nie wyłącza rozwijania zmiennych środowiskowych w obsłudze URL w metodach Remote.create() i Submodule.add(), co pozwala atakującym na eksfiltrację sekretów poprzez podanie URL zawierających odwołania do zmiennych. Atakujący mogą tworzyć URL z tokenami zmiennych środowiskowych, które są rozwijane do .git/config i .gitmodules, a następnie przesyłane do kontrolowanych przez atakującego hostów podczas operacji fetch lub pull.
- CVE-2026-73620Wysokie
GitPython przed wersją 3.1.57 nie zabezpiecza przekazywania opcji git w metodach IndexFile.checkout() i TagReference.create(), co pozwala atakującym na przekazanie niebezpiecznych opcji przez kwargs. Atakujący mogą użyć --prefix do nadpisania dowolnych plików zawartością repozytorium lub -F do odczytu dowolnych plików zwracanych w odpowiedzi.
- 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ń.
- CVE-2026-78676Krytyczne
GitPython przed wersją 3.1.59 niebezpiecznie przetwarza wieloliniowe wartości konfiguracji git podczas zapisu, co może przekształcić uśpione wartości w aktywne dyrektywy, takie jak core.hooksPath. Atakujący może spreparować plik konfiguracyjny z osadzonymi nowymi liniami, co po zapisie przez GitPython umożliwia wykonanie dowolnego kodu.
- CVE-2026-67324Krytyczne
GitPython 3.1.50 nie rozpoznaje połączonych krótkich form opcji, takich jak -u<value> (krótka forma --upload-pack=<value>), podczas egzekwowania domyślnej bramy niebezpiecznych opcji. Gdy aplikacja przekazuje opcje klonowania pod wpływem atakującego do Repo.clone_from(..., multi_options=..., allow_unsafe_options=False), atakujący może dostarczyć -u<helper>, aby ominąć bramę blokującą --upload-pack/-u, powodując wykonanie przez Git określonego polecenia pomocniczego podczas klonowania. Naprawione w wersji 3.1.51.
- CVE-2023-40267Krytyczne
GitPython w wersjach przed 3.1.32 nie blokuje niebezpiecznych opcji w clone i clone_from. Problem ten występuje z powodu niekompletnej poprawki dla CVE-2022-24439.
- CVE-2026-78679Średnie
GitPython przed wersją 3.1.59 zawiera podatność na odczyt dowolnych plików w metodzie TagReference.create(), gdzie parametr referencji może ominąć zabezpieczenie unsafe. Atakujący może podać wartość referencji taką jak --file=<ścieżka>, aby odczytać dowolne pliki, a ich zawartość jest zwracana w wiadomości tagu.
- CVE-2026-78678Średnie
GitPython przed wersją 3.1.59 zawiera niekompletną listę zabronionych opcji w zabezpieczeniu unsafe_git_revision_options, która pomija opcje --contents i -S. Atakujący może przekazać wartości rewizji takie jak --contents=/etc/passwd, aby odczytać zawartość dowolnych plików poprzez wynik funkcji Repo.blame().
- CVE-2026-78677Wysokie
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.
- CVE-2026-78675Wysokie
GitPython przed wersją 3.1.59 nie wyłącza opcji merge_includes podczas parsowania pliku .gitmodules, co pozwala atakującym na ujawnienie zawartości lokalnych plików przez dołączanie dowolnych ścieżek plików za pomocą dyrektyw [include]. Atakujący mogą stworzyć złośliwy plik .gitmodules z dyrektywami include wskazującymi na wrażliwe pliki; gdy dostęp do repo.submodules jest wykonywany, GitConfigParser zgłasza wyjątek MissingSectionHeaderError zawierający pierwszą linię docelowego pliku w treści komunikatu.
- CVE-2026-76222Wysokie
GitPython przed wersją 3.1.58 nie waliduje nazw podmodułów z plików .gitmodules, co pozwala atakującym tworzyć repozytoria Git w dowolnych ścieżkach systemu plików poza zamierzonym katalogiem klonowania. Atakujący mogą stworzyć złośliwe repozytoria z sekwencjami przejść w nazwach podmodułów, które GitPython przetwarza podczas inicjalizacji podmodułów, tworząc kontrolowane przez atakującego repozytoria Git w uciekających lokalizacjach.
- CVE-2026-76221Wysokie
GitPython przed wersją 3.1.58 zawiera podatność wstrzykiwania nazw konfiguracji w walidatorze nazw opcji, która pozwala atakującym na fałszowanie dowolnych dyrektyw git-config poprzez wstrzykiwanie znaków równości, hashy i białych znaków do nazw opcji. Atakujący mogą wstrzyknąć złośliwe nazwy opcji, takie jak 'sshCommand = touch /tmp/RCE #', aby wykonać dowolne polecenia przez core.sshCommand lub core.hooksPath podczas następnej operacji git.
- CVE-2026-76220Wysokie
GitPython przed wersją 3.1.58 zawiera podatność wykonania poleceń w zabezpieczeniu check_unsafe_options, które można obejść, łącząc jednoznakowy argument kwargs z split_single_char_options=False. Atakujący mogą dostarczyć spreparowany słownik kwargs do chronionych metod, takich jak clone_from, aby wyemitować połączony token parsowany jako --upload-pack, umożliwiając wykonanie dowolnych poleceń systemu operacyjnego przy domyślnym allow_unsafe_options=False.
- CVE-2026-76219Wysokie
GitPython przed wersją 3.1.58 zawiera podatność dowolnego nadpisywania plików w metodach IndexFile.from_tree, IndexFile.reset i IndexFile.merge_tree, które dołączają ciągi treeish kontrolowane przez wywołującego do git read-tree bez walidacji opcji lub separacji argumentów. Atakujący mogą wstrzyknąć opcję --index-output, aby nadpisać dowolne pliki prawidłowym blobem indeksu git, niszcząc istniejącą zawartość plików w ścieżkach zapisywalnych kontrolowanych przez atakującego.
- CVE-2026-76218Wysokie
GitPython przed wersją 3.1.58 zawiera podatność zdalnego wykonania kodu w funkcji Repo.init, która przekazuje niebezpieczne opcje git bez walidacji. Atakujący może dostarczyć parametr template wskazujący na katalog ze złośliwymi hakami git, które wykonują dowolny kod podczas operacji git na zainicjalizowanym repozytorium.
- CVE-2026-76217Średnie
GitPython w wersjach przed 3.1.58 nie waliduje opcji przekazywanych do poleceń git rm i git checkout w metodach IndexFile.remove() i Head.checkout(). Atakujący mogą dostarczyć parametry --pathspec-from-file i --pathspec-file-nul, aby odczytać dowolne pliki dostępne dla procesu, a pełna zawartość plików jest zwracana w GitCommandError.stderr.
- CVE-2026-73625Wysokie
GitPython przed wersją 3.1.54 zawiera podatność na zdalne wykonanie kodu w zabezpieczeniu check_unsafe_options, które można obejść, przemycając opcje git wewnątrz wartości argumentów o pojedynczym znaku. Atakujący mogą dostarczyć spreparowane słowniki opcji do metod clone_from, fetch, pull, push, ls_remote, iter_commits, blame lub archive, aby wykonać dowolne polecenia systemu operacyjnego za pomocą parametru --upload-pack.
- CVE-2026-73623Wysokie
GitPython przed wersją 3.1.54 zawiera niekompletną listę blokowanych opcji w unsafe_git_clone_options, która pomija --template, umożliwiając atakującym wykonanie dowolnych poleceń podczas operacji klonowania. Atakujący mogą podać --template wskazujący na katalog zawierający złośliwe hooki post-checkout, które wykonują się podczas klonowania repozytorium.
- CVE-2026-73621Średnie
GitPython przed wersją 3.1.56 zawiera podatność na wstrzyknięcie argumentów w metodzie Commit.count(), która przekazuje argumenty słownikowe do 'git rev-list' bez zabezpieczenia check_unsafe_options obecnego w pokrewnej metodzie iter_items. Atakujący, który może kontrolować opcje przekazywane do Commit.count (np. przez aplikację przekazującą słownik opcji dostarczony przez użytkownika), może podać output=<path>, powodując, że 'git rev-list --output=<path>' otworzy i skróci docelowy plik do zera bajtów przed parsowaniem rewizji. Umożliwia to zniszczenie/wyzerowanie dowolnego pliku na poziomie uprawnień procesu (bez kontroli zawartości, skrócenie do 0 bajtów).
- CVE-2026-73619Średnie
GitPython przed wersją 3.1.57 zawiera niekompletną listę zabronionych opcji w zabezpieczeniu unsafe_git_archive_options, która pomija opcje --add-file i --add-virtual-file. Atakujący mogą podać te opcje do metody Repo.archive(), aby odczytać dowolne pliki z systemu plików i dołączyć je do zwracanego archiwum.
- CVE-2026-69097Wysokie
W bibliotece GitPython przed wersją 3.1.53 wykryto podatność polegającą na nieprawidłowym escapowaniu nazw sekcji w plikach konfiguracyjnych gita. Atakujący może wstrzyknąć złośliwe dyrektywy konfiguracyjne (np. core.sshCommand) poprzez nazwy submodułów, co prowadzi do zdalnego wykonania kodu podczas operacji ssh.
- CVE-2026-67326Wysokie
GitPython przed wersją 3.1.50 nie waliduje znaków nowej linii w parametrze section funkcji config_writer(), umożliwiając atakującym wstrzyknięcie dowolnych nagłówków sekcji do pliku .git/config. Atakujący mogą wstrzyknąć znaki nowej linii, aby utworzyć sfałszowaną sekcję [core] z hooksPath wskazującym na kontrolowane przez atakującego katalogi, co prowadzi do zdalnego wykonania kodu po uruchomieniu hooków gita.
- CVE-2026-67325Wysokie
GitPython przed wersją 3.1.51 zawiera niekompletną blokadę wstrzykiwania komend, która nie uwzględnia funkcji skracania długich opcji gita. Atakujący mogą ominąć zabezpieczenie przed niebezpiecznymi opcjami, używając skróconych nazw opcji, takich jak upload_p zamiast upload_pack, które git rozpoznaje jako niebezpieczne opcje i wykonuje dowolne komendy.
- CVE-2026-67323Wysokie
GitPython przed wersją 3.1.51 nie zabezpiecza przed niebezpiecznymi opcjami Git przekazywanymi jako argumenty słownikowe w metodach Repo.archive() i git.ls_remote(), co umożliwia wstrzyknięcie poleceń przez opcje takie jak --exec/--upload-pack. Dodatkowo, Repo.iter_commits() i Repo.blame() nie sprawdzają argumentów rewizji zaczynających się od myślnika, co pozwala na otwarcie i obcięcie dowolnego pliku poprzez rewizję --output=<path>. Wymagana jest aplikacja przekazująca kontrolowane przez atakującego argumenty do tych metod.
- CVE-2026-67322Wysokie
GitPython przed wersją 3.1.52 jest podatny na wyciek zmiennych środowiskowych w metodzie Repo.clone_from(). Adres URL zdalnego repozytorium jest przetwarzany przez Git.polish_url(), który na platformach innych niż Cygwin wywołuje os.path.expandvars() na URL-u przed wykonaniem git clone. Atakujący kontrolujący URL klonowania może osadzić tokeny $NAME lub ${NAME}, które są rozwijane do wartości zmiennych środowiskowych procesu (np. AWS_SECRET_ACCESS_KEY lub GITHUB_TOKEN). Powstały URL, zawierający teraz sekret, jest przesyłany przez sieć do hosta kontrolowanego przez atakującego podczas próby klonowania.
- CVE-2023-41040Średnie
GitPython to biblioteka Pythona służąca do interakcji z repozytoriami Git. W wyniku braku weryfikacji lokalizacji plików, GitPython może odczytać dowolny plik z systemu, co stwarza ryzyko ataku.
- CVE-2023-40590Wysokie
CVE-2023-40590 dotyczy biblioteki GitPython, która może uruchomić złośliwy program `git` z lokalnego repozytorium, jeśli użytkownik uruchomi GitPython z tego katalogu. Problem ten występuje głównie na systemach Windows, gdzie Python nieprawidłowo rozwiązuje ścieżki do wykonywalnych plików.

