• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Redash SAML Authentication Bypass

BLUA

CPU register
Пользователь
Регистрация
24.03.2022
Сообщения
1 189
Решения
1
Реакции
794
Источник: 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 выступает в качестве поставщика услуг(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>` как показано на скриншоте ниже.
1.jpg


  • Вход в систему от имени администратора: когда пользователь входит в систему, чтобы связаться через SAML с несуществующим адресом электронной почты, Redash автоматически создает учетную запись для этого адреса. Это называется подготовкой точно в срок (JIT). Таким образом, мы можем войти в систему как test@victim.com , перейдите в Настройки → Пользователи, чтобы получить список всех учетных записей в экземпляре Redash - как на скриншоте ниже - и подделайте другое SAML-сообщение, чтобы войти в систему как один из администраторов.
2.jpg


Кроме того, 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 за проделанную всю тяжелую работу.

 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх