tgoop.com/hackproglib/3994
Last Update:
🚪 Войти как любой пользователь: обход аутентификации SAML SSO с помощью parser differentials
SAML используется для единого входа (SSO) и передачи информации об учетных записях через XML. Когда пользователь входит в систему через SAML, сервис-провайдер проверяет, действительно ли переданный идентификатор пользователя подписан доверенным удостоверяющим центром.
Основные проверки:
— SignatureValue: убедиться, что сообщение подписано доверенным ключом.
— DigestValue: убедиться, что данные не были изменены.
Именно с SAML связаны две последние критические уязвимости обхода аутентификации (CVE-2025-25291 + CVE-2025-25292). Они были обнаружены в ruby-saml до версии 1.17.0. Ruby-saml использует два разных XML-парсера — REXML и Nokogiri — в одном и том же процессе проверки подписи.
Это привело к разнице в интерпретации XML-документов. Можно было создать SAML-ответ, в котором:
— REXML видит одну подпись, которая соответствует действительному ключу.
— Nokogiri видит другую подпись, привязанную к поддельным данным.
Таким образом, проверка подписи проходит, но на самом деле подписанные данные не соответствуют исходному документу. Это позволяет подделать сигнатуру SAML и войти под чужой учетной записью.