Snipe-IT версий 8.5.0–8.6.3 содержит открытую уязвимость перенаправления в конечной точке потребителя утверждений SAML (SamlController::acs, POST /saml/acs). Конечная точка записала параметр POST RelayState непосредственно в сеансовый ключ url.intended Laravel, убрав только символы CR/LF, а LoginController позже выполнил redirect()->intended(), который передает абсолютный URL-адрес в заголовок Location без изменений. Таким образом, неаутентифицированный злоумышленник, который побуждает пользователя экземпляра с поддержкой SAML-SSO посетить созданную ссылку SSO, инициированную IdP, может вызвать перенаправление браузера жертвы на произвольный абсолютный внешний URL-адрес сразу после успешной аутентификации, что, как указано в рекомендациях, облегчает фишинг с целью сбора учетных данных.
Никакой учетной записи на целевом экземпляре и компрометации поставщика удостоверений не требуется. Это касается только развертываний с включенным единым входом SAML. Исправлено в версии 8.7.0 (фиксация d30b73d, PR #19386), которая проверяет RelayState с помощью новой проверки Helper::sameOriginUrl перед его сохранением.
Показать оригинальное описание (EN)
Snipe-IT 8.5.0 through 8.6.3 contains an open redirect vulnerability in its SAML assertion-consumer endpoint (SamlController::acs, POST /saml/acs). The endpoint wrote the RelayState POST parameter directly into Laravel's url.intended session key with only CR/LF characters stripped, and LoginController later issued redirect()->intended(), which passes an absolute URL through to the Location header unchanged. An unauthenticated attacker who induces a user of a SAML-SSO-enabled instance to visit a crafted IdP-initiated SSO link can therefore cause the victim's browser to be redirected to an arbitrary absolute external URL immediately after a successful authentication, which the advisory notes facilitates credential-harvesting phishing. No account on the target instance and no compromise of the identity provider are required. Only deployments with SAML SSO enabled are affected. Fixed in 8.7.0 (commit d30b73d, PR #19386), which validates RelayState via a new Helper::sameOriginUrl check before storing it.
Характеристики атаки
Последствия
Строка CVSS v4.0