Архив метки: Ruby

Про уязвимость Remote Code Execution - GitLab (CVE-2026-110264)

Про уязвимость Remote Code Execution - GitLab (CVE-2026-110264)

Про уязвимость Remote Code Execution - GitLab (CVE-2026-110264). GitLab - это платформа для хранения кода, совместной разработки программ, управления проектами и автоматизации тестирования и релиза приложений. GitLab CE - бесплатная версия платформы с открытым исходным кодом, а GitLab EE - корпоративная версия с расширенными функциями. Рассматриваемая уязвимость в GitLab CE/EE при определённых условиях позволяет неаутентифицированному злоумышленнику выполнить произвольный код на сервере. Уязвимость присутствовала в GitLab около 12 лет и затрагивала версии CE/EE начиная с версии 7.0, выпущенной в 2014 году.

Причина уязвимости в следующем. GitLab использует язык программирования Ruby для реализации значительной части своей серверной логики. В частности, серверная часть платформы построена на базе веб-фреймворка Ruby on Rails, написанного на Ruby. При этом Ruby использует дополнительные библиотеки и встроенные механизмы для выполнения различных задач. Один из них - Onigmo, движок регулярных выражений, отвечающий за поиск и обработку текста по заданным шаблонам. Согласно исследованию Censys, уязвимость связана с обработкой файлов Org mode с расширением .org. При преобразовании таких файлов в HTML GitLab использует библиотеку org-ruby, которая обрабатывает пользовательские ключевые слова из документов, например #+TODO:. Злоумышленник может указать специально сформированное значение такого ключевого слова, которое вызовет переполнение в движке регулярных выражений Onigmo и последующее повреждение памяти. При определённых условиях это позволяет выполнить произвольный код на сервере GitLab. Для эксплуатации злоумышленнику необходимо разместить специально сформированный файл в публичном проекте. Например, при включённой самостоятельной регистрации и возможности создавать публичные проекты он может зарегистрировать учётную запись и создать собственный проект. После размещения файла для запуска уязвимого обработчика достаточно открыть страницу просмотра этого файла без аутентификации.

Компрометация сервера GitLab может открыть злоумышленнику доступ к исходному коду проектов, токенам доступа, учётным данным и другой конфиденциальной информации. Получив контроль над сервером, атакующий может изменить исходный код или процессы сборки, чтобы внедрить вредоносный код в распространяемые приложения. Кроме того, скомпрометированный сервер GitLab может стать отправной точкой для дальнейшего проникновения во внутреннюю инфраструктуру организации.

⚙️ Уязвимость устранена в версиях 19.5.1, 19.4.3, 19.3.6, 19.2.9, 19.1.9, 19.0.10, 18.11.13. Инфраструктура, которой управляет сам GitLab, включая GitLab.com и GitLab Dedicated, уже защищена от этой уязвимости. Если GitLab установлен не из официальных пакетов и использует собственную версию Ruby, одного обновления GitLab недостаточно. Например, это касается самостоятельно скомпилированных версий GitLab или установок с использованием собственных образов контейнеров. В таком случае необходимо отдельно обновить Ruby до версии 3.3.13, 3.4.12 или 4.0.9 и выше. Это связано с тем, что исправление CVE-2026-110264 внесено непосредственно в Ruby, а не в код GitLab. В официальных пакетах GitLab для Linux и образах контейнеров оно уже включено.

Команда безопасности GitLab выпустила два правила для обнаружения возможных атак на самостоятельно развёрнутые серверы GitLab: Onigmo native worker crash и Org mode render error burst.

🛠 PoC-и эксплоитов доступны на GitHub с 22 октября.

👾 Признаков эксплуатации в реальных атаках пока нет.

🌐 По данным Shadowserver, более 10 000 уязвимых инсталляций GitLab доступны из Интернет.