CVE-2026-82247
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 22 - wyżej niż 22% wszystkich znanych CVE
Streszczenie
Crate gix-url w gitoxide (<= 0.32.0, naprawione w 0.37.1) używa ręcznie napisanego parsera URL, który nie traktuje '?' ani '#' jako końca komponentu authority, wbrew RFC 3986. W konsekwencji mechanizm ochrony tożsamości przekierowań HTTP w gix-transport (can_reuse_identity) porównuje niewłaściwy host i zawodzi w trybie otwartym. Atakujący kontrolujący odpowiedź przekierowania może stworzyć nagłówek Location w postaci <authority-atakującego>?@<oryginalne-authority>, aby gitoxide wysłał poświadczenia HTTP Basic Authorization wywołującego do niezamierzonego hosta. gix-transport jest dotknięty w wersjach <= 0.49.0 (naprawione w 0.58.1).
Ocena ryzyka
Ryzyko polega na możliwości przechwycenia poświadczeń uwierzytelniających przez atakującego, co może prowadzić do nieautoryzowanego dostępu do systemów i danych.
Rekomendacja
Zaleca się aktualizację gix-url do wersji 0.37.1 lub nowszej oraz gix-transport do 0.58.1 lub nowszej, aby zapobiec wyciekowi poświadczeń.
Inne podatności w gitoxide
Zobacz wszystkie- CVE-2026-109351Średnie
Gitoxide gix-pack przed wersją 0.75.0 zawiera podatność na niekontrolowaną alokację pamięci, która pozwala zdalnym atakującym przerwać proces poprzez dostarczenie ogromnej liczby obiektów w nagłówku pack. Złośliwe zdalne repozytoria mogą wysłać 12-bajtowy nagłówek pack deklarujący 0xFFFFFFFF obiektów, co wymusza rezerwację setek gigabajtów przez Tree::with_capacity i powoduje awarię operacji clone lub fetch.
- CVE-2026-44471Wysokie
W wersjach przed 0.21.1 gitoxide, implementacja gita napisana w Rust, pozwala na stworzenie złośliwego drzewa, które umożliwia zapisanie symlinków kontrolowanych przez atakującego w dowolnym katalogu, do którego użytkownik ma dostęp do zapisu.
- CVE-2026-109350Średnie
Gitoxide gix-pack przed wersją 0.75.0 zawiera podatność na odmowę usługi, która pozwala złośliwym zdalnym repozytoriom spowodować awarię operacji fetch poprzez wysyłanie spreparowanych wpisów OFS_DELTA w cienkich pakietach. Atakujący mogą dostarczyć cienki pakiet z REF_DELTA odnoszącym się do istniejącego obiektu, a następnie OFS_DELTA, którego base_distance przekracza pack_offset, co wywołuje panic w LookupRefDeltaObjectsIter i przerywa proces pobierania.
- CVE-2026-109349Średnie
gitoxide gix-pack przed wersją 0.75.0 zawiera osiągalną asercję w BytesToEntriesIter::new_from_header: dekoder nagłówka pack akceptuje wersję 3, ale asercja włączona w wydaniu wymaga wersji 2. Złośliwe zdalne repozytorium może wysłać 12-bajtowy nagłówek pack deklarujący wersję 3, co powoduje panic klienta i przerwanie operacji clone lub fetch.
- CVE-2026-109348Średnie
Gitoxide gix-mailmap przed wersją 0.35.0 zawiera podatność na odmowę usługi, która pozwala atakującym wyczerpać CPU poprzez kwadratowe parsowanie w Snapshot::from_bytes. Atakujący mogą zatwierdzić spreparowany plik .mailmap z wpisami w kolejności malejącej, wymuszając wielokrotne wstawiania na początku, co blokuje pracowników wykonujących log, blame lub shortlog na kilka minut.
- CVE-2026-100419Wysokie
gitoxide gix-fs przed wersją 0.23.0 zawiera podatność polegającą na obejściu walidacji ścieżek w mechanizmie wymiany plików (worktree checkout), która pozwala atakującym na wydostanie się poza katalog worktree poprzez manipulację dowiązaniami symbolicznymi. Podczas wymuszonego checkout z włączoną opcją overwrite_existing, atakujący mogą stworzyć złośliwe drzewa repozytorium, w których wpisy dowiązań symbolicznych zastępują zwalidowane katalogi, powodując zapis kolejnych plików poza worktree przez dowiązanie, co umożliwia wykonanie kodu lub manipulację plikami.
- CVE-2025-24890Średnie
gitoxide to implementacja gita napisana w Rust. Przed wersją 0.13.3, crate gix-sec na Windowsie błędnie traktuje repozytoria kontrolowane przez innego użytkownika jako zaufane, gdy administrator uruchamia zależny program z nieprzefiltrowanym tokenem podniesionym. W gix-sec/src/identity.rs, gix_sec::identity::is_path_owned_by_current_user uzyskuje folder_owner i token_owner, ale jego specyficzne dla administratora sprawdzenia IsWellKnownSid i CheckTokenMembership badają bieżący token, a nie potwierdzają właściciela katalogu. To omija ochronę safe.directory dla repozytoriów należących i skonfigurowanych przez ograniczonego użytkownika, pozwalając konfiguracji repozytorium lub hakom na wykonanie poleceń z uprawnieniami administratora, gdy wykonywana jest dotknięta operacja. Eksploatacja wymaga systemu Windows, podniesionego administratora, programu polegającego na wynikach zaufania gix-sec oraz interakcji z repozytorium kontrolowanym przez innego użytkownika. Niepodniesiony proces UAC nie jest dotknięty, a klonowanie nie jest dotknięte, ponieważ konfiguracja repozytorium i haki nie są kopiowane. Problem naprawiono w wersji 0.13.3.
- CVE-2026-82255Średnie
gitoxide w wersjach od 0.25.4 zawiera podatność na wyciek poświadczeń HTTP w backendzie transportowym opartym na curl, gdzie poświadczenia są wysyłane do serwerów kontrolowanych przez atakującego po przekierowaniach HTTP. Podatność występuje, ponieważ walidacja poświadczeń sprawdza oryginalny URL zamiast efektywnego URL po przekierowaniu, co pozwala atakującym na kradzież tokenów uwierzytelniających przez przekierowania między domenami lub degradację HTTPS do HTTP.
- CVE-2026-82254Wysokie
gitoxide przed wersją 0.69.0 zawiera niesprawdzane indeksowanie tablicy podczas aplikowania delt oraz nieograniczoną alokację pamięci na podstawie rozmiarów kontrolowanych przez atakującego w nagłówkach w gix-pack. Atakujący mogą wysłać spreparowane dane pakietu podczas klonowania lub pobierania, aby wywołać panikę lub zabicie procesu z powodu braku pamięci.
- CVE-2026-82253Wysokie
gitoxide (crates Rusta gix <= 0.72.0 i gix-validate <= 0.10.0) zawiera podatność na przechodzenie po ścieżkach. Funkcja walidacji nazw podmodułów w gix-validate sprawdza tylko pierwsze wystąpienie '..' przez name.find(b".."), co pozwala na obejście walidacji przez spreparowane nazwy takie jak 'a..b/../../../.git/'. Dodatkowo ta walidacja nie jest wywoływana w ścieżkach produkcyjnych. W połączeniu z wadą dziedziczenia zaufania w Submodule::open(), gdzie git_dir_trust (Trust::Full) repozytorium nadrzędnego jest klonowane i pomijana jest weryfikacja własności, atakujący może stworzyć złośliwy plik .gitmodules, aby narzędzie ofiary zbudowane na gitoxide czytało dowolną konfigurację repozytorium git (w tym osadzone poświadczenia) z pełnym zaufaniem, omijając ochronę safe-directory. Naprawione w gix 0.82.0 i gix-validate 0.11.1.
Oryginalny opis (angielski, źródło NVD)
gitoxide's gix-url crate (<= 0.32.0, fixed in 0.37.1) uses a hand-rolled URL parser that does not treat '?' or '#' as terminating the authority component, contrary to RFC 3986. As a consequence, gix-transport's HTTP redirect identity guard (can_reuse_identity) compares the wrong host and fails open. An attacker controlling a redirect response can craft a Location header of the form <attacker-authority>?@<original-authority> so that gitoxide sends the caller's HTTP Basic Authorization credentials to an unintended host. gix-transport is affected in versions <= 0.49.0 (fixed in 0.58.1).
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

