Git łata krytyczną lukę RCE przy rekursywnym klonowaniu repozytoriów z submodułami

securitybeztabu.pl 2 godzin temu

Wprowadzenie do problemu / definicja

Projekt Git opublikował poprawki dla krytycznej podatności CVE-2026-111760, która może prowadzić do wykonania kodu po stronie ofiary podczas rekursywnego klonowania złośliwie przygotowanego repozytorium wraz z submodułami. Problem dotyczy mechanizmu walidacji ścieżek i obsługi indeksu, co bezpośrednio przekłada się na bezpieczeństwo łańcucha dostaw systemu oraz ochronę środowisk deweloperskich i CI/CD.

To szczególnie istotna klasa błędów, ponieważ Git jest używany nie tylko na stacjach roboczych programistów, ale również w systemach automatyzacji, runnerach buildowych, narzędziach code review i usługach analizujących nieznane repozytoria.

W skrócie

  • Git usunął lukę umożliwiającą uruchomienie kontrolowanego kodu podczas operacji recursive clone.
  • Podatność wynika z obcięcia długości ścieżki w indeksie, co pozwala przejść kontrolę bezpieczeństwa pod jedną nazwą, a następnie zapisać plik pod inną, krótszą.
  • W efekcie możliwa jest podmiana pliku .git submodułu na dowiązanie symboliczne prowadzące do katalogu kontrolowanego przez napastnika.
  • Poprawki trafiły do Git 2.56.1 oraz wydań serwisowych dla linii 2.50–2.55.

Kontekst / historia

Opisana luka nie pojawiła się w oderwaniu od szerszego kontekstu bezpieczeństwa Git. W tym samym pakiecie aktualizacji opublikowano poprawki dla kilku dodatkowych podatności obejmujących między innymi path traversal, uszkodzenia pamięci przy scalaniu, błędy podczas przetwarzania binarnych patchy oraz ryzykowne funkcje związane z mechanizmem fast-import.

To istotny sygnał dla organizacji, które traktują Git wyłącznie jako narzędzie developerskie. W praktyce pełni on dziś rolę jednego z fundamentów nowoczesnego procesu dostarczania oprogramowania. Każda podatność umożliwiająca wykonanie kodu, zapis poza oczekiwanym zakresem plików lub manipulację metadanymi repozytorium może przełożyć się na incydent o zasięgu obejmującym cały pipeline.

Analiza techniczna

Sednem CVE-2026-111760 jest błąd typu integer truncation w obsłudze indeksu Git. Mechanizm bezpieczeństwa weryfikuje ścieżki przed zapisaniem ich do drzewa roboczego, aby nie dopuścić do nadpisania metadanych repozytorium. W określonych warunkach bardzo długa ścieżka może jednak zostać zweryfikowana w jednej postaci, a następnie zapisana na dysk pod nazwą skróconą wskutek obcięcia długości.

Ta rozbieżność między etapem walidacji a faktycznym zapisem umożliwia atakującemu doprowadzenie do sytuacji, w której plik .git należący do submodułu zostaje zastąpiony dowiązaniem symbolicznym wskazującym na katalog zawierający złośliwe hooki lub kontrolowaną konfigurację. Jest to szczególnie groźne w przypadku submodułów, ponieważ po świeżym sklonowaniu ich .git występuje jako plik, a nie katalog, co upraszcza scenariusz podmiany.

Po przejęciu ścieżki do metadanych Git może odwołać się do zasobów przygotowanych przez napastnika i wykorzystać znajdujące się tam hooki albo ustawienia. W praktyce otwiera to drogę do wykonania kodu w trakcie dalszego przetwarzania repozytorium lub kolejnych operacji wykonywanych automatycznie przez narzędzia integracyjne.

W tym samym pakiecie usunięto również inne istotne słabości:

  • CVE-2026-113408 związane z path traversal przez złośliwie reklamowany HEAD w Git protocol v2,
  • CVE-2026-114467 powodujące uszkodzenie stosu przy obsłudze tagów z więcej niż dwiema sygnaturami GPG,
  • CVE-2026-114469 umożliwiające wyjście poza bufor przy stosowaniu specjalnie przygotowanych binarnych patchy,
  • CVE-2026-105437 prowadzące do uszkodzenia pamięci sterty podczas bardzo dużych merge’y,
  • CVE-2026-114466 dotyczące niebezpiecznych funkcji git fast-import, które mogły umożliwiać dostęp do plików poza repozytorium lub ich tworzenie.

Konsekwencje / ryzyko

Najpoważniejszą konsekwencją CVE-2026-111760 jest możliwość zdalnego wykonania kodu po stronie użytkownika lub systemu automatyzacji, który wykona rekursywne klonowanie nieufnego repozytorium. To oznacza realne zagrożenie dla środowisk deweloperskich, build serwerów, platform integracyjnych oraz usług przetwarzających submoduły bez odpowiedniej izolacji.

Ryzyko jest szczególnie istotne w organizacjach, które:

  • korzystają z automatycznego pobierania zależności przez Git,
  • uruchamiają joby CI/CD dla kodu pochodzącego od zewnętrznych współpracowników,
  • analizują nieznane repozytoria w systemach skanowania lub sandboxingu,
  • utrzymują własne narzędzia bundlujące osadzone wersje Git.

Dodatkowym problemem jest fakt, iż powierzchnia ataku nie musi ograniczać się do manualnego użycia klienta Git przez programistę. o ile podatna wersja została osadzona w aplikacji desktopowej, agencie buildowym, obrazie kontenerowym lub usłudze serwerowej, potencjalny wpływ obejmuje znacznie szerszy ekosystem narzędziowy organizacji.

Rekomendacje

Podstawowym działaniem obronnym jest natychmiastowa aktualizacja do Git 2.56.1 lub odpowiedniego poprawionego wydania dla używanej linii utrzymaniowej: 2.55.1, 2.54.1, 2.53.1, 2.52.1, 2.51.3 albo 2.50.2. Organizacje powinny również sprawdzić wszystkie aplikacje dostarczające własną kopię Git, ponieważ aktualizacja samego pakietu systemowego może nie rozwiązać problemu.

Z perspektywy operacyjnej warto wdrożyć następujące środki:

  • blokować rekursywne klonowanie z nieufnych źródeł,
  • ograniczyć obsługę submodułów w automatyzacji do repozytoriów zaufanych,
  • przejrzeć pipeline’y CI/CD pod kątem komend git clone --recursive,
  • uruchamiać operacje Git na nieznanym kodzie w izolowanych środowiskach,
  • monitorować użycie hooków, niestandardowej konfiguracji i podejrzanych dowiązań symbolicznych,
  • aktualizować jednocześnie stacje robocze deweloperów, obrazy kontenerów, runnerów oraz build agentów.

Administratorzy platform hostingowych i instancji serwerowych powinni dodatkowo zweryfikować wersje komponentów zależnych. o ile natychmiastowa aktualizacja nie jest możliwa, należy tymczasowo ograniczyć klonowanie, merge’e, import strumieni i przetwarzanie patchy pochodzących z nieufnych źródeł.

Podsumowanie

CVE-2026-111760 pokazuje, iż choćby fundamentalne narzędzia wykorzystywane codziennie w procesie wytwarzania systemu mogą stać się wektorem ataku na łańcuch dostaw. Błąd w obsłudze indeksu Git umożliwia podmianę metadanych submodułu i stworzenie warunków do wykonania kodu podczas rekursywnego klonowania.

Dla organizacji oznacza to konieczność szybkiego wdrożenia poprawek, przeglądu procesów automatyzacji oraz ograniczenia zaufania wobec zewnętrznych repozytoriów i submodułów. W praktyce bezpieczeństwo Git powinno być traktowane jako element bezpieczeństwa całego pipeline’u, a nie wyłącznie pojedynczego narzędzia developerskiego.

Źródła

  1. https://thehackernews.com/2026/11/git-patches-flaw-that-lets-malicious.html
  2. https://github.blog/open-source/git/git-security-vulnerabilities-announced-7/
  3. https://git-scm.com/downloads
Idź do oryginalnego materiału