/

CVE-2026-116672

Severity:

HIGH RISK

(8.8)

IDOR (CWE-639) in Authlib Client Registration APIs

CVE-2026-116672

Awaiting Analysis

Vulnerability type

Category:

Authorization Bypass / Insecure Direct Object Reference

CWE:

CWE-639, CWE-1188

Impact:

Unauthorized client registration access, credential or token interception, and denial of service

Severity:

HIGH RISK

(8.8)

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

Authlib's documented client-registration reference implementations can authorize requests based on a client ID supplied by the requester without confirming that the registration access credential belongs to that client. In deployments that follow both examples, any client with a valid registration access token may be able to read, alter, or delete another client's registration.

Authlib's documented client-registration reference implementations can authorize requests based on a client ID supplied by the requester without confirming that the registration access credential belongs to that client. In deployments that follow both examples, any client with a valid registration access token may be able to read, alter, or delete another client's registration.

Affected context

The issue occurs in OAuth or OpenID Connect servers built with Authlib when both documented reference methods are used for client configuration authorization. The affected logic accepts request-controlled client identifiers, locates the corresponding registration, and checks editability without reliably binding the supplied credential to that same client. Deployments that implement additional ownership or token-to-client validation may not be affected in the same way.

The issue occurs in OAuth or OpenID Connect servers built with Authlib when both documented reference methods are used for client configuration authorization. The affected logic accepts request-controlled client identifiers, locates the corresponding registration, and checks editability without reliably binding the supplied credential to that same client. Deployments that implement additional ownership or token-to-client validation may not be affected in the same way.

Exploit preconditions

  • Attack surface: Client registration management endpoints
  • Required access: A valid registration access token for any client
  • Trigger point: Authentication and permission checks for client configuration operations
  • Target selection: The request supplies a client identifier used to select another registration
  • Why exploitation is possible: Authorization checks verify whether the selected client is editable but do not establish that the presented credential belongs to that client
  • Attack surface: Client registration management endpoints
  • Required access: A valid registration access token for any client
  • Trigger point: Authentication and permission checks for client configuration operations
  • Target selection: The request supplies a client identifier used to select another registration
  • Why exploitation is possible: Authorization checks verify whether the selected client is editable but do not establish that the presented credential belongs to that client

Why this happens

The underlying bug is an object-level authorization failure. Request-controlled client identifiers are used to select a registration, while the registration access credential is not cryptographically or logically bound to the selected client before read, update, or delete operations are authorized. This maps primarily to CWE-639: Authorization Bypass Through User-Controlled Key and is also related to CWE-1188: Insecure Default Initialization of Resource, because the documented authorization behavior can leave ownership validation incomplete.

The underlying bug is an object-level authorization failure. Request-controlled client identifiers are used to select a registration, while the registration access credential is not cryptographically or logically bound to the selected client before read, update, or delete operations are authorized. This maps primarily to CWE-639: Authorization Bypass Through User-Controlled Key and is also related to CWE-1188: Insecure Default Initialization of Resource, because the documented authorization behavior can leave ownership validation incomplete.

Potential impact

  • An attacker may read another client's registration details
  • An attacker could modify redirect URIs or other client metadata
  • Authorization codes or tokens may be redirected to an attacker-controlled endpoint
  • An attacker may delete registrations and cause denial of service
  • OAuth or OpenID Connect trust relationships could be weakened
  • An attacker may read another client's registration details
  • An attacker could modify redirect URIs or other client metadata
  • Authorization codes or tokens may be redirected to an attacker-controlled endpoint
  • An attacker may delete registrations and cause denial of service
  • OAuth or OpenID Connect trust relationships could be weakened

General mitigation guidance

Mitigation should center on binding every registration-management credential to the specific client object being accessed.

Common defensive patterns include:

  • Deriving the target client from the authenticated registration credential rather than trusting a separate request-controlled identifier
  • Verifying credential-to-client ownership before every read, update, or delete operation
  • Applying consistent authorization checks across all client configuration methods
  • Rejecting mismatched client identifiers and registration credentials by default
  • Restricting who may change redirect URIs and other security-sensitive metadata
  • Running registration-management services with only the privileges they require
  • Using explicit authorization policies and secure-by-default endpoint behavior

Mitigation should center on binding every registration-management credential to the specific client object being accessed.

Common defensive patterns include:

  • Deriving the target client from the authenticated registration credential rather than trusting a separate request-controlled identifier
  • Verifying credential-to-client ownership before every read, update, or delete operation
  • Applying consistent authorization checks across all client configuration methods
  • Rejecting mismatched client identifiers and registration credentials by default
  • Restricting who may change redirect URIs and other security-sensitive metadata
  • Running registration-management services with only the privileges they require
  • Using explicit authorization policies and secure-by-default endpoint behavior

How teams detect issues like this

Organizations can identify this class of issue through:

  • Static analysis and code review checks for authorization decisions that use request parameters to select objects
  • Review signals where an access token is validated for existence or general scope but not bound to the selected client
  • Tests that attempt to use one client's registration credential against another client's identifier
  • Policy enforcement requiring object ownership checks before read, update, and delete operations
  • Audit-log analysis for cross-client registration access, unexpected redirect URI changes, and registration deletions
  • Automated security review tools that flag missing object-level authorization and insecure direct object references

Organizations can identify this class of issue through:

  • Static analysis and code review checks for authorization decisions that use request parameters to select objects
  • Review signals where an access token is validated for existence or general scope but not bound to the selected client
  • Tests that attempt to use one client's registration credential against another client's identifier
  • Policy enforcement requiring object ownership checks before read, update, and delete operations
  • Audit-log analysis for cross-client registration access, unexpected redirect URI changes, and registration deletions
  • Automated security review tools that flag missing object-level authorization and insecure direct object references

Sources

SourceLink
github.comgithub.com/authlib/authlib/commit/1bd2a313492ce0a4d0571c150730907aa3fc91ff
github.comgithub.com/authlib/authlib/releases/tag/v1.9.1
github.comgithub.com/authlib/authlib/security/advisories/GHSA-c73q-w75p-j82v

Frequently asked

questions

It can be exploitable through exposed client registration endpoints when a deployment follows the affected reference authorization logic and an attacker possesses a valid registration access token for some client.

The attacker generally needs a valid registration access token, but it does not need to belong to the target client if ownership binding is missing.

Bind the authenticated registration credential directly to the client object and reject any operation where the credential and requested client do not match.

Test every object-level read and mutation authorization path with cross-client credentials, avoid trusting request-controlled object identifiers, and enforce consistent ownership policies in code review and automated testing.

It can be exploitable through exposed client registration endpoints when a deployment follows the affected reference authorization logic and an attacker possesses a valid registration access token for some client.

The attacker generally needs a valid registration access token, but it does not need to belong to the target client if ownership binding is missing.

Bind the authenticated registration credential directly to the client object and reject any operation where the credential and requested client do not match.

Test every object-level read and mutation authorization path with cross-client credentials, avoid trusting request-controlled object identifiers, and enforce consistent ownership policies in code review and automated testing.

Find out what's already
exploitable in your codebase.