/

CVE-2026-108718

Severity:

HIGH RISK

(8.1)

Missing Authorization (CWE-862) in Rill OAuth Server

CVE-2026-108718

Deferred

Vulnerability type

Category:

Missing Authorization

CWE:

CWE-862

Impact:

Unauthorized API access and account compromise

Severity:

HIGH RISK

(8.1)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

Rill's admin OAuth server may issue authorization codes to dynamically registered clients without obtaining the user's consent. An attacker who persuades a user to follow a crafted authorization link could obtain a non-expiring API token with that user's full permissions.

Rill's admin OAuth server may issue authorization codes to dynamically registered clients without obtaining the user's consent. An attacker who persuades a user to follow a crafted authorization link could obtain a non-expiring API token with that user's full permissions.

Affected context

The issue occurs in Rill deployments using the affected admin OAuth server and permitting dynamic client registration. Risk increases when an attacker can register a client, create an authorization request for the long_lived_access_token scope, and convince an authenticated user to approve or visit the resulting link without a meaningful consent decision.

The issue occurs in Rill deployments using the affected admin OAuth server and permitting dynamic client registration. Risk increases when an attacker can register a client, create an authorization request for the long_lived_access_token scope, and convince an authenticated user to approve or visit the resulting link without a meaningful consent decision.

Exploit preconditions

  • Attack surface: Admin OAuth authorization and dynamic client registration endpoints
  • Required access: Ability to register or control an OAuth client, plus a way to lure an authenticated user to an authorization link
  • Trigger point: Processing an authorization request for the long_lived_access_token scope
  • Why exploitation is possible: The authorization flow can issue a code without enforcing an explicit user-consent decision or adequately restricting the requested scope
  • Attack surface: Admin OAuth authorization and dynamic client registration endpoints
  • Required access: Ability to register or control an OAuth client, plus a way to lure an authenticated user to an authorization link
  • Trigger point: Processing an authorization request for the long_lived_access_token scope
  • Why exploitation is possible: The authorization flow can issue a code without enforcing an explicit user-consent decision or adequately restricting the requested scope

Why this happens

The underlying bug is an authorization failure in the OAuth consent flow. The server treats a dynamically registered client's authorization request as sufficient to issue an authorization code, including for a highly privileged long-lived token scope, without confirming that the resource owner has knowingly granted consent. This behavior maps to CWE-862, Missing Authorization, because a required permission check is absent at a security sensitive decision point.

The underlying bug is an authorization failure in the OAuth consent flow. The server treats a dynamically registered client's authorization request as sufficient to issue an authorization code, including for a highly privileged long-lived token scope, without confirming that the resource owner has knowingly granted consent. This behavior maps to CWE-862, Missing Authorization, because a required permission check is absent at a security sensitive decision point.

Potential impact

  • An attacker could obtain a persistent API token associated with the targeted user
  • The token may provide access to APIs and resources available to that user
  • An attacker could perform unauthorized administrative or data-management actions
  • Compromised credentials could enable longer-term account access or follow-on abuse
  • An attacker could obtain a persistent API token associated with the targeted user
  • The token may provide access to APIs and resources available to that user
  • An attacker could perform unauthorized administrative or data-management actions
  • Compromised credentials could enable longer-term account access or follow-on abuse

General mitigation guidance

Mitigation generally focuses on enforcing explicit, user-driven authorization

decisions for every sensitive OAuth scope and client type.

Common defensive patterns include:

  • Require clear user consent before issuing authorization codes or long-lived tokens
  • Apply strict allowlisting and validation to dynamically registered clients
  • Restrict high-privilege and non-expiring scopes by policy
  • Bind authorization codes and tokens to the intended client, redirect URI, and user session
  • Prefer short-lived, narrowly scoped tokens with revocation and rotation support
  • Apply least privilege to user and administrative API permissions
  • Record and alert on unusual client registrations, consent events, and token issuance

Mitigation generally focuses on enforcing explicit, user-driven authorization

decisions for every sensitive OAuth scope and client type.

Common defensive patterns include:

  • Require clear user consent before issuing authorization codes or long-lived tokens
  • Apply strict allowlisting and validation to dynamically registered clients
  • Restrict high-privilege and non-expiring scopes by policy
  • Bind authorization codes and tokens to the intended client, redirect URI, and user session
  • Prefer short-lived, narrowly scoped tokens with revocation and rotation support
  • Apply least privilege to user and administrative API permissions
  • Record and alert on unusual client registrations, consent events, and token issuance

How teams detect issues like this

Organizations can look for:

  • Static analysis and code review checks for OAuth flows that issue codes without an explicit consent or authorization decision
  • Signals showing dynamic clients requesting privileged or long-lived scopes
  • Mismatches between registered redirect URIs, authorization requests, and issued tokens
  • Audit events for unexpected client creation, authorization-code issuance, or persistent token use
  • Policy enforcement that blocks unapproved clients and sensitive scopes
  • Automated security review tools that model authorization checks across OAuth state transitions

Organizations can look for:

  • Static analysis and code review checks for OAuth flows that issue codes without an explicit consent or authorization decision
  • Signals showing dynamic clients requesting privileged or long-lived scopes
  • Mismatches between registered redirect URIs, authorization requests, and issued tokens
  • Audit events for unexpected client creation, authorization-code issuance, or persistent token use
  • Policy enforcement that blocks unapproved clients and sensitive scopes
  • Automated security review tools that model authorization checks across OAuth state transitions

Sources

SourceLink
github.comgithub.com/rilldata/rill
github.comgithub.com/rilldata/rill/blob/b9ea8c6f215e56c4c0848771e70b3ec38346eacc/admin/server/auth/handlers.go#L650-L697
github.comgithub.com/rilldata/rill/blob/b9ea8c6f215e56c4c0848771e70b3ec38346eacc/admin/server/auth/mcp_oauth.go#L77-L153
github.comgithub.com/rilldata/rill/blob/b9ea8c6f215e56c4c0848771e70b3ec38346eacc/admin/server/auth/pkce.go#L173-L214
hackmd.iohackmd.io/@haind03/rill-oauth-open-registration-long-lived-token
vulncheck.comvulncheck.com/advisories/rill-0.77.0-through-0.90.5-oauth-missing-authorization-via-dynamic-client-registration

Frequently asked

questions

Yes, the authorization endpoints may be reachable over the network. Successful

abuse generally also depends on an authenticated user being lured to an

attacker-controlled authorization link.

Not necessarily. The described flow relies on the victim's existing authenticated

session and the server's failure to require meaningful consent for the requested

scope.

Enforce an explicit consent decision for sensitive scopes, validate dynamically

registered clients and redirect URIs, and issue short-lived, narrowly scoped

tokens by default.

Apply centralized authorization checks to every OAuth state transition, limit

privileged scopes through policy, test consent and client-registration flows,

and monitor token issuance and client activity.

Yes, the authorization endpoints may be reachable over the network. Successful

abuse generally also depends on an authenticated user being lured to an

attacker-controlled authorization link.

Not necessarily. The described flow relies on the victim's existing authenticated

session and the server's failure to require meaningful consent for the requested

scope.

Enforce an explicit consent decision for sensitive scopes, validate dynamically

registered clients and redirect URIs, and issue short-lived, narrowly scoped

tokens by default.

Apply centralized authorization checks to every OAuth state transition, limit

privileged scopes through policy, test consent and client-registration flows,

and monitor token issuance and client activity.

Find out what's already
exploitable in your codebase.