Критична дупка в GitLab се експлоатира дни след кръпката

GitLab пусна извънредна кръпка на 17 август за CVE-2026-19478 — инжекция на код в GraphQL слоя с оценка 9.4 по CVSS, която позволява на неавтентикиран атакуващ да променя и трие публични проекти. Два дни по-късно, на 19 август, honeypot мрежата на watchTowr улови първите реални опити за експлоатация. Ако поддържате собствена инсталация на GitLab, изложена към интернет, прозорецът за спокойно планиране на ъпгрейда вече е затворен.
Какво точно е счупено
Проблемът е в директивата @gl_introduced — вътрешен механизъм, с който GitLab маркира полета от бъдещи версии, за да не се чупи API-то по време на постепенно обновяване на инстанциите.
Когато заявка поиска поле с версия, която още не съществува, GitLab синтезира поле без resolver. GraphQL в такъв случай прибягва до подразбиращо се поведение: извиква метод със същото име върху самия обект. Тоест името на полето, което идва от атакуващия, се превръща в извикване на произволен метод.
query {
project(fullPath: "some/public-project") {
destroy @gl_introduced(version: "99.0")
}
}
Двата фактора, които правят това критично: публичните проекти са достъпни за заявки без вход в системата, а проверката на правата се случва след обработката на директивите. Резултатът е промяна на състоянието с една-единствена HTTP заявка — без креденшъли, без потребителско взаимодействие и без екзотична конфигурация.
Според техническия разбор на Ox Security кръпката подменя синтезираното поле с изричен NilResolver, който винаги връща null и така отрязва пътя към извикването на метода.
Докъде стига атаката
Джейк Нот, водещ изследовател в watchTowr, описва набор от действия, който е доста по-широк от сухата формулировка в бюлетина: пълно изтриване на хранилища, фалшифициране на записи за слети merge request-и (така че една поправка да изглежда влязла, без реално да е) и блокиране на поддръжниците на проекта.
Последното е особено неприятно за екипите, които разчитат на GitLab като на източник на истината при одити — подправената история на сливанията не крещи за себе си в интерфейса.
Снимка: GitLab
watchTowr съобщава, че е възпроизвела уязвимостта за минути, разполагайки единствено с бюлетина и самата кръпка. „Това е новата реалност на възпроизвеждането и експлоатацията на уязвимости, в която атакуващите с AI свиват времето от разкриване до експлоатация“, коментира Нот пред SecurityWeek.
Кои версии са засегнати
Кръпките излязоха едновременно за четири линии на Community Edition и Enterprise Edition:
- 19.2.x → обновете до 19.2.4
- 19.1.x → обновете до 19.1.6
- 19.0.x → обновете до 19.0.8
- 18.2 – 18.11.10 → обновете до 18.11.11
Същата серия запушва и CVE-2026-19650 — CSRF с оценка 7.1, при който неправилна валидация на multiplex заявки в GraphQL позволява изпълнение на мутации през обикновени GET заявки. Двете дупки се комбинират добре, така че не разделяйте ъпгрейда на етапи.
Проблемът засяга самоуправляваните инсталации. GitLab.com и GitLab Dedicated работят на закърпени версии.
Какво да направите днес
Ако не можете да обновите веднага, ограничете достъпа до /api/graphql за неавтентикирани заявки на ниво reverse proxy. Като по-груба алтернатива GitLab допуска пълно премахване на публичния достъп до хранилищата.
Препоръчаният индикатор за компрометиране е ясен: претърсете web логовете за заявки, съдържащи низа @gl_introduced. Всяко попадение от външен адрес заслужава разследване — това не е низ, който се среща в нормален трафик от браузър.
След това проверете дали публичните ви проекти нямат неочаквани промени, сверете записите за сливания и се уверете, че бекъпите ви са цели и възстановими. Ако някой е трил хранилища, бекъпът е единственият изход.
Контекст
Към момента няма публичен proof-of-concept код за нито една от двете уязвимости и нито една не е влязла в каталога KEV на CISA — което не променя факта, че атаките са реални.
Августовската картина при инструментите за разработка е показателна. В същия период Aikido Security откри CVE-2026-52813 в Gogs — RCE с максималната оценка 10.0 чрез имена на организации с ../ в тях, запушена в 0.14.3. Отделно n8n закърпи CVE-2026-33696 (оценка 9.4) — prototype pollution в XML и GSuiteAdmin възлите, водещ до изпълнение на код.
Тенденцията е същата, която видяхме при активно експлоатираната RCE дупка в Zimbra и при подменените крейтове в crates.io: инфраструктурата за разработка е мишена номер едно, защото от нея се стига до всичко останало.
Кръпката е налична от 17 август. Ако още не сте я приложили, приемете, че вашата инстанция е била видяна.
Харесва ви? Отбележете ни и ще ни виждате по-нагоре в Google.
Предпочитан източник в Google