Ruby пусна версии 4.0.9, 3.4.12 и 3.3.13, за да отстрани три грешки в Onigmo – вградения в езика механизъм за регулярни изрази. Тези грешки стоят зад четири критични уязвимости в сигурността, за които GitLab пусна корекции за сигурност през последния месец.
От GitLab установиха, че специално конструиран шаблон може да повреди паметта, докато Ruby го компилира, което потенциално води до изпълнение на код на собствените им сървъри.
От Ruby заявяват, че всяко приложение, което изгражда регулярен израз от текст под контрола на атакуващ, е засегнато, а не само GitLab.
Кои приложения са засегнати
В своя бюлетин Ruby посочва, че дадено приложение е засегнато само ако компилира регулярен израз от низ, контролиран от атакуващ. Това се случва, когато програма подава такъв низ към Regexp.new, Regexp.union или Regexp.compile, или го поставя в шаблон чрез интерполация, както при /#{input}/.
Приложенията, които използват единствено регулярни изрази, написани от техните собствени разработчици, не са засегнати.
Ruby коригира грешките във версии 4.0.9, 3.4.12 и 3.3.13. Версиите 3.4.12 и 3.3.13 са първите в своите серии, които съдържат която и да е от трите корекции.
- Ruby 4.0: надграждане до 4.0.9
- Ruby 3.4: надграждане до 3.4.12
- Ruby 3.3: надграждане до 3.3.13
По-ранна версия от същата седмица, 4.0.8, не включва корекцията за една от уязвимостите, CVE-2026-110264, поради което потребителите на 4.0 трябва да инсталират 4.0.9.
Ruby 3.2 и по-ранните версии няма да получат корекция. Поддръжката на Ruby 3.2 приключи на 1 април 2026 г., като 3.2.11 беше последната версия. Ruby препоръчва преминаване към 3.4 или 4.0.
Ако все още не можете да надградите, в бюлетина се препоръчва да спрете компилирането на регулярни изрази от ненадеждни входни данни.
Два защитни механизма, които изглеждат полезни, всъщност не помагат. Задаването на Regexp.timeout не спира тези грешки. Ограничаването на дължината на шаблона също е ненадеждно, тъй като и кратки шаблони могат да предизвикат грешките.
Как грешките са достигнали до GitLab
GitLab компилира регулярни изрази, предоставени от потребителите, като например шаблоните в CI/CD конфигурации. Беше открито, че манипулирани шаблони могат да повредят паметта при компилирането им от Ruby, и бяха издадени четири CVE идентификатора между 23 септември и 21 октомври, като всеки проблем беше отстранен чрез предоставяне на обновена версия на Ruby с инсталирани корекции за сигурност.
Първите две, оповестени на 23 септември, изискват влизане в профил и получиха оценка 9.9 от 10. Двете от октомври – CVE-2026-97229 от 12-ти и CVE-2026-110264 от 21-ви – не изискват потребителски профил и бяха оценени с максималния рейтинг 10.0. CVE-2026-110264 засяга всяка версия на GitLab от 7.0 нагоре.
Изследовател с псевдоним joaxcar съобщи и за четирите чрез програмата за награди за открити уязвимости (bug bounty) на GitLab. Към 23 октомври нито една от четирите не е включена в каталога с известни експлоатирани уязвимости на CISA.
Засега няма CVE за Ruby
Ruby не е поискал собствени CVE идентификатори за тези корекции, „поне засега“, и посъветва потребителите вместо това да следят проблемите чрез четирите CVE номера на GitLab.
Това създава празнина за всички, които извършват сканиране по CVE. Записите за CVE на GitLab посочват само GitLab като засегнат продукт, така че скенер, който сравнява тези записи с инсталираните версии на Ruby, не намира съвпадения.
В миналото Ruby е третирал подобен тип грешки като уязвимости, присвоявайки CVE номера на корекции през 2022 г. и 2024 г., въпреки че отдавна е известно, че създаването на регулярен израз от ненадеждни входни данни не е безопасно.
Документацията му все още описва ненадеждните шаблони само като риск от отказ на услуга (DoS). От Ruby съобщиха, че ще актуализират бюлетина си, ако заявят CVE идентификатори.
За администраторите на GitLab
Самостоятелно управляваните инстанции на GitLab (self-managed) се нуждаят от версията, която отстранява CVE-2026-110264. GitLab я пусна на 21 октомври и я пренесе обратно чак до версия 18.11.13.
- 19.5.1
- 19.4.3
- 19.3.6
- 19.2.9
- 19.1.9
- 19.0.10
- 18.11.13
GitLab.com вече работи с обновената версия, а наемателите на GitLab Dedicated на скорошни вътрешни версии не се нуждаят от действия, заявиха от GitLab. Тъй като GitLab включва собствено копие на Ruby и е инсталирал корекция директно в него, инсталирането на някоя от тези коригирани версии прилага решението.
GitLab също така публикува правила за засичане, които администраторите на самостоятелно управлявани инстанции могат да използват, за да проверяват за признаци на опити за експлоатация.