Эксперты Duo Labs и CERT/CC (US Computer Emergency Response Team Coordination Center) обнаружили уязвимость в составе SAML. Благодаря багу атакующий может осуществить авторизацию под видом легитимного пользователя, не зная пароля жертвы.

SAML (Security Assertion Markup Language) – это язык  размети, базирующийся на XML, и часто использующийся для обмена данными аутентификации и авторизации между участниками, в частности, между поставщиком учетных записей (identity provider) и поставщиком сервиса (service provider).

В сущности, SAML является важнейшим элементом для технологии единого входа (Single Sign-On, SSO), которая позволяет пользователям логиниться в различные учетные записи, используя единый ID.  В отличие от других подобных механизмов (OAuth, OpenID, OpenID Connect, Facebook Connect), SSO хранит данные пользователей на центральном сервере, где те имеют аккаунты. Таким образом, когда человек пытается войти в какое-либо корпоративное приложение, оно выступает поставщиком сервиса (service provider, SP) и, используя SAML, обращается к локальному серверу SSO, который, в свою очередь, выступает поставщиком учетных записей (identity provider, IdP).

Эксперты Duo Labs сообщили, что им удалось обнаружить проблему, которая затрагивает ряд SSO-решений и опенсорсных библиотек, созданных для поддержки SAML-операций, связанных с технологией единого входа. Баг связан с тем, как уязвимые библиотеки обрабатывают XML-комментарии, внедренные непосредственно в SAML-запросы.

К примеру, злоумышленник может внедрить комментарий в поле username, таким образом, чтобы комментарий «разорвал» имя пользователя. В итоге это позволит атакующему получить доступ к аккаунту пользователя, выдав себя за него.

Впрочем, важным условием для осуществления атаки является наличие учетной записи в сети жертвы. То есть у злоумышленника должна быть возможность подделать SAML-запрос и заставить IdP поверить, что атакующий – это другой пользователь.

Эксперты пишут, что проблема представляет опасность для многих SSO-вендоров, которые используют хотя бы одну из уязвимых библиотек:

  • OneLogin — python-saml — CVE-2017-11427;
  • OneLogin — ruby-saml — CVE-2017-11428;
  • Clever — saml2-js — CVE-2017-11429;
  • OmniAuth-SAML — CVE-2017-11430;
  • Shibboleth — CVE-2018-0489;
  • Duo Network Gateway — CVE-2018-7340.

Чтобы защититься от уязвимости, аналитики Duo Labs рекомендуют отключать публикую регистрацию пользовательских аккаунтов и осуществлять эту процедуру вручную, чтобы атакующий не имел возможности создать учетную запись в нужной сети. Также можно использовать белый список email-адресов и доменов для регистрации в сети, хотя это уже менее надежный способ защиты.

1 комментарий

  1. john_

    05.03.2018 at 20:18

    Что то сложно 🤨

Оставить мнение