GitLab CVE-2026-110264: nieuwierzytelnione RCE o ocenie CVSS 10.0 w każdym wydaniu self-managed od 2014

Jerzy Kopaczewski 21 października 2026 5 min czytania
Contents
21 października 2026 GitLab wydał poza harmonogramem poprawkę na CVE-2026-110264, lukę nieuwierzytelnionego zdalnego wykonania kodu o ocenie CVSS 10.0, czyli maksymalnej. Dotyczy każdego wydania self-managed GitLab CE/EE aż do 7.0 (2014). Nie ma obejścia: trzeba zaktualizować do wersji właściwej dla Twojej gałęzi. Jedna pułapka na start: jeśli łatałeś 12 października, wciąż jesteś podatny i potrzebujesz wersji o jeden patch wyżej.

Czym jest CVE-2026-110264

GitLab korzysta z wbudowanego w Ruby silnika wyrażeń regularnych Onigmo. Gdy ten silnik kompiluje specjalnie spreparowane wyrażenie regularne, dochodzi do przepełnienia liczby całkowitej (integer overflow), a GitLab twierdzi, że można to zamienić na wykonanie dowolnego kodu na serwerze, z uprawnieniami użytkownika git, bez konta. Przepełnienie jest w samym silniku, dlatego luka sięga aż do GitLab 7.0.

Ścieżka ataku, według własnej reguły detekcji GitLaba: GitLab renderuje pliki Org-mode (format dokumentu tekstowego) za pomocą gemu org-ruby, który buduje wyrażenie regularne z keyworda w linii #+TODO: pliku .org, bez escapowania. Keyword powtórzony ponad 32 767 razy przepełnia licznik w silniku regex. Atak nie wymaga logowania, wystarczy jeden publiczny projekt zawierający spreparowany plik .org, który GitLab wyrenderuje. Udana próba może przebiegać cicho i niekoniecznie wywołuje awarię serwera.

GitLab ocenia lukę na CVSS 10.0 i tę ocenę należy traktować jako wiążącą.

Kogo to dotyczy

Działania wymaga tylko self-managed GitLab, Community Edition i Enterprise Edition, na każdej metodzie instalacji (pakiet Linux, Docker, Helm, źródła).

  • GitLab.com już działa na załatanej wersji. Nic do zrobienia.
  • GitLab Dedicated na załatanych buildach wewnętrznych już ma poprawkę. Nic do zrobienia.
  • Self-managed, dowolna wersja od 7.0 wzwyż: podatny. Zakładaj, że jest w zasięgu, dopóki nie potwierdzisz wersji.

Pułapka łatki z 12 października

To część, która zaskakuje zespoły przekonane, że są już zabezpieczone. 12 października GitLab załatał inną lukę regex (CVE-2026-97229) w 19.4.2, 19.3.5 i 19.2.8. CVE-2026-110264 to osobny błąd o szerszym zasięgu. Serwer zaktualizowany do tych wydań z 12 października jest nadal podatny i potrzebuje wersji o jeden patch wyżej. Obie luki zgłosił ten sam badacz, a to już czwarty problem z silnikiem regex od niego w ciągu miesiąca.

Poprawka: zaktualizuj do wersji właściwej dla Twojej gałęzi

Wydane 21 października 2026 dla CE i EE:

Jeśli masz Zaktualizuj do Uwagi
19.5 19.5.1 Wszystkie 12 poprawek
19.4 19.4.3 Wszystkie 12 poprawek, zawiera migracje bazy
19.3 19.3.6 Wszystkie 12 poprawek, zawiera migracje bazy
19.2 19.2.9 Tylko poprawka krytyczna
19.1 19.1.9 Tylko poprawka krytyczna
19.0 19.0.10 Tylko poprawka krytyczna
18.11 18.11.13 Tylko poprawka krytyczna
18.10 i starsze Brak załatanego wydania Przejdź na wspieraną gałąź

Zostań na gałęzi minor, którą masz (np. 19.4.x idzie do 19.4.3); aktualizacja na poziomie patcha nie wymaga dodatkowych przystanków. Tylko 19.4.3 i 19.3.6 zawierają migracje bazy danych, więc serwer jednowęzłowy pozostaje niedostępny do ich zakończenia. Instalacje wielowęzłowe mogą skorzystać z procedury zero-downtime GitLaba.

Dokładne komendy per metoda instalacji, sprawdzenie wersji i sposób uruchomienia dwóch reguł detekcji GitLaba na logach opisaliśmy w runbooku o łataniu CVE-2026-110264.

Jeśli masz GitLab 18.10 lub starszy: to decyzja o modernizacji

Poniżej gałęzi 18.11 nie ma załatanego wydania. Jeśli instancja self-managed jest na 18.10 lub starszej, łatanie nie wchodzi w grę, trzeba podnieść wersję do wspieranej, a aktualizacje GitLaba przez kilka wersji minor wymagają etapowych „przystanków” (nie da się przeskoczyć prosto do najnowszej). W praktyce instancja zostawiona tak daleko w tyle zwykle ma też przestarzały system operacyjny, runnery i backup.

Uczciwe ujęcie: tego GitLaba i tak trzeba było kiedyś podnieść. CVE-2026-110264 tylko wyznaczył termin, a kosztem zwłoki jest teraz nieuwierzytelnione RCE o maksymalnej ocenie na serwerze, który trzyma Wasz kod źródłowy i prawdopodobnie sekrety wdrożeniowe.

Co zrobić w tym tygodniu

  1. Zinwentaryzuj każdą instancję self-managed GitLab. Uwzględnij repliki Geo, staging, DR i serwery testowe. Zapomniana instancja to wciąż droga wejścia.
  2. Sprawdź wersję, którą faktycznie serwuje każda z nich (nie tylko CLI; komendy per instalacja są w runbooku).
  3. Załataj wspierane gałęzie natychmiast do wersji z tabeli. Jeśli łatałeś 12 października, idź o jeden patch wyżej.
  4. Zajmij się tym, co jest na 18.10 lub starszym: zaplanuj ścieżkę aktualizacji albo zdejmij instancję z publicznego internetu do czasu, aż się da.
  5. Sprawdź próby wykorzystania przy pomocy reguł detekcji GitLaba, a jeśli znajdziesz ślady kompromitacji, zrotuj zmienne CI/CD, tokeny runnerów, klucze deploy i tokeny dostępu trzymane na serwerze.

Na 22 października nie zgłoszono żadnych ataków, luki nie było w katalogu CISA KEV, a publiczny proof of concept się nie pojawił. To jest okno, w którym łatasz. Wcześniejszą lukę tego samego badacza Rapid7 odtworzył w ciągu doby od wydania, więc nie licz na to, że pozostanie cicho.

Nie wiesz, które z Waszych instancji GitLab są narażone?

Pomagamy zespołom zinwentaryzować self-managed GitLab, bezpiecznie załatać wspierane gałęzie (w tym wydania z migracjami bazy) i zaplanować ścieżkę aktualizacji dla wszystkiego, co utknęło na niewspieranej wersji. Zobacz naszą pracę w obszarze Bezpieczeństwo i Zgodność lub umów rozmowę poniżej.

 

Jerzy Kopaczewski

Prowadzisz self-managed GitLab?

Umów bezpłatną 30-minutową rozmowę. Pomożemy potwierdzić, co jest załatane, przeprowadzić aktualizacje z migracjami bazy i zaplanować zejście z każdej niewspieranej wersji.

Umów rozmowę
GitLab security CVE RCE patching CI/CD
jerzy.webp
Jerzy Kopaczewski
Współzałożyciel i CTO

Spis treści

Przeczytaj również:

Poprzedni post Następny post