Deweloperzy dystrybucji Alpine Linux ujawnili informacje o próbach włamania na platformę współpracy gitlab.alpinelinux.org, na której prowadzono prace nad menedżerem pakietów APK, narzędziami do kompilacji, komponentami infrastruktury oraz skryptami do budowy pakietów (aports). Atak został przeprowadzony poprzez wykorzystanie podatności w platformie GitLab, spowodowanej przepełnieniem liczb całkowitych w silniku wyrażeń regularnych języka Ruby. Nie udało się znaleźć dowodów ani śladów udanego włamania, jednak ponieważ całkowite wykluczenie udanego wykorzystania podatności nie jest możliwe, kontener z GitLab został uznany za potencjalnie skompromitowany, a jego zawartość została całkowicie odbudowana od podstaw, a użytkownikom zainicjowano procedurę zmiany haseł.
Administratorzy infrastruktury Alpine Linux nie stwierdzili obecności obcych plików, podejrzanych uruchomionych procesów, nietypowych wywołań API, zmian ustawień i plików systemowych, a także skoków obciążenia, charakterystycznych dla masowego wydobycia danych. W trakcie analizy integralności repozytorium aports, pakietów i plików z wydaniami, a także ich weryfikacji z kopiami z zewnętrznych serwerów kompilacyjnych i systemów deweloperów, nie ujawniono żadnych ukrytych zmian.
Całkowite wykluczenie udanej przeprowadzania ataku utrudnia brak informacji o wychodzących połączeniach sieciowych, usunięcie niektórych logów podczas rotacji (np. logu cron-a) oraz brak odpowiedniego szczegółowego opisu w logach serwera www (udane zastosowanie exploita, które nie prowadzi do awaryjnego zakończenia, nie odzwierciedla się w logu).
W przypadku udanego ataku, napastnicy mogli uzyskać dostęp do bazy danych z danymi o wszystkich użytkownikach GitLab (hasze haseł, e-maile, adresy IP itp.), zmiennych środowiskowych oraz tokenów z systemów ciągłej integracji, kodów dwuetapowej weryfikacji, haszy osobistych tokenów dostępu, zawartości prywatnych repozytoriów i poufnych dyskusji o problemach. Klucze do generowania podpisów cyfrowych dla wydań i pakietów na zaatakowanym serwerze nie były przechowywane.
Pierwsze próby wykorzystania luki zostały zarejestrowane 20 i 21 października. Atakujący zarejestrował konto w GitLab i próbował wysłać zmodyfikowane ustawienia systemu ciągłej integracji. W logach odnotowano 8 awaryjnych zakończeń procesów GitLab, z czego 4 były związane z zastosowaniem exploita. Zauważono, że pierwsza faza działania exploita zakończyła się sukcesem, ale druga faza zakończyła się niepowodzeniem.
W momencie ataku w kontenerze wykorzystywana była podatna wersja GitLab 19.3.4, która 22 października została zaktualizowana do wersji GitLab 19.3.6. Jednak administratorzy Alpine nie uwzględnili faktu, że poprawka została wprowadzona tylko w oficjalnych pakietach instalacyjnych GitLab 19.3.6, a nie w samym kodzie GitLab, ponieważ luka występowała w narzędziach Ruby. W kontenerze nadal używano starego narzędzia Ruby, a luka pozostała niezałatana.
Fakt, że system pozostaje podatny, został wykryty dopiero 26 października. Analiza logów wykazała, że atakujący wznowili próby ataku 25 i 26 października. 27 października dostęp użytkowników zewnętrznych do GitLab został ograniczony. 28 października zawartość została przebudowana, wszystkie hasła zostały zresetowane (użytkownicy muszą ustawić nowe hasło w ramach procedury odzyskiwania zapomnianego hasła), a klucze dostępu zostały wymienione. 29 października zaktualizowany serwer został włączony do użytku. Projekt Docker-kontener alpinelinux/gitlab pozostawał podatny do 27 października.
Źródło: opennet.ru
