Opublikowano poprawki do rozproszonego systemu zarządzania kodem źródłowym Git 2.39.1, 2.38.3, 2.37.5, 2.36.4, 2.35.6, 2.34.6, 2.33.6, 2.32.5, 2.31.6 i 2.30.7, w których usunięto dwie podatności umożliwiające wykonanie własnego kodu na systemie użytkownika podczas korzystania z polecenia „git archive” oraz pracy z nieufnymi zewnętrznymi repozytoriami. Podatności powstały w wyniku błędów w kodzie formatowania commitów i analizie pliku „.gitattributes”, które podczas przetwarzania zewnętrznych repozytoriów mogą prowadzić do zapisu w obszarze pamięci poza stertą oraz odczytu dowolnych danych z pamięci.
Obie podatności zostały wykryte podczas audytu bezpieczeństwa kodu źródłowego Git, przeprowadzonego przez firmę X41 na zlecenie fundacji OSTIF (Open Source Technology Improvement Fund), utworzonej w celu wzmocnienia bezpieczeństwa otwartych projektów. Oprócz dwóch analizowanych poniżej krytycznych problemów w trakcie audytu odnaleziono również jedną niebezpieczną podatność, jedną średnią podatność oraz cztery problemy niskiego ryzyka. Podano także 27 zaleceń dotyczących poprawy bezpieczeństwa kodu.
- CVE-2022-41903: przepełnienie całkowite w kodzie formatowania informacji o commitach, które występuje przy przetwarzaniu dużych wartości przesunięcia w operatorach dopełnienia, takich jak „%<(“, „%(“, „%>>(
Podatność objawia się zarówno przy bezpośrednim wywołaniu z odpowiednio sformatowanymi parametrami formatowania (na przykład przy uruchamianiu „git log —format=…”), jak i przy pośrednim wykorzystaniu formatowania podczas wykonywania polecenia „git archive” w repozytorium kontrolowanym przez atakującego. W drugim przypadku modyfikatory formatowania są definiowane przez parametr export-subst w pliku „.gitattributes”, który może być umieszczony przez atakującego w swoim repozytorium. Problem może być wykorzystany do odczytu i zapisu w dowolnych obszarach w stercie i prowadzić do wykonania kodu przez napastnika podczas pracy z niesprawdzonymi repozytoriami.
- CVE-2022-23521: przepełnienia liczb całkowitych podczas analizowania zawartości plików „.gitattributes” w repozytorium, które objawiają się przy przetwarzaniu bardzo dużej liczby wzorców ścieżek plików lub dużej liczby atrybutów z jednym wzorcem, a także podczas analizy bardzo dużych nazw atrybutów. Problem może być wykorzystany do odczytu i zapisu arbitralnych obszarów w pamięci i prowadzić do wykonania kodu złośliwego w przypadku pracy z nieweryfikowanym repozytorium, w którym atakujący może umieścić specjalnie przygotowany plik .gitattributes i zapewnić jego dodanie do indeksu.
Aktualizacje pakietów w dystrybucjach można śledzić na stronach: Debian, Ubuntu, Gentoo, RHEL, SUSE, Arch, FreeBSD, NetBSD. Aby zmniejszyć ryzyko prowadzenia ataku w przypadku braku możliwości terminowego zainstalowania aktualizacji, zaleca się unikanie pracy z niewiarygodnymi repozytoriami oraz korzystania z polecenia „git archive”. Ważne jest pamiętanie, że polecenie „git archive” może być uruchamiane niejawnie, np. z git daemona. Aby wyłączyć uruchamianie „git archive” w git daemon, należy zmienić parametr daemon.uploadArch komendą „git config —global daemon.uploadArch false”.
Dodatkowo można zauważyć jeszcze jedną lukę (CVE-2022-41953) w produkcie Git for Windows, która umożliwia wykonywanie kodu podczas klonowania przez interfejs graficzny nieweryfikowanych zewnętrznych repozytoriów. Problem wynika z tego, że Git GUI dla systemu Windows po operacji „checkout” automatycznie uruchamia niektóre polecenia post-processingu, takie jak wykonywanie programu spell-check w celu sprawdzenia pisowni, przy czym ścieżki wyszukiwania pliku spell-check obejmują również sklonowane drzewo robocze (atak polega na dodaniu spell-check do drzewa roboczego repozytorium).
Źródło: opennet.ru
