Критическая уязвимость в Keycloak: неверная проверка зашифрованных утверждений SAML грозит утечкой данных

Keycloak

В популярном сервере единого входа Keycloak обнаружена опасная уязвимость, получившая идентификатор CVE-2026-2092. Она затрагивает работу протокола SAML (язык разметки защиты, используемый для обмена данными аутентификации и авторизации). Злоумышленник, имеющий действительное подписанное SAML-утверждение, может сформировать вредоносный ответ и получить несанкционированный доступ к ресурсам. Уязвимости присвоен высокий уровень опасности по шкале CVSS (стандартная система оценки угроз) - 7,7 балла из 10.

Проблема найдена в компоненте "keycloak-services". Атака возможна по сети, сложность высокая, но привилегии злоумышленнику требуются низкие. Взаимодействие с жертвой не нужно. Успешная эксплуатация приводит к компрометации конфиденциальности данных, а также частично затрагивает целостность и доступность.

Какие версии находятся под угрозой?

Уязвимость присутствует в линейках 26.2.x (до версии 26.2.14), 26.4.x (до версии 26.4.10) и 26.5.x (до версии 26.5.5). Разработчики уже выпустили исправления в версиях 26.2.14, 26.4.10, 26.5.5, а также в новой ветке 26.6.0. Всем администраторам настоятельно рекомендуется обновить Keycloak до одной из указанных сборок.

В чём суть уязвимости?

Как поясняется в бюллетене безопасности Keycloak (GHSA-794g-x443-36f7), ошибка кроется в механизме проверки зашифрованных утверждений SAML на конечной точке SAML-брокера. В нормальной ситуации, когда система единого входа принимает SAML-ответ от внешнего поставщика идентификационных данных, она проверяет подпись всего ответа. Однако в данном случае, если общий ответ не был подписан, но содержал зашифрованное утверждение, Keycloak не проверял, кому на самом деле принадлежит это утверждение.

Злоумышленник, который уже владеет действительным подписанным SAML-утверждением (например, полученным законно в рамках другого приложения), может вставить его в собственный вредоносный SAML-ответ. Поскольку проверка подписи самого ответа отключена, а зашифрованное утверждение распознаётся как валидное, Keycloak принимает указанные в нём атрибуты пользователя. В результате атакующий может выдать себя за любого другого пользователя (вплоть до администратора) и получить доступ к данным, которые ему не предназначены.

Как это работает технически?

Корень проблемы - в неверной проверке типа входных данных (эта категория ошибок обозначается как CWE-1287). Проще говоря, программа должна была убедиться, что утверждение принадлежит тому же субъекту, что и подпись ответа. Этого не происходит. Уязвимость затрагивает именно сценарий использования зашифрованных утверждений - они часто применяются для дополнительной защиты конфиденциальных данных при передаче. Но почему-то разработчики Keycloak решили, что если ответ не подписан целиком, то можно положиться только на шифрование. Как выяснилось, этого недостаточно.

Для успешной атаки преступнику необходим доступ к хотя бы одному законному SAML-утверждению (с действительной подписью). Где его взять? Например, если компания использует единый поставщик идентификационных данных (IdP) для нескольких сервисов, и сотрудник имеет доступ к одному из них, то выданное ему утверждение может быть перехвачено или скопировано. После этого злоумышленник формирует новый SAML-ответ, в котором утверждение шифрует, а всё остальное оставляет без подписи. Keycloak принимает его и устанавливает сессию с неправомерными правами.

Кому и чем это грозит?

Уязвимость представляет серьёзную угрозу для организаций, использующих Keycloak в качестве центрального сервера аутентификации. В первую очередь под удар попадают предприятия, где развёрнуты решения на базе SAML с поддержкой шифрования утверждений. Это может быть любой бизнес, предоставляющий сотрудникам или клиентам единый вход через внешнего IdP. Киберпреступники, получив доступ к одному действительному утверждению, могут "прыгать" между приложениями, повышая свои полномочия.

Последствия варьируются от утечки персональных данных до полной компрометации информационной системы. Например, если злоумышленник выдаст себя за администратора, он сможет переконфигурировать политики доступа, добавить вредоносных пользователей или изменить параметры безопасности. Не стоит сбрасывать со счетов и возможности кражи коммерческой тайны или доступа к финансовым отчётностям.

Следует добавить, что атака не требует физического доступа к сети жертвы - достаточно возможности отправлять вредоносные SAML-ответы на конечную точку Keycloak. Это может быть сделано как изнутри организации, так и из интернета, если сервис единого входа выставлен наружу.

Что делать специалистам?

Прежде всего - установить исправленную версию Keycloak. Инструкции по обновлению доступны в официальном бюллетене безопасности GHSA-794g-x443-36f7 на GitHub (раздел "Security advisories"). В качестве временных мер, если обновление невозможно, стоит рассмотреть ограничение сетевого доступа к конечной точке SAML-брокера, а также усилить мониторинг входящих SAML-сообщений на предмет нестандартных комбинаций подписанных и зашифрованных элементов.

Кроме того, полезно проверить, используются ли в вашей среде зашифрованные SAML-утверждения; если нет, риск несколько снижается. Но рано или поздно апгрейд всё равно потребуется - ошибка затронула все три поддерживаемые линейки.

Выводы

Обнаруженная уязвимость Keycloak - ещё одно напоминание о том, как легко сложные протоколы единого входа могут дать сбой при малейшем упущении разработчиков. Ошибка в логике проверки зашифрованных утверждений позволяет злоумышленнику с минимальными привилегиями обойти политику безопасности и получить доступ к чужим данным. С учётом широкого распространения Keycloak в крупных корпоративных средах, нельзя исключать, что эта CVE-2026-2092 уже эксплуатируется в реальных атаках. Администраторам безопасности необходимо безотлагательно внедрять патч и пересматривать конфигурации SAML-интеграций.

Ссылки

Комментарии: 0