CVE-2026-53586
ŚrednieCVSS 6.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 39 - wyżej niż 39% wszystkich znanych CVE
Streszczenie
libgit2 przed wersjami 1.8.6 i 1.9.5 zawiera podatność w wbudowanym transporcie HTTP, która pozwala na przekierowanie do niezaufanego hosta i wysłanie poświadczeń do niego. Atakujący kontrolujący zaufany host Git lub otwarte przekierowanie może ujawnić poświadczenia HTTP Basic, tokeny dostępu osobistego lub równoważne poświadczenia.
Ocena ryzyka
Ryzyko polega na wycieku wrażliwych poświadczeń uwierzytelniających, co może prowadzić do nieautoryzowanego dostępu do systemów.
Rekomendacja
Zaleca się aktualizację libgit2 do wersji 1.8.6 lub 1.9.5, które zawierają poprawkę.
Inne podatności w libgit2
Zobacz wszystkie- CVE-2016-10129Wysokie
Wsparcie dla protokołu Git Smart w libgit2 przed wersją 0.24.6 oraz 0.25.x przed wersją 0.25.1 umożliwia zdalnym atakującym spowodowanie odmowy usługi (dereferencja wskaźnika NULL) poprzez wysłanie pustej linii pakietu.
- CVE-2016-10128Krytyczne
Przepełnienie bufora w funkcji git_pkt_parse_line w protokole Git Smart w libgit2 przed wersją 0.24.6 oraz 0.25.x przed wersją 0.25.1 umożliwia zdalnym atakującym wywołanie nieokreślonego wpływu poprzez spreparowany pakiet nieczyszczący.
- CVE-2026-53587Wysokie
libgit2 przed wersjami 1.8.6 i 1.9.5 zawiera podatność polegającą na wykonaniu strncmp o stałej długości w set_data bez uprzedniego sprawdzenia, czy bufor capability w pakiecie pkt-line protokołu smart zawiera 14 bajtów. Złośliwy serwer Git może spowodować, że format_str przesunie się poza pkt-line, a obliczenie długości przez memchr ulegnie niedomiarowi, co prowadzi do odczytu poza stertą i może spowodować awarię klienta podczas pierwszego pakietu reklamującego referencje.
- CVE-2026-53585Średnie
libgit2 przed wersjami 1.8.6 i 1.9.5 zawiera podatność w funkcji git_delta_apply, która ufa kontrolowanej przez atakującego wartości res_sz, co może prowadzić do nadmiernych alokacji pamięci i wyczerpania pamięci. Złośliwe dane pakietów mogą być dostarczone przez git_clone, git_fetch, git_remote_fetch, git_indexer_append lub lokalne repozytorium.
- CVE-2026-53584Średnie
libgit2 przed wersjami 1.8.6 i 1.9.5 nie odrzuca komponentów przejścia (takich jak ../) w ścieżce submodułu ładowanej z pliku .gitmodules. Złośliwe repozytorium może określić ścieżkę taką jak ../escape-target, a aplikacje inicjalizujące submoduł mogą tworzyć katalogi poza drzewem roboczym repozytorium.
- CVE-2026-53583Średnie
libgit2 przed wersjami 1.8.6 i 1.9.5 zawiera podatność w funkcji verify_server_cert, która używa odwróconego wyniku !!memcmp w gałęzi GEN_IPADD podczas porównywania adresu IP z certyfikatem IP SubjectAltName. Powoduje to odrzucanie pasujących adresów IP i akceptowanie niepasujących, co pozwala atakującemu z certyfikatem zaufanego CA na przechwycenie połączeń do adresów IP.
- CVE-2026-5917Wysokie
libgit2 w wersjach przed 1.8.7 oraz 1.9.0 przed 1.9.7, zbudowany z backendem SSH libssh2 (USE_SSH=libssh2), zawiera podatność na wstrzyknięcie poleceń powłoki. Zdalny atakujący może wykonać dowolne polecenia na serwerze SSH, podając ścieżkę repozytorium zawierającą niescapowane metaznaki powłoki, takie jak pojedyncze cudzysłowy, średniki lub rury. Funkcja gen_proto() w ssh_libssh2.c wstawia ścieżkę repozytorium bezpośrednio do ciągu poleceń powłoki bez escapowania znaków specjalnych przed przekazaniem do libssh2_channel_exec(), co umożliwia atakującemu stworzenie złośliwego adresu URL submodułu w pliku .gitmodules, który podczas rekurencyjnego klonowania powoduje interpretację wstrzykniętych poleceń przez powłokę zdalnego serwera w kontekście konta SSH ofiary.
Oryginalny opis (angielski, źródło NVD)
libgit2 is a portable C implementation of the Git core methods provided as a linkable library with a solid API, allowing to build Git functionality into your application. Prior to 1.8.6 and 1.9.5, the built-in HTTP transport in src/libgit2/transports/http.c follows an offsite initial redirect, and handle_remote_auth and handle_auth pass transport->owner->url instead of transport->server.url to the credential callback when the redirected host returns 401 Unauthorized. A callback that scopes credentials to the original trusted URL can therefore return GIT_CREDENTIAL_USERPASS_PLAINTEXT credentials that libgit2 stores in transport->server.cred and sends as an Authorization header to the redirected host. An attacker who controls a trusted Git host or an open redirect on that host can disclose HTTP Basic credentials, personal access tokens, or equivalent credentials. This issue is fixed in versions 1.8.6 and 1.9.5.

