SAML
Что такое SAML?
SAMLОткрытый стандарт на основе XML для обмена утверждениями об аутентификации и авторизации между поставщиком идентификации и поставщиком услуг.
SAML (Security Assertion Markup Language), стандартизованный как OASIS SAML 2.0 в 2005 году, определяет, как доверенный поставщик идентификации (IdP) выпускает цифрово подписанные XML-утверждения, описывающие идентичность и атрибуты пользователя, для поставщика услуг (SP), обеспечивая веб-единый вход (SSO) между доменами безопасности. SAML 2.0 поддерживает связки HTTP-Redirect и HTTP-POST; прежде чем создать сессию, SP должен проверить XML-подпись утверждения, поле Audience, временные условия NotOnOrAfter и InResponseTo.
Атаки и слабые места
Доминируют два класса сбоев. XML Signature Wrapping (XSW) и ошибки внедрения комментариев позволяют злоумышленнику протащить контролируемые им данные мимо проверки подписи. В феврале 2018 года Duo Labs раскрыла широкий класс таких уязвимостей в популярных наборах инструментов — CVE-2017-11427 (python-saml), CVE-2017-11428 (ruby-saml), CVE-2017-11429 (saml2-js) и CVE-2017-11430 (omniauth-saml) — где комментарий <!-- -->, вставленный в NameID, обрезал разобранный субъект, позволяя аутентифицированному пользователю войти под чужим именем. Golden SAML, описанный CyberArk в 2017 году, — это пост-компрометационная техника: злоумышленник, укравший закрытый ключ подписи токенов AD FS, может подделывать произвольные утверждения, обходящие пароли и MFA. APT29 применила именно это в кампании SolarWinds/SUNBURST 2020 года, чтобы выпускать федеративные токены, выглядевшие как обычные входы.
Меры защиты: требовать подписи и ответов, и утверждений, строго проверять audience/recipient, аппаратно защищать (HSM) ключ подписи токенов, ротировать его и отслеживать аномальные федеративные входы. Для новых интеграций часто предпочитают OpenID Connect.
flowchart LR U[Браузер пользователя] -->|1 доступ к ресурсу| SP[Поставщик услуг] SP -->|2 redirect с AuthnRequest| IdP[Поставщик идентификации] IdP -->|3 аутентификация пользователя| IdP IdP -->|4 подписанное SAML-утверждение| U U -->|5 POST утверждения| SP SP -->|6 проверка подписи + условий| SP SP -->|7 сессия предоставлена| U
● Примеры
- 01
Корпоративный IdP выпускает SAML-утверждение для входа в Salesforce.
- 02
Поставщик услуг проверяет AuthnResponse, подписанный Microsoft Entra ID.
● Частые вопросы
Что такое SAML?
Открытый стандарт на основе XML для обмена утверждениями об аутентификации и авторизации между поставщиком идентификации и поставщиком услуг. Относится к категории Идентификация и доступ в кибербезопасности.
Что означает SAML?
Открытый стандарт на основе XML для обмена утверждениями об аутентификации и авторизации между поставщиком идентификации и поставщиком услуг.
Как защититься от SAML?
Защита от SAML обычно сочетает технические меры и операционные практики, как описано в определении выше.
Какие есть другие названия SAML?
Распространённые альтернативные названия: SAML 2.0, Security Assertion Markup Language.