{"id":"UBUNTU-CVE-2026-70665","details":"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.","modified":"2026-09-02T19:36:28.798538568Z","published":"2026-08-25T23:17:00Z","upstream":["CVE-2026-70665"],"references":[{"type":"REPORT","url":"https://ubuntu.com/security/CVE-2026-70665"},{"type":"REPORT","url":"https://www.cve.org/CVERecord?id=CVE-2026-70665"},{"type":"REPORT","url":"https://github.com/doorkeeper-gem/doorkeeper-openid_connect/security/advisories/GHSA-8r7r-wh7x-27ff"}],"affected":[{"package":{"name":"ruby-doorkeeper-openid-connect","ecosystem":"Ubuntu:18.04:LTS","purl":"pkg:deb/ubuntu/ruby-doorkeeper-openid-connect?arch=source&distro=bionic"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.1.2-1"],"ecosystem_specific":{"binaries":[{"binary_version":"1.1.2-1","binary_name":"ruby-doorkeeper-openid-connect"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-70665.json"}},{"package":{"name":"ruby-doorkeeper-openid-connect","ecosystem":"Ubuntu:20.04:LTS","purl":"pkg:deb/ubuntu/ruby-doorkeeper-openid-connect?arch=source&distro=focal"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.5.5-1","1.6.3-2"],"ecosystem_specific":{"binaries":[{"binary_name":"ruby-doorkeeper-openid-connect","binary_version":"1.6.3-2"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-70665.json"}},{"package":{"name":"ruby-doorkeeper-openid-connect","ecosystem":"Ubuntu:22.04:LTS","purl":"pkg:deb/ubuntu/ruby-doorkeeper-openid-connect?arch=source&distro=jammy"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.7.4-2","1.8.0-1"],"ecosystem_specific":{"binaries":[{"binary_name":"ruby-doorkeeper-openid-connect","binary_version":"1.8.0-1"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-70665.json"}},{"package":{"name":"ruby-doorkeeper-openid-connect","ecosystem":"Ubuntu:24.04:LTS","purl":"pkg:deb/ubuntu/ruby-doorkeeper-openid-connect?arch=source&distro=noble"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.8.7-1"],"ecosystem_specific":{"binaries":[{"binary_name":"ruby-doorkeeper-openid-connect","binary_version":"1.8.7-1"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-70665.json"}},{"package":{"name":"ruby-doorkeeper-openid-connect","ecosystem":"Ubuntu:26.04:LTS","purl":"pkg:deb/ubuntu/ruby-doorkeeper-openid-connect?arch=source&distro=resolute"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.8.7-1","1.8.11-1"],"ecosystem_specific":{"binaries":[{"binary_version":"1.8.11-1","binary_name":"ruby-doorkeeper-openid-connect"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-70665.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:L/A:N"},{"type":"Ubuntu","score":"medium"}]}