Пропуск 10.0 в GitLab: код без вход от 12 години

GitLab публикува на 21 октомври критично патч издание за Community и Enterprise Edition, което затваря дупка с максималната възможна оценка. CVE-2026-110264 носи CVSS 10.0 и позволява на напълно неавтентикиран нападател да изпълни произволен код на сървъра. Засегнати са всички self-managed версии от GitLab 7.0, излязла през 2014 г., до 19.5 — близо 12 години история на кода.
Един .org файл и един регулярен израз
Проблемът не е в самия GitLab, а в това какво подава той на долния слой. Уязвимостта живее в Onigmo — машината за регулярни изрази, която Ruby носи със себе си. Там при компилирането на специално подготвен израз настъпва integer overflow, а оттам се стига до изпълнение на код.
Пътят дотам минава през gem-а org-ruby, с който GitLab рендерира файлове във формат Org-mode. Когато платформата показва преглед на .org файл, библиотеката взема съдържанието на #+TODO: ключовите думи и го подава директно на Regexp.new. Нападателят контролира този низ — значи контролира и какво компилира Onigmo.
Формулировката на самия GitLab е пестелива: „При определени условия това би могло да позволи на неавтентикиран потребител да изпълни произволен код на сървъра заради integer overflow при компилирането на специално подготвен регулярен израз.“
Оттам идва и CVSS векторът AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H — атака по мрежа, ниска сложност, без права, без взаимодействие с потребител и със смяна на обхвата. Няма комбинация, която да даде повече от 10.0.
Кои версии и до кои да обновите
Кръпките са седем, по една на поддържана линия:
| Линия | Закърпена версия |
|---|---|
| 19.5 | 19.5.1 |
| 19.4 | 19.4.3 |
| 19.3 | 19.3.6 |
| 19.2 | 19.2.9 |
| 19.1 | 19.1.9 |
| 19.0 | 19.0.10 |
| 7.0 – 18.11 | 18.11.13 |
GitLab.com вече работи на закърпена версия, а клиентите на GitLab Dedicated не трябва да правят нищо. Рискът е изцяло при self-managed инсталациите — тоест при хилядите GitLab сървъри, които фирмите държат сами, често публично достъпни и често с публични проекти, в които всеки може да отвори файл.
Снимка: GitLab press kit
Кръпката от 12 октомври не е свършила работа
Това е вторият опит. На 12 октомври GitLab затвори CVE-2026-97229 — също integer overflow в компилатора на регулярни изрази, също с оценка 10.0, но през регулярен израз в CI/CD конфигурация. Тогава излязоха 19.4.2, 19.3.5 и 19.2.8.
Rapid7 обаче отбеляза важен детайл: за да задейства тогавашния пропуск, нападателят трябва първо да качи зловредна CI/CD конфигурация в хранилище. Това изисква някакъв достъп — освен на инстанции, където регистрацията е свободна и всеки може да създаде проект.
Новата CVE маха и това ограничение. Рендерирането на .org файл не иска нито pipeline, нито права за писане — достатъчен е преглед на съдържание. Затова и обхватът скача от „19.2 и нагоре“ до „всичко от 2014 г.“.
Още 11 пропуска в същото издание
Критичната дупка не е сама. В изданието влизат общо 12 CVE, сред които:
- CVE-2026-15723 (8.2) — превземане на LDAP акаунт при едновременно включени OmniAuth SAML и автоматично свързване с LDAP. Докладван от изследователя с ник stealthy.
- CVE-2026-112212 (7.5) — отравяне на споделен кеш през discovery endpoint-ите на OAuth/OIDC, открит вътрешно от Петер Артс.
- CVE-2026-12664 (6.8) — изтичане на имейл адреси през GraphQL полето на work item-ите.
- CVE-2026-105777 (4.3) — вътрешни идентификационни данни в HTTP хедъри на отговорите.
Критичната CVE-2026-110264 е докладвана през програмата на GitLab в HackerOne от изследовател с ника joaxcar.
Какво да направите днес
Обновете. GitLab формулира съвета си неслучайно твърдо: всички засегнати инсталации трябва да минат на последна версия „възможно най-скоро“. Имайте предвид, че изданието носи миграции по базата — инстанция на един възел ще има престой, а при многовъзлови конфигурации може да минете през процедурата за обновяване без прекъсване.
Ако не можете да обновите веднага, GitLab публикува две Sigma правила за откриване в рамките на TLDR: Onigmo native worker crash и Org mode render error burst. И двете търсят следите от неуспешен опит — срив на worker процеса и внезапен поток от грешки при рендериране на Org файлове.
Към 22 октомври няма потвърдена експлоатация в реални условия и CVE-2026-110264 не е в каталога на CISA за експлоатирани уязвимости. Това обаче е слаба утеха: описанието е публично, механизмът е разбираем, а историята с PoC за Plex, използван ден след публикуването му, показва колко кратък е прозорецът. Както при двете критични дупки в PHP, печели онзи, който обнови преди да му се наложи да разследва.
Заключение
Оценка 10.0 върху код, който е на мястото си от 2014 г., е напомняне, че най-опасните пропуски рядко са в новите функции. Тук се събраха три слоя — машина за регулярни изрази на Ruby, стар gem за екзотичен формат за текст и платформа, която рендерира всичко, което види в хранилището. Кръпката е налична, обхватът е ясен, а единственото, което остава, е да я приложите.
Харесва ви? Отбележете ни и ще ни виждате по-нагоре в Google.
Предпочитан източник в Google