Опубликованы корректирующие обновления платформы для организации совместной разработки 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-документу, пройти аутентификацию под другим пользователем, т.е. для того чтобы обойти аутентификацию и войти под другим пользователем, атакующий уже должен иметь доступ к одной из рабочих учётных записей.