Ruby исправил ошибки компиляции регулярных выражений, связанные с уязвимостями GitLab

Ruby исправил ошибки компиляции регулярных выражений, связанные с уязвимостями GitLab
Содержание статьи

23 октября команда Ruby сообщила об исправлениях ошибок движка регулярных выражений Onigmo, связанных с опубликованными GitLab уязвимостями. Все перечисленные исправления входят в Ruby 4.0.9, 3.4.12 и 3.3.13. На Mentoring.digital разбираем границы проблемы: важен источник самого шаблона, который приложение компилирует.

Риск возникает при компиляции недоверенного шаблона

Ошибки затрагивают приложения, которые принимают регулярное выражение из недоверенного источника и передают его в Regexp.new, Regexp.compile, Regexp.union или интерполированный шаблон. Обычная проверка пользовательской строки по заранее заданному разработчиком выражению не является этим сценарием.

В объявлении перечислены повреждения памяти при компиляции. Поэтому Regexp.timeout и ограничение длины шаблона не считаются надёжной защитой: проблема возможна ещё до поиска совпадения, в том числе с коротким выражением. Если обновление пока невозможно, рекомендация Ruby состоит в отказе от компиляции недоверенных шаблонов.

GitLab нужно обновлять как отдельный продукт

GitLab выпустил исправления 21 октября. CVE-2026-110264 относится к критической ошибке компилятора регулярных выражений: при определённых условиях она допускает выполнение произвольного кода без авторизации. Исправленные выпуски: 19.5.1, 19.4.3, 19.3.6, 19.2.9, 19.1.9, 19.0.10 и 18.11.13.

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

Номера CVE в сообщении Ruby назначены GitLab. Команда Ruby отдельно отмечает, что на момент объявления ещё не запрашивала собственные идентификаторы. Это не следует описывать как новый набор CVE самого языка.

Что включить в проверку своей системы

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

План обновления самостоятельной установки, проверку окружения и возвращение сервисов в работу можно разобрать с наставником по DevOps. Здесь важна проверка конкретного развёртывания: замена одной зависимости не подтверждает обновление всех работающих процессов.

Похожие статьи по данной теме