GitLab wydał awaryjną aktualizację łatającą dwie podatności, z których jedna jest naprawdę poważna. CVE-2026-19478 dostała 9.4 punktu w skali CVSS i pozwala na wstrzyknięcie kodu przez dyrektywę GraphQL — bez logowania, bez interakcji użytkownika i bez żadnej nietypowej konfiguracji. Skutek udanego ataku: napastnik może zmodyfikować lub skasować publiczne projekty i dane użytkowników. Producent nie owija w bawełnę i zaleca natychmiastową aktualizację wszystkich instalacji self-managed.
Co dokładnie jest zepsute
Problem siedzi w warstwie GraphQL — interfejsie API, przez który współczesny frontend GitLaba rozmawia z backendem. Dyrektywy w GraphQL to modyfikatory dopisywane do zapytania, sterujące tym, jak serwer je przetworzy. W tym przypadku dane z takiej dyrektywy trafiały tam, gdzie nie powinny, i były interpretowane jako kod.
Praktyczne konsekwencje opisywane przez badaczy są niepokojące: możliwość przepisania stanu repozytoriów, fałszowania wpisów o zmergowanych zmianach, banowania maintainerów, a w skrajnym przypadku usunięcia całego projektu. Dla firmy, dla której GitLab jest jedynym miejscem, gdzie żyje kod i historia zmian, to scenariusz na poziomie ransomware — tyle że bez okupu.
Druga załatana dziura, CVE-2026-19650 (7.1), to CSRF w handlerze zapytań multiplex. Nieprawidłowa walidacja żądań pozwala wykonać mutacje przez zwykłe żądanie GET, choć tutaj potrzebna jest już interakcja ofiary. Obie luki zgłoszono odpowiedzialnie przez program bug bounty GitLaba na HackerOne.
Kogo to dotyczy i jak szybko reagować
Podatne są wydania GitLab Community Edition i Enterprise Edition od 18.2 do 18.11.11, od 19.0 do 19.0.8, od 19.1 do 19.1.6 oraz od 19.2 do 19.2.4. Poprawki są dostępne w wersjach 18.11.11, 19.0.8, 19.1.6 i 19.2.4.
Kluczowe rozróżnienie: jeśli korzystasz z GitLab.com albo GitLab Dedicated, nie musisz robić nic — te środowiska zostały już zaktualizowane przez producenta. Cała presja spada na instalacje self-managed, a tych w polskich firmach jest sporo. GitLab bywa stawiany na własnym serwerze właśnie dlatego, że kod ma nie opuszczać infrastruktury — i bardzo często kończy w konfiguracji, gdzie ktoś kiedyś wystawił go publicznie „na chwilę” i nikt tego nie cofnął.
Na razie nie ma potwierdzonych przypadków wykorzystania w praktyce, nie krąży publiczny kod exploita, a luka nie trafiła do katalogu CISA KEV. To jednak żadne pocieszenie. Badacze z watchTowr ostrzegają, że wsteczna analiza opublikowanych łatek jest tu wyjątkowo łatwa — sami odtworzyli podatność w kilka minut od ujawnienia. Przy publicznym repozytorium projektu porównanie kodu przed i po jest kwestią jednego polecenia git diff.
Co zrobić
- Zaktualizuj GitLaba do 19.2.4, 19.1.6, 19.0.8 lub 18.11.11 — w zależności od gałęzi, której używasz. To zadanie na dziś, nie na najbliższe okienko serwisowe.
- Sprawdź, czy Twoja instancja jest w ogóle dostępna z internetu. Jeśli korzysta z niej wyłącznie zespół, schowaj ją za VPN albo ogranicz dostęp na firewallu do znanych adresów.
- Zweryfikuj kopie zapasowe. Podatność pozwala kasować projekty, więc backup jest ostatnią linią obrony. Sprawdź nie tylko to, czy się robi, ale czy da się z niego faktycznie odtworzyć repozytorium.
- Przejrzyj logi pod kątem nietypowych żądań do endpointu
/api/graphql, zwłaszcza tych bez nagłówka uwierzytelniającego. - Jeśli aktualizacja musi poczekać, rozważ tymczasowe ograniczenie dostępu do API GraphQL na poziomie reverse proxy.
Podsumowanie
To dobry moment na przypomnienie, że serwer z kodem źródłowym jest infrastrukturą krytyczną dokładnie tak samo jak baza danych czy kontroler domeny. Luka bez wymaganego uwierzytelnienia i z możliwością niszczenia danych to najgorsza możliwa kombinacja — nie trzeba przejmować konta, wystarczy znać adres. Producent zrobił swoje i wydał poprawki w trybie awaryjnym. Reszta zależy od tego, jak szybko administratorzy je wdrożą, zanim ktoś złoży exploit z opublikowanego diffa.
źródło: https://www.helpnetsecurity.com/2026/08/18/gitlab-critical-code-injection-flaw-cve-2026-19478/ https://www.securityweek.com/gitlab-patches-critical-code-injection-vulnerability/