Профиль: Аноним (вход | регистрация) неRU opennet.me  
OpenNET

[ новости /+++ | форум | теги |    ]

Уязвимость в Ruby, эксплуатируемая для удалённого выполнения кода в GitLab

26.10.2026 09:57 (MSK)

Опубликованы корректирующие выпуски языка программирования Ruby 3.3.13, 3.4.12 и 4.0.9, в которых устранена критическая уязвимость (CVE-2026-110264), приводящая к целочисленному переполнению при компиляции специально оформленных регулярных выражений. Уязвимость может использоваться для атаки на проекты, написанные на языке Ruby и использующие внешние данные в регулярных выражениях. Среди прочего, подтверждена возможность эксплуатации уязвимости для удалённого выполнения кода в платформе совместной разработки GitLab. Проблема дополнительно блокирована в обновлениях GitLab 19.5.1, 19.4.3, 19.3.6, 19.2.9, 19.1.9, 19.0.10 и 18.11.13. Уязвимости присвоен уровень опасности 10 из 10.

Уязвимость присутствует в движке регулярных выражений Onigmo и приводит к переполнению внутренних идентификаторов при компиляции шаблона с большим числом повторов. Проблема проявляется только в приложениях, использующих внешние данные в регулярных выражениях, обрабатываемых через методы Regexp.new, Regexp.union и Regexp.compile или литералы вида "/#{input}/". Ограничение размера регулярного выражения или времени его обработки через метод Regexp.timeout не блокируют уязвимость, так как для атаки могут использоваться короткие шаблоны.

В GitLab уязвимость может быть эксплуатирована неаутентифицированным пользователем из-за подстановки в регулярное выражение внешних данных. Детали метода эксплуатации пока не раскрываются (по правилам GitLab информация становится доступна спустя 30 дней после публикации исправления), при этом в сети уже фиксируются попытки осуществления атак на пользователей GitLab. Косвенными признаками осуществления атаки может служить увеличение числа аварийных завершений интерпретатора Ruby и рост ошибок в логах, связанных с истечением таймаута на отрисовку страницы при обработке org-файлов.

Помимо CVE-2026-110264 в движке регулярных выражений устранены ещё три уязвимости: CVE-2026-89078 (двойное освобождение памяти при невозможности парсинга шаблона после его изменения), CVE-2026-93577 и CVE-2026-97229 (целочисленные переполнения при расчёте размера компилируемого шаблона).

  1. Главная ссылка к новости (http://www.ruby-lang.org/en/ne...)
  2. OpenNews: Опубликован язык программирования Ruby 4.0
  3. OpenNews: Уязвимость в GitLab, допускающая удалённое выполнение кода (доступен эксплоит)
  4. OpenNews: Уязвимость в RubyGems.org, позволяющая подменить чужие пакеты
  5. OpenNews: Уязвимость в Ruby-SAML, позволяющая обойти аутентификацию в GitLab
  6. OpenNews: Уязвимость в библиотеке ruby-saml, приводящая к обходу аутентификации в GitLab
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/66549-ruby
Ключевые слова: ruby, gitlab
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (21) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.3, FSA (ok), 10:58, 26/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/–
    Забавно. Где-то была диаграмма популярности языков для веба. На первом месте был PHP с 70%. А на втором Ruby. Но когда нашли уязвимость в PHP - все стояли на ушах. А тут вообще всем пофигу :-D
     
     
  • 2.14, Аноним (14), 11:32, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/–
    А когда найдут дырень в расте, все скажут "да ладно, это вообще ерунда о которой даже думать не надо!"
     

  • 1.4, Аноним (4), 11:02, 26/10/2026 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/–
     
  • 1.5, Аноним (5), 11:08, 26/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/–
    ONIGERR_TOO_MANY_NULL_CHECK  - по моему тут опечатка в коде
     
     
  • 2.7, Аноним (7), 11:16, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Борьба с master/slave продолжается.
     
  • 2.9, Аноним (9), 11:19, 26/10/2026 Скрыто ботом-модератором     [к модератору]
  • +/–
     
  • 2.17, Жироватт (ok), 11:47, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    NIGGER_NIGGA_NIGGA_TOO_MANY_NULL_CHECK
    Поправил
     

  • 1.6, Аноним (7), 11:13, 26/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/–
    > GitLab для удалённого выполнения кода в Ruby.

    Поправил.

     
  • 1.8, Аноним (9), 11:18, 26/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/–
    > двойное освобождение памяти
    > целочисленные переполнения

    и RCE 10 из 10 как вишенка на тортике сишного булщит бинго в безопасном руби))

    "С in CVE stands for C language" (c)

     
     
  • 2.10, Аноним (7), 11:24, 26/10/2026 Скрыто ботом-модератором     [к модератору]
  • +1 +/–
     
     
  • 3.13, Аноним (13), 11:28, 26/10/2026 Скрыто ботом-модератором     [к модератору]
  • +/–
     
  • 2.19, Аноним (19), 11:54, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Т.е. в том что динамический ЯП со сборщиком мусора дырявый виноват Си? А если в расте будет бага, это виноват С++ потому что LLVM написан на нем?
     

  • 1.11, Аноним (11), 11:24, 26/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/–
    Вот что надо было на расте переписывать все это время!
     
  • 1.12, Аноним (13), 11:27, 26/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/–
    > int num_repeat;                /* OP_REPEAT/OP_REPEAT_NG id-counter */
    > int num_null_check;            /* OP_NULL_CHECK_START/END id counter */

    А кто-то может пояснить, почему счетчики сделаны int, а не unsigned int как это сделано несколькими строчками ниже?

    В чем был хитрый план? Прокидывать ошибки через отрицательные значения?

     
     
  • 2.16, Аноним (16), 11:42, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Да, в убогих недо-язычках из 70х нет нормального средства передачи ошибок.
    Поэтому приходится нарушать "применение типов" и лепить типы данных которые избыточны.

    В одной из недавних дыреней в libxml2 (после которой гугл выкинул ее их хрома), для размера рассчитываемого буфера использовали signed переменную.
    Чтобы функция могла вернуть ошибку -1.

    Ну а так как каст таких типов происходит неявно - то вот и читаем регулярно про очередную дыру.

     
     
  • 3.18, Аноним (7), 11:48, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Го сейчас напряглось, идеоматически.
     
     
  • 4.23, Аноним (23), 12:04, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > Го сейчас напряглось, идеоматически.

    У Го как бы есть тип error.
    И прям в официальном примере есть как его использоваться

    func Open(name string) (file *File, err error)
    f, err := os.Open("filename.ext")

     
  • 3.20, Аноним (19), 11:55, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > Да, в убогих недо-язычках из 70х нет нормального средства передачи ошибок.

    А нормальные это какие? Можешь показать пример?

     

  • 1.15, Аноним (15), 11:41, 26/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/–
    > Уязвимость в Ruby, эксплуатируемая для удалённого выполнения кода

    Уязвимость в сишной либе, которую по глупости решили использовать рубиты.
    В самом руби в данном случае уязвимости нет, не нужно вводить людей в заблуждение.

     
  • 1.21, Аноним (21), 11:57, 26/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/–
    Кстати, а что там с актуальностью руби в бэкенде? Он таки смог пережить наплыв ноды и го в rest api или нет?
     
     
  • 2.22, Аноним (5), 12:04, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    большие проекты вроде живут, тот же гитлаб например. но новые думаю никто не начинает уже.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    XSQUARE
    Inferno Solutions
    Hosting by Hoster.ru
    Хоcтинг: