Co se stalo
GitLab je platforma, na které firmy uchovávají zdrojový kód, řeší úkoly a spouštějí automatická sestavení a nasazení (CI/CD). Řada organizací ji provozuje na vlastním serveru. 12. října 2026 vydal GitLab opravné verze 19.4.2, 19.3.5 a 19.2.8, které mimo jiné opravují kritickou chybu CVE-2026-97229. Podle GitLabu mohla za určitých podmínek umožnit nepřihlášenému uživateli spustit libovolný kód na serveru přes speciálně upravený regulární výraz v konfiguraci CI/CD.
Chyba je v Onigmo, knihovně pro zpracování regulárních výrazů zabudované v jazyce Ruby, na kterém GitLab běží. GitLab ji opravil úpravou Ruby ve svých balíčcích a kontejnerových obrazech. Opravené verze samotného Ruby vyšly až 22. a 23. října 2026, uvádí The Hacker News.
Projekt Alpine Linux 28. října 2026 oznámil, že se útočník pokusil chybu zneužít na jeho GitLab serveru. Alpine nenašel důkaz, že útok uspěl, ale nemůže ho vyloučit, a proto server postavil znovu od nuly a resetoval hesla všech účtů. Ke 28. říjnu chyba nebyla v katalogu CISA KEV a ani evropská databáze EUVD neeviduje potvrzené zneužívání.
Proč je to nebezpečné
Jde o přetečení celého čísla (CWE-190). Představte si starý tachometr v autě: když překročí 999 999, ukáže zase samé nuly. Program, kterému se takto „přetočí“ počítadlo, najednou špatně odhadne, kolik místa má pro data. Útočník toho může využít k přepsání paměti a spuštění vlastního kódu. Zde k tomu dochází při zpracování regulárního výrazu, tedy vzoru pro vyhledávání v textu, který GitLab čte z konfigurace CI/CD.
GitLab uvádí, že útok může za určitých podmínek provést i nepřihlášený uživatel přes internet. Firma Rapid7 sestavila v laboratoři funkční útok a 13. října 2026 zveřejnila ukázkový kód. V jejím scénáři musí útočník nejdřív zapsat upravené soubory do veřejného projektu a nepřihlášený je až poslední požadavek. Na serverech, kde se noví uživatelé mohou sami registrovat a zakládat projekty, ale tato překážka prakticky odpadá.
V testu Rapid7 útok spouštěl příkazy pod uživatelem git, pod kterým GitLab běží. Podle Alpine by při úspěšném útoku mohly uniknout údaje uživatelů, hashe hesel, tajemství dvoufaktorového ověření, proměnné CI/CD, tokeny runnerů, přihlašovací údaje integrací a soukromé repozitáře.
- CVSS 10,0 (verze 3.1) je nejvyšší možné skóre závažnosti na stupnici 0 až 10. Přidělil ho samotný GitLab.
- EPSS odhaduje pravděpodobnost zneužití v příštích 30 dnech. K 29. říjnu 2026 je to 18,4 %, což je víc než u 97,2 % hodnocených zranitelností.
- CISA KEV je seznam chyb, jejichž zneužívání potvrdila americká agentura CISA. Tato chyba v něm ke 28. říjnu 2026 nebyla.
Koho se to týká
Týká se to GitLab Community Edition (CE) i Enterprise Edition (EE) provozovaných ve vlastní režii (self-managed), ve všech typech instalace:
- 19.2 před verzí 19.2.8
- 19.3 před verzí 19.3.5, včetně 19.3.4, kterou GitLab původně uváděl jako opravenou
- 19.4 před verzí 19.4.2
Zvláštní riziko mají instalace zkompilované ze zdrojového kódu a vlastní kontejnerové obrazy, které instalují Ruby samostatně. Tam aktualizace GitLabu chybu neodstraní, dokud se neaktualizuje i Ruby, jak zjistil projekt Alpine Linux.
Netýká se to služeb GitLab.com a GitLab Dedicated, které GitLab už opravil. Větve 19.5, 19.1, 19.0 a 18.11 GitLab mezi dotčenými neuvádí. Nejvíce ohrožené jsou servery dostupné z internetu s veřejnými projekty nebo otevřenou registrací.
Jak zjistit, zda jste zasaženi
Verzi najdete v administraci GitLabu (Admin area, přehled Dashboard) nebo na stránce /help. Na serveru s oficiálním balíčkem pomohou tyto příkazy, které pouze čtou:
sudo gitlab-rake gitlab:env:info
head -n 1 /opt/gitlab/version-manifest.txt
U oficiálního kontejneru spusťte totéž uvnitř kontejneru (název gitlab nahraďte svým):
docker exec gitlab head -n 1 /opt/gitlab/version-manifest.txt
U instalace ze zdrojového kódu nebo vlastního obrazu zjistěte i verzi GitLabu a Ruby, které používá uživatel git. Opravené jsou Ruby 3.3.13, 3.4.12, 4.0.9 nebo novější, 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
Jak to opravit
Postupujte v tomto pořadí:
- Zálohujte GitLab a jeho konfiguraci podle návodu GitLabu.
- Instalace z oficiálního balíčku nebo oficiálního kontejneru aktualizujte na nejnovější verzi své větve. K 21. říjnu 2026 jsou to 19.4.3, 19.3.6 a 19.2.9, chybu opravují už 19.4.2, 19.3.5 a 19.2.8. Vydání z 21. října opravují i samostatnou chybu CVE-2026-110264.
- Servery na verzi 19.3.4 aktualizujte na 19.3.6, verze 19.3.4 opravená není.
- U instalace ze zdrojového kódu nebo vlastního obrazu aktualizujte GitLab a zároveň Ruby na 3.3.13, 3.4.12, 4.0.9 nebo novější. Ruby 3.2 je od dubna bez podpory a opravu nedostane.
- Uživatelé obrazu
alpinelinux/gitlabsi musí verzi 19.3.6 stáhnout znovu. - Po aktualizaci znovu ověřte verzi GitLabu i Ruby příkazy z předchozí sekce.
Pokud nemůžete aktualizovat hned, Rapid7 doporučuje omezit anonymní přístup k veřejným projektům, zabránit nedůvěryhodným uživatelům zakládat veřejné projekty nebo do nich zapisovat, případně zablokovat cestu CI lint. Rapid7 upozorňuje, že tyto kroky pokrývají jen jí testovaný způsob útoku a samotnou chybu neodstraňují. Jde tedy jen o dočasné řešení, než aktualizaci nasadíte.
Co když už jste mohli být napadeni
GitLab vydal šest detekčních pravidel ve formátu Sigma pro servery ve vlastní rež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 lozích a monitoringu si všímejte hlavně:
- opakovaných pádů pracovních procesů GitLabu, chyb 502 a selhaných úloh CI
- hlášení o pádu Ruby, která ukazují na Onigmo
- neobvykle dlouhých cest k souborům s ne-ASCII znaky a podezřelých požadavků GraphQL ciLint
- nedávno zaregistrovaných účtů, které posílají konfigurace CI
Pozor: GitLab upozorňuje, že úspěšný útok nemusí způsobit pád. Podle Alpine by úspěšný útok nezanechal pád ani stopu ve webových lozích. Pokud server běžel na zranitelné verzi a byl dostupný z internetu, zvažte výměnu hesel, tokenů runnerů, proměnných CI/CD, přístupových tokenů a údajů integrací. Alpine v takové situaci server postavil znovu, resetoval hesla a vyměnil tajné klíče GitLabu.
Pokud najdete některý z těchto příznaků nebo vám chybí logy z kritického období, přizvěte odborníka na řešení incidentů. Před zásahy do serveru si logy zazálohujte.