Doorkeeper OpenID Connect реализует поставщика аутентификации OpenID Connect для приложений Rails поверх Doorkeeper. До версии 1.10.4 конечная точка динамической регистрации клиентов (DCR) сохраняла области, предоставленные клиентом, без проверки их на соответствие настроенному набору областей сервера. При определенных условиях это позволяет самозарегистрированному клиенту получать области, выходящие за рамки того, что намеревался предоставить сервер.
В DynamicClientRegistrationController#application_params атрибут областей назначается непосредственно из параметра params[:scope] без проверки на соответствие Doorkeeper.configuration.scopes или option_scopes. В сочетании с выключенным по умолчанию Enforce_configured_scopes и ScopeChecker Doorkeeper, отдающим приоритет областям уровня приложения над областями уровня сервера, это создает путь повышения привилегий. Эта проблема исправлена в версии 1.10.4.
Показать оригинальное описание (EN)
Doorkeeper OpenID Connect implements an OpenID Connect authentication provider for Rails applications on top of Doorkeeper. Prior to 1.10.4, the Dynamic Client Registration (DCR) endpoint persists client-supplied scopes without validating them against the server's configured scope set. Under certain conditions, this allows a self-registered client to obtain scopes beyond what the server intended to grant. In DynamicClientRegistrationController#application_params, the scopes attribute is assigned directly from params[:scope] with no validation against Doorkeeper.configuration.scopes or optional_scopes. Combined with enforce_configured_scopes being off by default and Doorkeeper's ScopeChecker prioritizing application-level scopes over server-level scopes, this creates a privilege escalation path. This issue is fixed in version 1.10.4.
Характеристики атаки
Последствия
Строка CVSS v3.1