Alpine Linux dvaput ažurirao GitLab i oba puta ostao ranjiv na napade
Alpine Linux je u oktobru dvaput ažurirao svoj GitLab server, i oba puta ostao ranjiv na propust kroz koji je napadnut. Alpine je minimalna Linux distribucija i jedna od najčešćih osnova za Docker kontejnere, gotova pakovanja u kojima se aplikacije isporučuju na servere. GitLab je 12. oktobra zakrpio propust CVE-2026-97229, ocenjen sa 10 od 10, kroz koji napadač posebno sastavljenim podešavanjem za automatsku izgradnju programskog koda može da pokrene svoje komande na serveru. Alpine je dan kasnije greškom instalirao verziju 19.3.4, umesto 19.3.5 u kojoj je ispravka. Napadač je 20. oktobra otvorio nalog i za dva dana osam puta oborio delove GitLaba, a u četiri pokušaja i odmakao deo puta u svom napadu, pre nego što je zapeo. Preuzeo je i Alpine-ovu verziju GitLaba, što prema Alpine-u ukazuje da je exploit prilagođavao baš njoj. Ni ažuriranje od 22. oktobra nije pomoglo. Greška je zapravo u programskom jeziku Ruby, na kome GitLab radi, a ispravljen Ruby nose samo zvanični GitLab paketi. Alpine koristi sopstveni Ruby, a ispravka za njega stigla je tek 23. oktobra. Dokaza da je napadač uspeo u svojoj nameri za sada nema, ali deo logova je nestao, pa je Alpine svoj server izgradio iz početka i svima resetovao lozinke. Paketi i izdanja provereni su i nisu menjani, a ključevi za potpisivanje nikad nisu ni bili na tom serveru. CISA je 29. oktobra propust stavila na spisak aktivno zloupotrebljavanih i saveznim agencijama dala tri dana za krpljenje.
Alpine nije bio nemaran. Prvi put je promašio verziju, što se dešava. Drugi put je uradio ono što bi uradila većina administratora, i opet ostao ranjiv, jer zakrpa nije bila tamo gde je pokazivao broj verzije. Bila je u jeziku ispod nje, koji su zvanični paketi isporučivali ispravljen, a sopstvena izgradnja nije. U tu zamku najlakše upadaju oni koji sve slažu sami, iako su to često vrlo iskusne ekipe. GitLab za firmu nije samo arhiva programskog koda: tu stoje lozinke za servere, ključevi za oblak i tokeni za automatsku isporuku softvera. Da su ključevi za potpisivanje paketa bili na istom serveru, provala je mogla da se prelije na sve koji koriste Alpine. Vredi primetiti i kako je incident opisan: dan po dan, sa onim što znaju, onim što ne znaju i onim što će promeniti. Kad deo logova nestane, ni pažljiva istraga ne može da potvrdi da li je napadač uspeo u svom pohodu, i Alpine to otvoreno kaže. Koliko firmi kod nas koje drže GitLab na svom serveru zna da li ga pokreću iz zvaničnog paketa ili iz sopstvene izgradnje, ne znamo ni mi. To tek treba da se vidi.
- Proveri verziju GitLaba na svom serveru: ispravka je u 19.2.8, 19.3.5, 19.4.2 i novijim, a 19.3.4 nije dovoljna
- Ako GitLab gradiš sam ili ga pokrećeš u sopstvenom kontejneru, ažuriraj i Ruby na 3.3.13, 3.4.12, 4.0.9 ili noviji; ko koristi sliku alpinelinux/gitlab, neka ponovo preuzme 19.3.6, jer su sve preuzete pre 27. oktobra ranjive
- Isključi slobodno otvaranje naloga na GitLabu ako ti ne treba — napad na Alpine počeo je novim nalogom
- Pregledaj logove od 12. oktobra: ponovljene greške 502, padovi radnih procesa, pristup CI lint API-ju bez prijave i neobični regularni izrazi u CI podešavanjima znak su pokušaja
- Ako uspešan napad ne možeš da isključiš, izgradi server iz početka i promeni lozinke, CI/CD promenljive i tokene runnera, webhookova i integracija