Уязвимость в Ruby-SAML, позволяющая обойти аутентификацию в GitLab

Опубликованы корректирующие обновления платформы для организации совместной разработки GitLab – 17.3.3, 17.2.6 и 17.1.8, в которых устранена критическая уязвимость, позволяющая обойти аутентификацию на базе SAML (Security Assertion Markup Language). Проблема вызвана уязвимостью (CVE-2024-45409) в Ruby-библиотеках ruby-saml и omniauth-saml, реализующих клиентскую часть SAML-авторизации. Уязвимости присвоен максимальный уровень опасности 10 из 10. Проблема устранена в обновлениях пакетов ruby-saml (1.17.0 и 1.12.3) и omniauth-saml (2.2.0).

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

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

Release. Ссылка here.