Doorkeeper OpenID Connect: Dynamic Client Registration feature creates public clients with client_secret
Key facts
- Attack vector
- Network
- Privileges required
- None
- User interaction
- None
- Attack complexity
- Low
- Attack requirements
- Present
- Impact type
- Security bypass
- Confidentiality · integrity · availability
- Low · Low · None
- Fix status
- Fixed
Attack profile from CVSS 4.0 · CNA. Fix status from CNA and GitHub. Impact type from CWE-287.
Summary
Doorkeeper is an OAuth 2 provider for Ruby on Rails. In version 1.9.0, an attacker who knows only a dynamically registered client's client_id, which is public information, can authenticate as that client at the token endpoint and obtain an access token without providing its client_secret. This occurs because the Dynamic Client Registration feature creates applications with confidential: false hard-coded, even though the registration response returns a client_secret and advertises support for the client_secret_basic and client_secret_post authentication methods; since Doorkeeper treats a blank or missing secret as valid for non-confidential (public) clients, the secret is never verified. Only projects that have explicitly enabled Dynamic Client Registration, which is disabled by default, are affected. This issue is fixed in version 1.10.0.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- Poc
- Automatable
- Yes
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| doorkeeper-gem | doorkeeper-openid_connect | 1.9.0 to before 1.10.0 | 1.10.0 | Patch available | CNA |
| — | doorkeeper-openid_connect (RubyGems) | 1.9.0 to before 1.10.0 | 1.10.0 | Patch available | GHSA-m6vc-f87m-cc2h |
- doorkeeper-openid_connect Vendordoorkeeper-gem Affected 1.9.0 to before 1.10.0 Fixed in 1.10.0 Patch available CNA
- doorkeeper-openid_connect (RubyGems) Vendor— Affected 1.9.0 to before 1.10.0 Fixed in 1.10.0 Patch available GHSA-m6vc-f87m-cc2h
Remediation
- Fix · CNA doorkeeper-openid_connect (doorkeeper-gem) Fixed in 1.10.0
- Fix · GHSA-m6vc-f87m-cc2h doorkeeper-openid_connect (RubyGems) Fixed in 1.10.0 Advisory →
Timeline
- 2026-10-02 Threatist record created from CVE-2026-44476
- 2026-10-03 Alias added: GHSA-m6vc-f87m-cc2h
References
Other 6
- https://github.com/doorkeeper-gem/doorkeeper-openid_connect/security/advisories/GHSA-m6vc-f87m-cc2h
- https://github.com/doorkeeper-gem/doorkeeper-openid_connect/commit/561af83dcf
- https://github.com/doorkeeper-gem/doorkeeper-openid_connect
- https://github.com/doorkeeper-gem/doorkeeper-openid_connect/releases/tag/v1.10.0
- https://github.com/rubysec/ruby-advisory-db/blob/master/gems/doorkeeper-openid_connect/CVE-2026-44476.yml
- https://www.cve.org/CVERecord?id=CVE-2026-44476
More doorkeeper-gem vulnerabilities
- TI-2026-49360 Doorkeeper OpenID Connect: DCR endpoint persists unvalidated client-supplied scopes CVSS 3.1MEDIUM 4.2
Sources
- CVE-2026-44476 · CVE Program
- CVE-2026-44476 · NVD
- FIRST EPSS
- GHSA-m6vc-f87m-cc2h · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences