Ruby закрыл три бага в движке регулярных выражений, стоявшие за четырьмя RCE в GitLab
Команда Ruby выпустила версии 4.0.9, 3.4.12 и 3.3.13, устранив три ошибки в Onigmo — встроенном в язык движке регулярных выражений. Именно эти ошибки стояли за четырьмя критическими уязвимостями, которые GitLab закрывал на протяжении последнего месяца.
GitLab обнаружил, что специально составленный шаблон способен повредить память во время компиляции регулярного выражения, что потенциально открывает путь к выполнению кода на сервере.
Кого это касается
В уведомлении Ruby подчёркивает: приложение уязвимо лишь в том случае, если компилирует регулярное выражение из строки, которую контролирует злоумышленник. Это происходит при передаче такой строки в Regexp.new, Regexp.union или Regexp.compile, а также при интерполяции внутрь шаблона — как в /#{input}/. Если программа работает только с выражениями, написанными её собственными разработчиками, опасности нет.
Выпуски 3.4.12 и 3.3.13 — первые в своих ветках, куда вошло хотя бы одно из трёх исправлений. Пользователям 4.0 нужна именно 4.0.9: вышедшая на той же неделе 4.0.8 не содержит заплатки для CVE-2026-110264. Ruby 3.2 и более ранние версии исправления не получат — поддержка 3.2 завершилась 1 апреля 2026 года. Рекомендуется переход на 3.4 или 4.0.
Если обновиться пока нельзя, совет один: перестать компилировать регулярные выражения из недоверенного ввода. Две меры, кажущиеся надёжными, не помогают: Regexp.timeout эти баги не останавливает, а ограничение длины шаблона ненадёжно — короткие шаблоны тоже способны сработать.
Как это дошло до GitLab
GitLab компилирует регулярные выражения, присланные пользователями, — например, шаблоны в конфигурации CI/CD. Крафтовые шаблоны повреждали память при компиляции, и с 23 сентября по 21 октября компания выпустила четыре CVE, закрывая каждый обновлённой сборкой Ruby.
Первые две уязвимости, раскрытые 23 сентября, требовали авторизованной учётной записи и получили оценку 9.9 из 10. Октябрьские — CVE-2026-97229 (12-го) и CVE-2026-110264 (21-го) — учётной записи не требуют и оценены в максимальные 10.0. CVE-2026-110264 затрагивает все версии GitLab начиная с 7.0. Все четыре через программу вознаграждений сообщил исследователь под псевдонимом joaxcar; на 23 октября ни одна из них не числилась в каталоге известных эксплуатируемых уязвимостей CISA.
Пока без собственного CVE
Ruby не запрашивал собственные идентификаторы CVE — «по крайней мере пока» — и предложил отслеживать проблемы по четырём номерам GitLab. Это оставляет брешь для тех, кто сканирует по CVE: записи GitLab называют уязвимым продуктом только сам GitLab, и сканеру нечего сопоставить с установленной версией Ruby. Прежде, в 2022 и 2024 годах, Ruby присваивал таким исправлениям CVE.
Самоуправляемым экземплярам GitLab нужна сборка с исправлением CVE-2026-110264: она вышла 21 октября и была портирована вплоть до версии 18.11.13. Поскольку GitLab поставляет собственную копию Ruby, установка исправленной версии применяет и заплатку. GitLab.com уже работает на обновлении.
Источник: The Hacker News
Комментарии
Войдите, чтобы комментировать.