Ar tiksliai žinote, kiek laiko jūsų komandai užtrunka perkelti saugos atnaujinimą iš tiekėjo pranešimo į gamybinę aplinką? Jei jūsų atsakymas matuojamas savaitėmis ar net dienomis, jūsų gynybinė pozicija jau yra pasenusi. „GitLab“ CVE-2026-19478 atskleidimas įrodo, kad laiko tarpas tarp pažeidžiamumo paskelbimo ir aktyvaus, plataus masto išnaudojimo išnyko. Saugumo tyrėjai ir piktavaliai dabar naudoja automatizuotus įrankius, kad atgamintų išnaudojimo būdus per kelias minutes po pataisos išleidimo. Ši realybė tradicinį mėnesinį pataisų ciklą paverčia rizika.
Vakar vakarą praleidau peržiūrėdamas nedidelio „honeypot“ tinklo, kurį prižiūriu tyrimų tikslais, žurnalus. Per tris valandas nuo „GitLab“ saugos pranešimo pasirodė pirmieji „GraphQL“ galinių punktų zondavimai. Tai nebuvo smalsių tyrėjų rankiniai bandymai. Tai buvo automatizuoti skenavimai, siekiant patikrinti, ar API yra @gl_introduced direktyva. Šis pažeidžiamumas turi 9,4 CVSS balą, nes leidžia neautentifikuotam užpuolikui perrašyti saugyklos istoriją. Tai tiesioginis puolimas prieš programinės įrangos tiekimo grandinės vientisumą.
Techninė klaida, slypinti už CVE-2026-19478, egzistuoja „GitLab“ „GraphQL“ API. Tiksliau, spraga susijusi su tuo, kaip sistema apdoroja tam tikras direktyvas. „GraphQL“ direktyvos naudojamos užklausos vykdymo elgsenai pakeisti arba papildomiems metaduomenims serveriui pateikti. Šiuo atveju užpuolikas gali sukurti kenkėjišką direktyvą, kurią serveris įvykdo nepatikrinęs užklausos pateikėjo teisių. Tai klasikinis architektūrinio paradokso pavyzdys, kai lankstumui skirta funkcija tampa vartais neteisėtai prieigai.
Kadangi pažeidžiamumui nereikia autentifikavimo, bet kas, turintis tinklo prieigą prie „GitLab“ egzemplioriaus, gali siųsti šias užklausas. Išnaudojimas nepriklauso nuo sudėtingo atminties sugadinimo ar neaiškių konfigūracijų. Tai loginė klaida API tvarkyklėje. Kai užpuolikas siunčia specialiai suformuotą „GraphQL“ užklausą, jis įgyja galimybę keisti arba trinti viešai prieinamus projektus. Kai kuriais scenarijais ši galimybė apima ir saugyklos duomenų perrašymą, kas leidžia užpuolikui pakeisti patį pradinį kodą, nepaliekant pėdsakų standartiniuose naudotojų audito žurnaluose.
Per įsilaužimus dažnai sutelkiame dėmesį į duomenų vagystę, tačiau šis pažeidžiamumas nukreiptas į vientisumą. Jei užpuolikas ištrina saugyklą, žala yra akivaizdi ir paprastai atstatoma iš atsarginių kopijų. Daug klastingesnė rizika yra galimybė suklastoti sujungimo (merge) įrašus. Šiuolaikinėje „DevOps“ aplinkoje sujungimo įrašas yra skaitmeninis parašas, patvirtinantis, kad kodo dalis buvo peržiūrėta ir patvirtinta. Jei užpuolikas gali suklastoti šiuos įrašus, jis gali įterpti kenkėjišką kodą į projektą ir pateikti jį taip, tarsi patikimas prižiūrėtojas būtų patvirtinęs pakeitimą.
Tai apeina pagrindinę tarpusavio peržiūros (peer review) prielaidą. Užpuolikas galėtų įdiegti galines duris (back door) į gamybinę programą, o saugumo komanda matytų švarią audito seką. Tai paverčia saugyklą iš tiesos šaltinio toksišku turtu. Kai negalite pasitikėti savo kodo istorija, kiekvienas diegimas tampa lošimu. Galimybė uždrausti projektų prižiūrėtojus prideda paslaugos trikdymo (DoS) sluoksnį prie atakos, nes neleidžia teisėtiems naudotojams atgauti savo projektų kontrolės aktyvaus incidento metu.
„watchTowr“ saugumo tyrėjai pastebėjo, kad DI įrankiai dabar sutrumpina laiką, reikalingą pažeidžiamumui paversti ginklu. Anksčiau sudėtingo išnaudojimo būdo sukūrimas po to, kai pataisa buvo išanalizuota atvirkštinės inžinerijos būdu, galėjo užtrukti kelias dienas. Dabar didieji kalbos modeliai ir automatizuoti kodo analizės įrankiai gali beveik akimirksniu nustatyti skirtumą tarp pažeidžiamos ir pataisytos versijos. Tai leidžia užpuolikams sugeneruoti veikiantį išnaudojimo kodą dar prieš tai, kai dauguma organizacijų baigia skaityti saugos pranešimą.
Šis greitis sukuria sisteminę problemą gynėjams. Jei užpuolikas gali automatizuoti spragos atgaminimą, jis gali pradėti pasaulines skenavimo ir išnaudojimo kampanijas anksčiau, nei žmogus administratorius spėja prisijungti prie serverio. Judame link būsenos, kurioje vienintelė efektyvi gynyba yra automatizuota. Pasikliovimas rankiniu įsikišimu diegiant kritines pataisas nebėra perspektyvi strategija interneto pasiekiamai infrastruktūrai.
Organizacijoms, naudojančioms pačių priglobtus „GitLab“ egzempliorius, pirmas žingsnis yra patikrinti, ar nėra neteisėtos veiklos požymių. Žiniatinklio serverio ir „GitLab“ programos žurnaluose turite ieškoti specifinių eilučių, susijusių su išnaudojimu. Ryškiausias indikatorius yra @gl_introduced direktyvos buvimas užklausose, siunčiamose į /api/graphql galinį punktą. Jei savo žurnaluose matote šią eilutę kartu su 200 OK atsakymo būsena iš neautentifikuoto IP adreso, privalote daryti prielaidą, kad egzempliorius yra pažeistas.
Be paprastos žurnalų paieškos, turėtumėte atlikti savo viešų projektų pastarųjų sujungimų istorijos auditą. Išnagrinėkite „commit“ ar „merge“ veiksmus, kurie įvyko ne darbo valandomis arba iš paskyrų, kurios paprastai neprisideda prie tų konkrečių saugyklų. Kadangi išnaudojimas leidžia klastoti įrašus, jums gali tekti palyginti savo programuotojų vietinę „git“ istoriją su serverio istorija, kad nustatytumėte neatitikimus. Bet koks „commit“ maišos kodų (hashes) skirtumas tarp programuotojo mašinos ir serverio yra pavojaus signalas apie istorijos perrašymą.
Jei dar neatnaujinote savo „GitLab“ egzemplioriaus, jums kyla didžiulė rizika. Pažeidžiamumas veikia „Community Edition“ ir „Enterprise Edition“ versijas pradedant nuo 18.2. Tiksliau, jei naudojate bet kurią versiją tarp 18.2 ir 18.11.10, 19.0.7, 19.1.5 arba 19.2.3, esate pažeidžiami. Pataisa pateikiama versijose 18.11.11, 19.0.8, 19.1.6 ir 19.2.4. Pataisų diegimas yra vienintelis nuolatinis šios problemos sprendimas.
| Paveiktų versijų diapazonas | Minimali pataisyta versija |
|---|---|
| nuo 18.2 iki 18.11.10 | 18.11.11 |
| nuo 19.0.0 iki 19.0.7 | 19.0.8 |
| nuo 19.1.0 iki 19.1.5 | 19.1.6 |
| nuo 19.2.0 iki 19.2.3 | 19.2.4 |
Tais atvejais, kai neatidėliotinas pataisų diegimas neįmanomas dėl griežtų pakeitimų valdymo politikos nuostatų, privalote įgyvendinti laikinąsias priešpriemones. Veiksmingiausias sprendimas – apriboti prieigą prie /api/graphql galinio punkto atvirkštinio įgaliotojo serverio (reverse proxy) arba ugniasienės lygmeniu. Turėtumėte apriboti prieigą prie šio galinio punkto tik žinomiems, patikimiems IP adresams arba reikalauti galiojančio VPN ryšio. Be to, pakeitus viešus projektus į vidinius ar privačius, sumažinamas atakos paviršius, nes išnaudojimas pirmiausia nukreiptas į projektus, kurie pasiekiami be autentifikavimo.
Kūrimo aplinkos apsauga yra tarsi VIP klubo valdymas, kuriame apsaugininkas tikrina ID prie kiekvienų vidinių durų. Nebegalime daryti prielaidos, kad vidinis tinklas yra saugus arba kad API yra pakankamai tvirta, kad susidorotų su kenkėjiška įvestimi. „Zero Trust“ architektūra „DevOps“ aplinkai reikalauja, kad kiekvienas veiksmas, ypač susijęs su saugyklos keitimu, būtų patikrintas naudojant stiprų tapatybės teikėją. Šis incidentas rodo, kad net gerai prižiūrima platforma, tokia kaip „GitLab“, gali turėti spragų, kurios apeina tradicines saugumo ribas.
Norėdamos sukurti atsparią gynybą, organizacijos turėtų atsisakyti ilgalaikių kredencialų ir pereiti prie trumpalaikių, tapatybe pagrįstų prieigos raktų. Jos taip pat turėtų įdiegti privalomą kodo pasirašymą. Jei kiekvienas „commit“ turi būti pasirašytas programuotojo privačiuoju raktu, užpuolikas, perrašantis istoriją serveryje, negalės sukurti galiojančių parašų savo suklastotiems įrašams. Tai sukuria techninį barjerą, kuris išlieka veiksmingas net jei pati platforma yra pažeista.
Norėdami apsaugoti savo aplinką nuo CVE-2026-19478 ir panašių DI paspartintų grėsmių, nedelsdami atlikite šiuos veiksmus:
@gl_introduced, kad nustatytumėte bandymus išnaudoti spragą arba sėkmingus įsilaužimus./api/graphql galinio punkto naudodami žiniatinklio programų ugniasienę arba atvirkštinį įgaliotąjį serverį.Laukti kito suplanuoto priežiūros lango nebėra saugu. Šiuolaikinių grėsmių sukėlėjų greitis reikalauja reakcijos greičio, atitinkančio automatizavimo tempą. Jei jūsų infrastruktūra pasiekiama internetu, laikas veikti yra dabar.
Šaltiniai
Atsakomybės apribojimas
Šis straipsnis skirtas tik informaciniams ir švietimo tikslams. Pateikta informacija nepakeičia profesionalaus kibernetinio saugumo audito, teismo ekspertizės tyrimo ar incidentų valdymo paslaugų. Visada laikykitės savo organizacijos saugumo politikos ir pasitarkite su kvalifikuotais specialistais prieš atlikdami struktūrinius tinklo pakeitimus.



Pašto ir debesies saugojimo sprendimas suteikia galingiausias saugaus keitimosi duomenimis priemones, užtikrinančias jūsų duomenų saugumą ir privatumą.
/ Sukurti nemokamą paskyrą