Источник: https://blog.calif.io/p/redash-saml-authentication-bypass
Перевод: BLUA
Redash(https://redash.io/) это популярный софт для анализа и визуализации данных. Недавно мы сообщили о критической уязвимости обхода аутентификации SAML(https://ru.wikipedia.org/wiki/SAML), затрагиваюшую его последнюю версию.
Уязвимость может привести к получению максимальных привелегий в системе. Это открытие привело к важному заявлению от сопроваждающего проекта.
Уязвимость
Мы столкнулись с Redash в недавнем своём исследовании. Мы очень часто встречаемся с программными продуктами с открытым исходным кодом. И в этот раз мы решили изучить его поближе.
Большая часть поверхности для атаки Redash находиться за аутентификацией. Вот почему SAML был в числе целей, которые мы проверили одними из первых. У нас было несколько интересных моментов, но самым интересным на данный момент является - обход авторизации SAML.
Уязвимость работает следующим образом:
Уязвимость позволяет нам подделывать SAML-сообщения от любых поставщиков идентификационных данных. Чтобы использовать его в реальных экземплярах Redash, мы должны преодолеть несколько небольших препятствий:
Кроме того, Redash допускает незапрашиваемые SAML-ответы, что означает, что не нужно проходить весь процесс входа в систему, инициированный SP, чтобы создать допустимую полезную нагрузку SAML-ответа, что упрощает эксплойт.
Смягчение
Redash быстро признал уязвимость, но не выпустил новую версию с исправлением зависимостей. Официальная рекомендация рекомендует обновить pysaml2 до версии >= 6.5.0.
В качестве углубленной защиты рассмотрите:
Мы сообщили о проблеме нескольким затронутым организациям. Учитывая, что исправление должно быть применено вручную, впечатляет, как они решили эту проблему за считанные дни. Большинство из них классифицировали уязвимость как критическую и щедро вознаграждали за нее.
ТайЛайн
Эта уязвимость вызывает сожаление. Несмотря на большую популярность, разработка Redash была приостановлена с тех пор, как она была приобретена Databricks. Вероятно, именно поэтому эта проблема так долго оставалась незамеченной. Любой инструмент автоматизации мог бы это уловить. Фактически, dependapot с GitHub некоторое время назад отправил запрос на обновление pysaml2, но он был проигнорирован.
С другой стороны, мы рады видеть, что эта работа способствует позитивным изменениям. Redash сделал еще одно объявление после раскрытия информации и решил возродить проект в соответствии с новой главой как проект, возглавляемый сообществом.
Как всегда, SAML сложно правильно реализовать, и он остается большим вектором атаки для изучения.
Наконец, спасибо команде за отличное сотрудничество в этом небольшом исследовании, особенно An за поиск уязвимости и Gia за проделанную всю тяжелую работу.
github.com
github.com
Перевод: BLUA
Redash(https://redash.io/) это популярный софт для анализа и визуализации данных. Недавно мы сообщили о критической уязвимости обхода аутентификации SAML(https://ru.wikipedia.org/wiki/SAML), затрагиваюшую его последнюю версию.
Уязвимость может привести к получению максимальных привелегий в системе. Это открытие привело к важному заявлению от сопроваждающего проекта.
Уязвимость
Мы столкнулись с Redash в недавнем своём исследовании. Мы очень часто встречаемся с программными продуктами с открытым исходным кодом. И в этот раз мы решили изучить его поближе.
Большая часть поверхности для атаки Redash находиться за аутентификацией. Вот почему SAML был в числе целей, которые мы проверили одними из первых. У нас было несколько интересных моментов, но самым интересным на данный момент является - обход авторизации SAML.
Уязвимость работает следующим образом:
- В поток SAML, Redash выступает в качестве поставщика услуг(SP), а популярные провайдеры, такие как Okta или Google, выступают в качестве поставщика удостоверения личности(IdP).
- SAML использует цифровые подписи для аутентификации пользователей. Пользователь входит в IdP и перенаправляется обратно на Redash с подписанным сообщением SAML, содержащим информацию пользователя.
- Redash использует библиотеку pysaml2(https://github.com/IdentityPython/pysaml2) 6.1.0 для реализации аутентификации SAML на двух ендпоинтах /saml/login и /saml/callback. Однако pysaml2 до версии 6.5.0 уязвим для CVE-2021-21239, что позволяет обойти проверку подписи в произвольных сообщениях SAML.
- В частности, серверная часть pysaml2 по дефолту, CryptoBackendXmlSec1, используют итилиту командной строки xmlsec1 для проверки подписанных SAML-сообщений. Однако xmlsec1 по умолчанию предпочитает ключ, встроенный в сообщение, явно загружает ключ(например указанный в коммандной строке). Впервые об этом опасном поведении сообщил Грег Вишнепольский в 2013году.
Уязвимость позволяет нам подделывать SAML-сообщения от любых поставщиков идентификационных данных. Чтобы использовать его в реальных экземплярах Redash, мы должны преодолеть несколько небольших препятствий:
- Получение идентификатора сущности SAML: в мире SAML каждый поставщик удостоверений уникально идентифицируется с помощью идентификатора сущности SAML. Red ash будет принимать сообщения SAML только в том случае, если это значение правильное. К счастью, большинство IdP использует идентификаторы сущностей SAML, которые можно вывести из наблюдения за сеансом входа в систему SAML. Например, Google использует шаблон `https://accounts.google.com/o/saml2?idpid=<IDPID>` как показано на скриншоте ниже.
- Вход в систему от имени администратора: когда пользователь входит в систему, чтобы связаться через SAML с несуществующим адресом электронной почты, Redash автоматически создает учетную запись для этого адреса. Это называется подготовкой точно в срок (JIT). Таким образом, мы можем войти в систему как test@victim.com , перейдите в Настройки → Пользователи, чтобы получить список всех учетных записей в экземпляре Redash - как на скриншоте ниже - и подделайте другое SAML-сообщение, чтобы войти в систему как один из администраторов.
Кроме того, Redash допускает незапрашиваемые SAML-ответы, что означает, что не нужно проходить весь процесс входа в систему, инициированный SP, чтобы создать допустимую полезную нагрузку SAML-ответа, что упрощает эксплойт.
Смягчение
Redash быстро признал уязвимость, но не выпустил новую версию с исправлением зависимостей. Официальная рекомендация рекомендует обновить pysaml2 до версии >= 6.5.0.
В качестве углубленной защиты рассмотрите:
- переключитесь на OAuth2 вместо SAML
- обновите REDASH_COOKIE_SECRET, чтобы аннулировать все существующие сеансы
Мы сообщили о проблеме нескольким затронутым организациям. Учитывая, что исправление должно быть применено вручную, впечатляет, как они решили эту проблему за считанные дни. Большинство из них классифицировали уязвимость как критическую и щедро вознаграждали за нее.
ТайЛайн
- 16 января 2023 г.: Обнаружена уязвимость
- 17 марта 2023: Сообщено в Redash
- 18 марта 2023 г.: Повторная проверка подтвердила уязвимость
- 4 апреля 2023 г.: Опубликовано руководство на GitHub(https://github.com/getredash/redash/security/advisories/GHSA-rm5x-rgmf-qv5c)
- 4 апреля 2023 г.: Сообщено известным пострадавшим организациям
- 28 апреля 2023: Опубликовано это сообщение в блоге
Эта уязвимость вызывает сожаление. Несмотря на большую популярность, разработка Redash была приостановлена с тех пор, как она была приобретена Databricks. Вероятно, именно поэтому эта проблема так долго оставалась незамеченной. Любой инструмент автоматизации мог бы это уловить. Фактически, dependapot с GitHub некоторое время назад отправил запрос на обновление pysaml2, но он был проигнорирован.
С другой стороны, мы рады видеть, что эта работа способствует позитивным изменениям. Redash сделал еще одно объявление после раскрытия информации и решил возродить проект в соответствии с новой главой как проект, возглавляемый сообществом.
Как всегда, SAML сложно правильно реализовать, и он остается большим вектором атаки для изучения.
Наконец, спасибо команде за отличное сотрудничество в этом небольшом исследовании, особенно An за поиск уязвимости и Gia за проделанную всю тяжелую работу.
‼️ SAML Privilege Escalation via PySAML2 ‼️ · getredash/redash · Discussion #5961
Thanks to responsible disclosure from @yabeow and @aphtrinh from Calif, we became aware of a critical security vulnerability for Redash deployments that have SAML enabled. If you have SAML enabled,...
Unspecified xmlsec1 key-type preference
### Impact All users of pysaml2 that use the default `CryptoBackendXmlSec1` backend and need to verify signed SAML documents are impacted. `pysaml2 <= 6.4.1` does not ensure that a signed SAML d...