Skip to main content

Doorkeeper OpenID Connect CVE-2026-70665

MEDIUM
Improper Authorization (CWE-285)
2026-08-25 GitHub_M
4.2
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Register OAuth client via DCR with attacker-chosen elevated scopes
  2. Delivery
    Server persists client without scope validation
  3. Exploit
    Attacker sends authorization link to privileged user
  4. Execution
    User authorizes client
  5. Persist
    Attacker receives access token carrying inflated scopes
  6. Impact
    Access privileged API resources beyond intended grant

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization verification
MITRE ATT&CK

1 technique across 1 tactic: Defense Evasion

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

The Dynamic Client Registration endpoint must be enabled in the Rails application (it is an optional feature, not universally deployed). The Doorkeeper configuration must not explicitly set enforce_configured_scopes true - the default is off, making this condition easy to satisfy on unreviewed installations. The application must define scope values with meaningful access separation (e.g., an admin scope that grants elevated API access) where some scopes are not listed in Doorkeeper's default_scopes or optional_scopes. Exploitation is further limited by UI:R: a legitimate, appropriately privileged user must be induced to authorize the attacker's registered client before any elevated token is issued. Downstream resource servers that re-validate scopes against their own allowed lists independently of the persisted application record would break the exploit chain.

Impact

The CVSS 3.1 score of 4.2 with vector AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:L/A:N accurately reflects a moderate but real-world-constrained risk. AC:H captures the several specific preconditions that must align simultaneously, and UI:R reflects that a legitimate user must authorize the attacker's registered client before tokens are issued. The impact is bounded to C:L/I:L with no scope change, meaning the attacker gains access to resources beyond their intended permission but does not achieve full system compromise. No EPSS score was provided, and the vulnerability is not listed in CISA KEV, indicating no confirmed active exploitation at time of analysis. Real-world risk is meaningful primarily for multi-tenant Rails deployments that have enabled DCR, defined sensitive scopes such as admin that are distinct from server-configured scopes, and have users with elevated privileges who might authorize OAuth clients. Deployments with DCR disabled or with enforce_configured_scopes true are not affected.

Exploit ScenarioDerived

An attacker sends a POST request to the DCR endpoint supplying scope: 'public admin openid' where admin is not in the server's configured scope set; the server persists the client with all three scopes intact. The attacker then sends a crafted authorization link to a privileged user who authorizes the client, yielding an access token carrying the admin scope that grants access to protected API resources the attacker was not intended to reach.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
No patch listed yet 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Aug 25, 2026

Privilege escalation in Doorkeeper OpenID Connect prior to 1.10.4 allows self-registered OAuth clients to obtain scopes beyond what the server intends to grant. The Dynamic Client Registration endpoint directly assigns client-supplied scope values to the application record without intersecting them against the server's configured default_scopes and optional_scopes, and because enforce_configured_scopes is disabled by default, Doorkeeper's ScopeChecker subsequently honors those persisted application-level scopes over server-level restrictions. No public exploit has been identified at time of analysis; a vendor patch was released July 2, 2026.

RemediationAI

Upgrade doorkeeper-openid_connect to version 1.10.4, released July 2, 2026, which validates the scope parameter against the server's configured default_scopes and optional_scopes before persisting the registration, silently drops unrecognized scopes per RFC 7591 §2, and rejects registrations where all requested scopes are unsupported with an invalid_client_metadata error. As a compensating control prior to patching, set enforce_configured_scopes true in the Doorkeeper initializer, which causes ScopeChecker to reject tokens referencing scopes not in the server's configured set - note this may break existing clients that rely on custom application-level scopes and should be tested before deployment. Alternatively, disable the Dynamic Client Registration endpoint entirely if it is not a required feature of the deployment. See https://github.com/doorkeeper-gem/doorkeeper-openid_connect/security/advisories/GHSA-8r7r-wh7x-27ff and the fix commit at https://github.com/doorkeeper-gem/doorkeeper-openid_connect/commit/24c3cb1729b69f48649a6f4491dcae69f805000d.

Affects your stack

Find out whether the stacks and servers you run are on an affected version.

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The vulnerability resides in the DynamicClientRegistrationController#application_params method of the doorkeeper-openid_connect Ruby gem (CPE: cpe:2.3:a:doorkeeper-gem:doorkeeper-openid_connect:*:*:*:*:*:*:*:*), which implements RFC 7591 Dynamic Client Registration for Rails applications backed by Doorkeeper OAuth. The root cause (CWE-285: Improper Authorization) is the single-line assignment scopes: params[:scope] with no call to Doorkeeper.configuration.scopes or optional_scopes for validation. The exploit chain is enabled by two Doorkeeper defaults working in concert: enforce_configured_scopes is off by default, and ScopeChecker prioritizes application-level scopes - so a client persisted with an arbitrary scope like admin will have that scope honored at token-issuance time. The fix (commit 24c3cb1) introduces a permitted_scopes method that intersects client-supplied scopes with the server's scope set and a validate_scope validator that rejects registrations where all requested scopes are unsupported.

Know when Doorkeeper Openid Connect gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 4.2 MEDIUM
AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:L/A:N
vuln.today AI 4.2 MEDIUM

DCR endpoint is network-accessible without credentials, but exploitation demands default-off configuration, scope separation, and user authorization of the malicious client, with limited confidentiality and integrity impact.

3.1 AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:L/A:N
4.0 AV:N/AC:H/AT:P/PR:N/UI:A/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
Required
Scope
Unchanged
Confidentiality
Low
Integrity
Low
Availability
None

DescriptionCVE.org

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.

Threat Intelligence Overview

EPSS Score
0.2%
Top 94% exploitable
Prevalence
Low
niche Ruby gem for Rails OpenID Connect, limited enterprise footprint
Data Quality
4 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available No
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

21
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +21
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.

Affected Products (CPE)CVE.org

cpe:2.3:a:doorkeeper-gem:doorkeeper-openid_connect:*:*:*:*:*:*:*:*

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy