Doorkeeper Openid Connect: Dynamic Client Registration feature creates public clients with client_secret
CVE-2026-44476 · GHSA-m6vc-f87m-cc2h
- Affected
- RubyGems doorkeeper-openid_connect >= 1.9.0, <= 1.9.0
- Fixed in
- 1.10.0· Vendor fix available
- Issue
- Impact The DynamicClientRegistrationController#register action hard-codes confidential: false when creating applications (dynamicclientregistrationcontroller.rb:18-25), yet the response includes a clientsecret and advertises tokenendpointauthmethodssupported: ["clientsecretbasic", "clientsecretpost"]. Because Doorkeeper's Application.byuidandsecret treats a blank/missing secret as valid for non-confidential (public) clients, an attacker who knows only the clientid (which is public information) can authenticate as the dynamically-registered client at the token endpoint. Note that Dynamic Client Registration is opt-in feature which is disabled by default so only projects that explicitly enabled it are affected. Steps to Reproduce 1. Enable dynamic client registration in the initializer 2. POST /oauth/registration with clientname, redirecturis, and scope 3. Observe: response returns clientsecret, but the created Doorkeeper::Application has confidential: false 4. Call…
Recommended action: Upgrade to 1.10.0 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.