Исследователи из Escape Research обнаружили уязвимость в системе управления доступом Keycloak, которая даёт администратору с ограниченными правами возможность получать личные данные пользователей. Проблема затрагивает Admin REST API и связана с нарушением контроля доступа на уровне объектов. Разработчики устранили её в версии 26.7.0.
Уязвимость CVE-2026-17059
Keycloak - открытое программное обеспечение для управления идентификацией и доступом, которое широко применяется в корпоративных и облачных средах. Оно выступает основой для Red Hat build of Keycloak и используется во множестве проектов как сервис единого входа. Уязвимость, получившая идентификатор CVE-2026-17059, относится к категории CWE-639 и имеет оценку CVSS 3.1 6.5 баллов, что соответствует среднему уровню угрозы.
Суть проблемы заключается в том, что основной механизм фильтрации пользователей в Keycloak работает корректно: если администратор обладает только правами query-users и view-realm, но не view-users, то при запросе списка пользователей он получает пустой ответ. Однако смежный endpoint, который выводит участников конкретной роли, не применяет такую же проверку. Вместо этого система проверяет лишь наличие права на просмотр роли и права на выполнение пользовательских запросов, после чего возвращает полные записи всех участников роли.
Таким образом, учётная запись, которую Keycloak по умолчанию считает неспособной просматривать каталог пользователей, может через запрос участников роли получить имя пользователя, адрес электронной почты, имя и фамилию, статус учётной записи и сведения о подтверждении почты. Для воспроизведения проблемы достаточно двух запросов от одного ограниченного токена: основной список пользователей возвращает пустой результат, а список участников роли - полные данные.
В многоарендных или мультикомандных развёртываниях Keycloak такая уязвимость позволяет сотрудникам службы поддержки или администраторам с минимальными полномочиями перечислять личную информацию пользователей из других команд. Это нарушает предполагаемую изоляцию между группами, которую должна обеспечивать проверка прав view-users.
Escape Research подтвердила уязвимость на тестовой сборке Keycloak, собранной из основной ветки проекта. Сообщение о проблеме было направлено команде Keycloak 18 июля 2026 года и подтверждено в тот же день. Red Hat присвоил CVE-2026-17059 24 июля, а исправление вышло 28 июля. Исследователь Enzo Mongin, также известный как Orionexe, обнаружил проблему в рамках анализа безопасности платформы Escape Research.
Уязвимость затрагивает только реалмы, использующие стандартную модель административных разрешений Keycloak, где параметр adminPermissionsEnabled установлен в значение false. В таких конфигурациях права query-users и view-realm нередко назначаются учётным записям службы поддержки для выполнения поиска и просмотра конфигурации, что делает их привлекательной целью для получения несанкционированного доступа к пользовательским данным. Реалмы с включённой версией 2 детализированных административных разрешений не подвержены проблеме, поскольку фильтрация запросов участников роли выполняется на уровне хранилища данных.
Исправление добавляет проверку прав на просмотр каждого пользователя перед формированием ответа API для запроса участников роли. Это приводит механизм защиты в соответствие с тем, который уже используется в основном списке пользователей. Администраторам рекомендуется обновить Keycloak до версии 26.7.0 или более поздней. Также стоит пересмотреть роли делегированных администраторов, найти учётные записи с правами query-users и view-realm и оценить, не могли ли персональные данные оказаться раскрыты через API участников роли до установки патча.
Эта уязвимость привлекает внимание к тому, как проверки прав на доступ к данным применяются на разных уровнях API. В Keycloak основная точка входа оказалась защищена корректно, но смежный метод, работающий с тем же типом данных, пропустил фильтрацию. Подобные расхождения между соседними endpoints остаются распространённым классом ошибок в системах управления доступом, и их обнаружение требует проверки каждой конечной точки, возвращающей пользовательские данные, а не только основного списка. Повышение согласованности таких проверок на уровне платформы позволит снизить риск повторения схожих проблем в будущем.
Ссылки
- https://www.cve.org/CVERecord?id=CVE-2026-17059
- https://escape.tech/blog/escape-research-pii-disclosure-keycloak-cve-2026-17059/
- https://bugzilla.redhat.com/show_bug.cgi?id=2506746