Čo sa stalo
GitLab je platforma, na ktorej firmy ukladajú zdrojový kód, riešia úlohy a spúšťajú automatické zostavenia a nasadenia (CI/CD). Mnohé organizácie ju prevádzkujú na vlastnom serveri. 12. októbra 2026 vydal GitLab opravné verzie 19.4.2, 19.3.5 a 19.2.8, ktoré okrem iného opravujú kritickú chybu CVE-2026-97229. Podľa GitLabu mohla za určitých podmienok umožniť neprihlásenému používateľovi spustiť ľubovoľný kód na serveri cez špeciálne upravený regulárny výraz v konfigurácii CI/CD.
Chyba sa nachádza v Onigmo, knižnici na spracovanie regulárnych výrazov zabudovanej v jazyku Ruby, na ktorom GitLab beží. GitLab ju opravil úpravou Ruby vo svojich balíkoch a kontajnerových obrazoch. Opravené verzie samotného Ruby vyšli až 22. a 23. októbra 2026, píše The Hacker News.
Projekt Alpine Linux 28. októbra 2026 oznámil, že sa útočník pokúsil chybu zneužiť na jeho GitLab serveri. Alpine nenašiel dôkaz, že útok uspel, ale nemôže ho vylúčiť, preto server postavil nanovo a resetoval heslá všetkých účtov. Ku 28. októbru chyba nebola v katalógu CISA KEV a ani európska databáza EUVD neeviduje potvrdené zneužívanie.
Prečo je to nebezpečné
Ide o pretečenie celého čísla (CWE-190). Predstavte si starý tachometer v aute: keď prekročí 999 999, ukáže zase samé nuly. Program, ktorému sa takto „pretočí“ počítadlo, zrazu nesprávne odhadne, koľko miesta má na dáta. Útočník to môže využiť na prepísanie pamäte a spustenie vlastného kódu. Tu sa to deje pri spracovaní regulárneho výrazu, teda vzoru na vyhľadávanie v texte, ktorý GitLab číta z konfigurácie CI/CD.
GitLab uvádza, že útok môže za určitých podmienok vykonať aj neprihlásený používateľ cez internet. Firma Rapid7 zostavila v laboratóriu funkčný útok a 13. októbra 2026 zverejnila ukážkový kód. V jej scenári musí útočník najprv zapísať upravené súbory do verejného projektu a neprihlásená je až posledná požiadavka. Na serveroch, kde sa noví používatelia môžu sami registrovať a zakladať projekty, však táto prekážka prakticky odpadá.
V teste Rapid7 útok spúšťal príkazy pod používateľom git, pod ktorým GitLab beží. Podľa Alpine by pri úspešnom útoku mohli uniknúť údaje používateľov, hashe hesiel, tajomstvá dvojfaktorového overenia, premenné CI/CD, tokeny runnerov, prihlasovacie údaje integrácií a súkromné repozitáre.
- CVSS 10,0 (verzia 3.1) je najvyššie možné skóre závažnosti na stupnici 0 až 10. Pridelil ho samotný GitLab.
- EPSS odhaduje pravdepodobnosť zneužitia v najbližších 30 dňoch. K 29. októbru 2026 je to 18,4 %, čo je viac než u 97,2 % hodnotených zraniteľností.
- CISA KEV je zoznam chýb, ktorých zneužívanie potvrdila americká agentúra CISA. Táto chyba v ňom ku 28. októbru 2026 nebola.
Koho sa to týka
Týka sa to GitLab Community Edition (CE) aj Enterprise Edition (EE) prevádzkovaných vo vlastnej réžii (self-managed), vo všetkých typoch inštalácie:
- 19.2 pred verziou 19.2.8
- 19.3 pred verziou 19.3.5, vrátane 19.3.4, ktorú GitLab pôvodne uvádzal ako opravenú
- 19.4 pred verziou 19.4.2
Osobitné riziko majú inštalácie skompilované zo zdrojového kódu a vlastné kontajnerové obrazy, ktoré inštalujú Ruby samostatne. Tam aktualizácia GitLabu chybu neodstráni, kým sa neaktualizuje aj Ruby, ako zistil projekt Alpine Linux.
Netýka sa to služieb GitLab.com a GitLab Dedicated, ktoré GitLab už opravil. Vetvy 19.5, 19.1, 19.0 a 18.11 GitLab medzi dotknutými neuvádza. Najviac ohrozené sú servery dostupné z internetu s verejnými projektmi alebo otvorenou registráciou.
Ako zistiť, či ste zasiahnutí
Verziu nájdete v administrácii GitLabu (Admin area, prehľad Dashboard) alebo na stránke /help. Na serveri s oficiálnym balíkom pomôžu tieto príkazy, ktoré len čítajú:
sudo gitlab-rake gitlab:env:info
head -n 1 /opt/gitlab/version-manifest.txt
Pri oficiálnom kontajneri spustite to isté vnútri kontajnera (názov gitlab nahraďte svojím):
docker exec gitlab head -n 1 /opt/gitlab/version-manifest.txt
Pri inštalácii zo zdrojového kódu alebo vlastnom obraze zistite aj verziu GitLabu a Ruby, ktoré používa používateľ git. Opravené sú Ruby 3.3.13, 3.4.12, 4.0.9 alebo novšie, Ruby 3.2 opravu nedostane.
cd /home/git/gitlab && sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production
sudo -u git -H ruby -v
Ako to opraviť
Postupujte v tomto poradí:
- Urobte zálohu GitLabu a jeho konfigurácie podľa návodu GitLabu.
- Inštalácie z oficiálneho balíka alebo oficiálneho kontajnera aktualizujte na najnovšiu verziu svojej vetvy. K 21. októbru 2026 sú to 19.4.3, 19.3.6 a 19.2.9, chybu opravujú už 19.4.2, 19.3.5 a 19.2.8. Vydania z 21. októbra opravujú aj samostatnú chybu CVE-2026-110264.
- Servery na verzii 19.3.4 aktualizujte na 19.3.6, verzia 19.3.4 opravená nie je.
- Pri inštalácii zo zdrojového kódu alebo vlastnom obraze aktualizujte GitLab a zároveň Ruby na 3.3.13, 3.4.12, 4.0.9 alebo novšie. Ruby 3.2 je od apríla bez podpory a opravu nedostane.
- Používatelia obrazu
alpinelinux/gitlabsi musia verziu 19.3.6 stiahnuť znova. - Po aktualizácii znova overte verziu GitLabu aj Ruby príkazmi zo sekcie vyššie.
Ak nemôžete aktualizovať hneď, Rapid7 odporúča obmedziť anonymný prístup k verejným projektom, zabrániť nedôveryhodným používateľom zakladať verejné projekty alebo do nich zapisovať, prípadne zablokovať cestu CI lint. Rapid7 upozorňuje, že tieto kroky pokrývajú len ňou testovaný spôsob útoku a samotnú chybu neodstraňujú. Ide teda len o dočasné riešenie, kým aktualizáciu nenasadíte.
Čo ak už ste mohli byť napadnutí
GitLab vydal šesť detekčných pravidiel vo formáte Sigma pre servery vo vlastnej réžii: Onigmo native worker crash, Graphql cilint hostile regexp, ci regexp oversized non ascii path, ci regexp guard rejection, ci lint workhorse worker crash a ci lint scripted client error burst. V logoch a monitoringu si všimnite najmä:
- opakované pády pracovných procesov GitLabu, chyby 502 a zlyhané úlohy CI
- správy o páde Ruby, ktoré ukazujú na Onigmo
- nezvyčajne dlhé cesty k súborom s ne-ASCII znakmi a podozrivé požiadavky GraphQL ciLint
- nedávno zaregistrované účty, ktoré posielajú konfigurácie CI
Pozor: GitLab upozorňuje, že úspešný útok nemusí spôsobiť pád. Podľa Alpine by úspešný útok nezanechal pád ani stopu vo webových logoch. Ak server bežal na zraniteľnej verzii a bol dostupný z internetu, zvážte výmenu hesiel, tokenov runnerov, premenných CI/CD, prístupových tokenov a údajov integrácií. Alpine v takej situácii server postavil nanovo, resetoval heslá a vymenil tajné kľúče GitLabu.
Ak nájdete niektorý z týchto príznakov alebo vám chýbajú logy z kritického obdobia, prizvite odborníka na riešenie incidentov. Pred zásahmi do servera si logy zálohujte.