📊 Пять фатальных изъянов SAML: почему протоколу пора на пенсию
SAML работает 25 лет. Его создали в 2002 году в OASIS, а в основе — XML. Это и есть корень проблем. Томас Птачек ещё в 2023 году назвал проверку XML-подписей проклятой: большинство реализаций — обёртки над libxmlsec, жуткой кодовой базой на C. XSW-атаки (подмена обёртки XML-подписи) исследуют с 2005-го, но до сих пор ломают. В 2025-м через различия в обработке XML обошли аутентификацию на GitHub Enterprise. А в 2018-м Келби Людвиг нашёл обход через XML-комментарии. Протокол не выдержал собственной сложности.
Пять изъянов, по версии habr_infosec, убивают SAML. Первый — XML: теги, атрибуты, пространства имён, CDATA и DOCTYPE. Второй — канонизация: нужно получить стабильный хеш из хаотичного XML, но малейшая ошибка открывает путь к различиям в обработке XML. Третий — вложенные подписи: элемент Signature лежит внутри подписываемых данных, в отличие от JWT, где подпись отделена точкой. Четвёртый — лишняя сложность: 90% стандарта не используется. Пятый — окостенение: SAML не рассчитан на HTTP, мобильные и одностраничные приложения. OIDC развивается постепенно: PKCE для одностраничных приложений появился только в RFC 10017 в 2026 году.
Исторически SAML вырос из университетской среды: CAS, Shibboleth, ADFS. Okta, Ping Identity и Duo построили на нём рынок на миллиарды. Но эпоха VPN и закрытых сетей прошла. BeyondCorp и нулевое доверие перевернули подход в 2014-м. OIDC использует HTTPS и прямой серверный обмен между провайдером и RP. Неявный поток с отправкой формы закрывает даже сценарий, где SP и IdP не видят друг друга. Fly.io и Tailscale держатся только на OIDC.
Я бы не хоронил SAML завтра. Слишком много интеграций, устаревших систем, обещаний поставщиков. Но если вы строите новую аутентификацию — начинать с SAML в 2026 году значит сознательно закладывать уязвимость, которую потом придётся чинить чужими исправлениями. Проще отказаться сразу.
#SAML #OIDC #SSO #аутентификация #XMLsecurity
Post #889
3