The OpenNET Project / Index page

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

Уязвимость в библиотеке ruby-saml, приводящая к обходу аутентификации в GitLab

13.03.2025 15:00

Опубликованы корректирующие обновления платформы для организации совместной разработки GitLab - 17.9.2, 17.8.5 и 17.7.7, в которых устранена уязвимость (CVE-2025-25291, CVE-2025-25292), позволяющая обойти аутентификацию на базе SAML (Security Assertion Markup Language). Уязвимость присутствует в Ruby-библиотеке ruby-saml, реализующей функции для SAML-авторизации. Кроме GitLab уязвимость затрагивает и другие проекты, использующие данную библиотеку. Проблема устранена в обновлениях ruby-saml 1.18.0 и 1.12.4.

Уязвимость вызвана различиями в разборе XML-документов парсерами ReXML и Nokogiri, в результате чего при обработке одного и того же XML-документа генерировались документы, различные по своей структуре. Проблема в том, что REXML и Nokogiri по-разному обрабатывают в XML-документе цифровые подписи, что можно использовать для создания условий, при которых при проверке будет использована одна подпись, а при аттестации пользователя другая. Данная возможность позволяет атакующему воспользоваться методом атаки XSW (XML Signature Wrapping) для подделки ответа SAML для произвольного содержимого, имея доступ к любому подписанному SAML-документу.

Проблема выявлена в результате инициативы компании GitHub, которая рассматривала возможность перевода GitHub на использование данной библиотеки и в целях проверки безопасности организовала конкурс (Bug bounty) по взлому тестового окружения, в котором для SAML-аутентификации использовалась библиотека ruby-saml. Один из исследователей безопасности обратил внимание на наличие уязвимости. В процессе разбора проблемы сотрудник GitHub выявил ещё один способ атаки, основанный на том же принципе.

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

   
  1. Главная ссылка к новости (https://about.gitlab.com/relea...)
  2. OpenNews: Уязвимость в Ruby-SAML, позволяющая обойти аутентификацию в GitLab
  3. OpenNews: Критическая уязвимость в GitLab
  4. OpenNews: Уязвимость в GitHub Enterprise Server, дающая права администратора без аутентификации
  5. OpenNews: Обход верификации в библиотеке xml-crypto, насчитывающей миллион загрузок в неделю
  6. OpenNews: Уязвимость в GitLab, позволяющая захватить аккаунты, авторизированные через OAuth, LDAP и SAML
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/62876-saml
Ключевые слова: saml, gitlab
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (64) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.3, Анониматор (?), 15:21, 13/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • +23 +/
    GitLab - это яркий демонстратор того что не надо писать сложные вещи на Ruby. Жрёт память, еле шевелится, завышенные системные требования.
     
     
  • 2.7, Ivan_83 (ok), 15:47, 13/03/2025 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +3 +/
    Да, это просто ад для меинтейнера и сисадмина.
    Я как то пробовал ставить из портов это поделие на фре, так оно поставило более 600 портов и в итоге так и не заработало :)

    У меня на десктопе стоит 1к портов, но минимально как раз тоже примерно 600 надо для ДЕ с комфортом.

     
     
  • 3.10, Аноним (10), 16:21, 13/03/2025 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +2 +/
    Ну тут либо фря не подходит как платформа для работы сложного софта, либо админ неопытный. На линуксе в кубернетесе опыт эксплуатации с ~300 девелоперов могу оценить как приемлимый. Каких-то особых сложностей (и уж тем более чтобы не заработало) не вспоминается, даже бэкапы восстанавливать не приходилось.
     
     
  • 4.12, 12yoexpert (ok), 16:24, 13/03/2025 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    зачем для веб-морды гита кластер, если у тебя всего 300 клиентов? это ненормально
     
     
  • 5.18, Аноним (10), 16:47, 13/03/2025 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    Ну есть кластер, почему бы не использовать его и для гит-морды? Там же не только Гитлаб крутится.
     
     
  • 6.47, penetrator (?), 21:18, 13/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • –2 +/
    да какой это кластер, рантайм помойка, повторяющая функции systemd, дополнительный слой и тормоза

    в случае реального scale out - внешний балансировщик между нодами, смех

    оркестратор шареного хостинга ))))

     
     
  • 7.56, Аноним (56), 01:02, 14/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Ты точно кубом пользовался или на опеннете про него прочитал?
     
     
  • 8.57, penetrator (?), 01:37, 14/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    то что ты мыслишь стереотипами - не моя пробелема... текст свёрнут, показать
     
  • 8.67, 12yoexpert (ok), 06:23, 14/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    меня с ним заставляли работать тормозит гораздо сильнее, чем даже systemd... текст свёрнут, показать
     
  • 5.29, User (??), 17:41, 13/03/2025 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    Оу. Великий "организатор совещаний через cron" (тм) и в gitlab дальше оглавления(тм) не заглядывал? Ну... Ожидаемо, чоужтам.
     
  • 5.46, йос (?), 21:14, 13/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +1 +/
    Потому что этот кластер в первую очередь обеспечивает удобные и простые способы деплоя.
    Альтернативы flux+helm это либо отписываться с ног до головы своим ансиблом и поддерживать его или как дурачок настраивать все ручками и бекапить стейт.
     
     
  • 6.48, penetrator (?), 21:21, 13/03/2025 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +2 +/
    кластер в первую очередь это обеспечение scale out и HA,

    а то что у тебя зверинец для деплоймента, то это не причина иметь "кластер" )))

     
     
  • 7.58, Аноним (58), 01:42, 14/03/2025 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    А вот и блюстители Единственно™ Верного™ Применения™ кластеров в тред пожаловали со своим ценным мнением, что дозволено, а что нет.
     
     
  • 8.59, penetrator (?), 01:47, 14/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    ты конечно можешь сношать кого угодно, но ты врядли будешь называть кота собакой... текст свёрнут, показать
     
  • 7.73, User (??), 09:45, 14/03/2025 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    > кластер в первую очередь это обеспечение scale out и HA,
    > а то что у тебя зверинец для деплоймента, то это не причина
    > иметь "кластер" )))

    Ну, персонально у меня gitlab развернут в отдельном кластере куба - как раз по причине того, что эластично скейлить охапки раннеров для CI\CD сильно проще и дешевле для конечного заказчика, нежели поднимать вот это все на пуле выделенных под это дело хронически недо\перегруженных виртуалок. А в "отдельном" по причине фетвы от инфобезников, которым запуск полунедоделанных ошметков сока мозга чатжпт со стековерфлоу "почему-то" не нравится.

     
     
  • 8.86, penetrator (?), 17:49, 14/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    ты не поверишь, но раннер и сам гитлаб вообще не зависят друг от друга в плане д... текст свёрнут, показать
     
     
  • 9.87, User (??), 18:30, 14/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    У любителей гамаков и лыж - да У остальных - если отдельный кластер уже есть, т... текст свёрнут, показать
     
  • 6.64, Алконим (?), 05:25, 14/03/2025 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    Ну расскажи всем как бекапить стейки. Я обвно их ем
     
  • 4.17, Ivan_83 (ok), 16:38, 13/03/2025 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +4 +/
    Не, кубертинес не считается, это костыль где фактически эмулируется мамкин компуктер на котором разраб пилил свою поделку.
     
  • 4.65, Алконим (?), 05:31, 14/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +1 +/
    Да и меня на локалхосте работает. Хз какие там у него проблемы. И разрабы у нас так же говорят хз почему в проде софтварь не работает, на моем компе проблем нет.
     
  • 3.28, User (??), 17:38, 13/03/2025 [^] [^^] [^^^] [ответить]  [] []     [к модератору]
  • –2 +/
    Ну, это так то камень в огород фри, а не ruby с гитлабом - если вместо абсолютно беспроблемного деплоя хоть контейнером, хоть пакетом приходится вот это всё на лыжах под водой гамакать - чот в консерватории не то.
     
     
  • 4.68, Ivan_83 (ok), 06:40, 14/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +1 +/
    Не, это современный деплой пошёл не туда, когда уже скоро и пинг будут пихать в отдельный контейнер.

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

    У С/С++, пхп - традиционно зависимостей мало.

     
     
  • 5.72, User (??), 09:37, 14/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • –1 +/
    Как будто в этом есть что-то плохое Ц К chroot ам и jail ам поди претензий ... большой текст свёрнут, показать
     
     
  • 6.81, нах. (?), 14:40, 14/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +1 +/
    > "Как будто в этом есть что-то плохое!"(Ц). К chroot'ам и jail'ам поди претензий не было?

    они никогда не предназначались для того чтоб альтернативно-одаренные разработчики могли не уметь не то что в совместимость, а хотя бы в то чтоб поделка собиралась не только вообще на одном лишь их избранном локалхосте.

     
     
  • 7.88, User (??), 19:13, 14/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Ну да - с фантазией у дiдов чуть победнее было, любой проктолог со стажем подтвердит...
     
  • 3.33, нах. (?), 18:09, 13/03/2025 [^] [^^] [^^^] [ответить]  [] []     [к модератору]
  • +1 +/
    дай угадаю - из тех 600 - 590 - это лефтпады на самом же ruby. Боюсь что это проблема организации портов во фре.

    И в итоге не заработало потому что один из 600 оказался уже не той версии с которой тестировали сборку.

     
     
  • 4.37, Аноним (37), 18:23, 13/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > дай угадаю - из тех 600 - 590 - это лефтпады на самом же ruby.

    Не, там полно и каноничных лефтпадов

     
  • 4.61, Ivan_83 (ok), 03:59, 14/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Ага, примерно так и было.
     
  • 3.45, йос (?), 21:10, 13/03/2025 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    Проблема ли это гитлаба или тех кто мейнтейнит ваши бзди? 🤔
     
  • 3.55, gitlib (?), 00:10, 14/03/2025 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +2 +/
    Работает оно на фряхе. Но сборка из портов это мелочи на фоне:
    su -l git -c "cd /usr/local/www/gitlab && yarn install --production --pure-lockfile"
    su -l git -c "cd /usr/local/www/gitlab && RAILS_ENV=production NODE_ENV=production USE_DB=false SKIP_STORAGE_VALIDATION=true bundle exec rake gitlab:assets:compile"

    Также для сборки + работы гитлаба нужны: go 1.22, go 1.23 (да, 2 разные версии), ruby, python, node.
    Большего зоопарка в рамках одного софта я пока не видел за 25 лет.

     
     
  • 4.60, Аноним (60), 03:12, 14/03/2025 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    > Большего зоопарка в рамках одного софта я пока не видел за 25 лет.

    шо там в Requires :)

    https://ports.freebsd.org/cgi/ports.cgi?query=gitlab-ce&stype=all&sektion=all

     
     
  • 5.70, пох. (?), 08:53, 14/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +1 +/
    интересно, зачем им - ffmpeg в зависимостях? Кинчик между комитами показывать, про Big Bunny?

     
     
  • 6.82, axpk (?), 14:47, 14/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Есть там фича с записью видео для тестов. Хотя по хорошему конечно эта зависимость должна быть опциональной
     
     
  • 7.84, нах. (?), 15:50, 14/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > Есть там фича с записью видео для тестов.

    АААААА!!!!


    > Хотя по хорошему конечно эта зависимость должна быть опциональной

    она может и опциональна, но ты не собираешься делать ручной make config на все эти 600 зависимостей прямого и 1800 косвенного порядка.

     
  • 4.62, Ivan_83 (ok), 04:00, 14/03/2025 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    Так я пробовал раз лет 6 назад, потом там через пару дней вроде что то откатили и оно заработало но было уже поздно.
    Мы на гитеи жили прекрасно.
     
     
  • 5.71, пох. (?), 08:57, 14/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +1 +/
    ну это значит что вам и не нужна была совместная разработка. Порежьте помельче, пришлите в рассылку. Или даже и такого не было - кто чо накомитил, осенью посчитаем.

    Могли бы и вообще в стиле местного сумасшедшего - секретные бандлы в секретном чятике друг-дружке пересылать.

    гитляп, повторяю, это не замена отсутсвующей у гита авторизации и разделения пользователей. Это средство коллективной работы с кодом, прежде всего. Тот самый "чятик для разработчиков". Со стикерами и эмодзишечками.

     
     
  • 6.74, User (??), 09:57, 14/03/2025 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    > гитляп, повторяю, это не замена отсутсвующей у гита авторизации и разделения пользователей.
    > Это средство коллективной работы с кодом, прежде всего. Тот самый "чятик
    > для разработчиков". Со стикерами и эмодзишечками.

    И в этом виде она мне - как "не разработчику" очень так себе, кстати. Вся проектная часть через 33 интеграции в жире, постановки - то самое "что и почему сделано" - в конфе, инструментов для review\совместной работы не то, чтобы "не достаточно", но не сказать, чтобы "сколько-нибудь удобно" - в общем, с какой стороны не глянь, прям столько вокруг обмазывать надо, что б-жеж ты мой.
    Пока что самое лучшее видел в этом смысле - это space от jetbrains в связке с teamcity и youtrack - почти бесшовно, но только "почти".

     
     
  • 7.80, нах. (?), 14:36, 14/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > И в этом виде она мне - как "не разработчику" очень так себе, кстати.

    как будто у тебя выбор есть :-(

    от жьiдбрейнс нам ничего не надоть, я с их поделкой upsource намучался (и пачаму не на том йезыке?!) - а оно ни разу не бесплатное.

    Так что наслаждайтесь гитляпом - навернется, с бэкапа переставишь. Зато стикерпаки.

     
  • 6.83, Ivan_83 (ok), 15:08, 14/03/2025 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +/
    Говорю же - gitea хватает.
     
  • 3.79, Аноним (79), 14:06, 14/03/2025 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • –1 +/
    Забавно такое читать. Ну то есть, когда ты ставишь git из портов, ты не видишь, что по зависимостям притягивается тот же ruby, rust и два вагона всяких кортежей? :D
     
  • 2.30, Профессор Кукушкин (?), 17:46, 13/03/2025 [^] [^^] [^^^] [ответить]  []     [к модератору]
  • +1 +/
    Нет, это пример как не надо писать сложные проекты на любом языке. С теми практиками, которые используют в Гитлабе, он будет одинаково отвратительно работать на любом языке.
     
  • 2.66, Молодой Смузихлёб (?), 05:50, 14/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +1 +/
    Это мы ещё исходной код Mastodon не рассматривали.
     
     
  • 3.85, нах. (?), 15:52, 14/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    > Это мы ещё исходной код Mastodon не рассматривали.

    погодите, он разьве ж не на пихоне?!

     

  • 1.11, Аноним (11), 16:22, 13/03/2025 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • –4 +/
     
     
  • 2.13, 12yoexpert (ok), 16:26, 13/03/2025 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     
     
  • 3.21, Аноним (10), 16:59, 13/03/2025 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
  • 3.22, нах. (?), 17:03, 13/03/2025 Скрыто ботом-модератором     [к модератору]
  • –3 +/
     
     
  • 4.26, Аноним (10), 17:24, 13/03/2025 Скрыто ботом-модератором     [к модератору]
  • –2 +/
     
     
  • 5.34, Аноним (34), 18:09, 13/03/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
     
  • 6.39, нах. (?), 18:28, 13/03/2025 Скрыто ботом-модератором     [к модератору]
  • –3 +/
     
  • 2.14, Аноним (14), 16:27, 13/03/2025 Скрыто ботом-модератором     [к модератору]
  • +4 +/
     
     
  • 3.24, Аноним (10), 17:08, 13/03/2025 Скрыто ботом-модератором     [к модератору]
  • –2 +/
     
     
  • 4.31, User (??), 17:46, 13/03/2025 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
  • 2.20, нах. (?), 16:57, 13/03/2025 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
     
  • 3.25, Аноним (10), 17:14, 13/03/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
     
  • 4.35, нах. (?), 18:12, 13/03/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 3.36, blkkid (?), 18:18, 13/03/2025 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
     
  • 4.38, нах. (?), 18:23, 13/03/2025 Скрыто ботом-модератором     [к модератору]
  • –2 +/
     
  • 2.49, myster (ok), 22:25, 13/03/2025 Скрыто ботом-модератором     [к модератору]
  • –2 +/
     

  • 1.27, Аноним (27), 17:27, 13/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • +2 +/
    Автор! Обязательно пиши в какой версии уязвимость появилась.
     
  • 1.40, Аноним (40), 19:28, 13/03/2025 [ответить] [﹢﹢﹢] [ · · · ]      [к модератору]
  • +1 +/
    > Уязвимость вызвана различиями в разборе XML-документов парсерами ReXML и Nokogiri,

    Как вы яхту назовете... тоже мне, нога с гирей. И бегает соответственно.

     
  • 1.53, Аноним (-), 23:56, 13/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • –1 +/
    А в России есть аналогичные продукты которые можно поставить в качестве веб-морды CVS? Не обязательно для Git.
     
     
  • 2.78, abu (?), 13:31, 14/03/2025 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    GitFlic? (: У них там картинка для 404 страницы еще зачетная - медведь, горящий в машине.
     

  • 1.77, abu (?), 13:30, 14/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • –1 +/
    gitolite и все дела (:
    Хотя и GitLab - тоже норм, правда, за большое количество пользователей и проектов сказать не могу. Ставил его на bare metal k8s, ставил и без, ставил с птицей, ставил с проводницей. Лепил CI/CD, правда мало. Все работало.

    Самому лично GitLab по нраву тем, что можно его развернуть у себя, можно и не у себя. Там есть группы для репозиториев и мне это по нраву, а, насколько помню, в Github'e и Гитее такого нет, но могу и ошибаться.

    А то что софт надо обновлять - ну так то не новость.

     

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



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру