CVE-2026-118669: OAuthLib: Token grants can use attacker-supplied client_id for authorization after authenticating a different client
OAuthlib’s token grant handlers can authenticate one client while authorizing the grant type and requested scopes using a different, attacker-supplied client_id from the request body.
In affected token grant flows, authenticate_client(request) sets request.client to the authenticated client object, but OAuthlib does not require request.client_id to match request.client.client_id. If the request body already contains client_id=..., OAuthlib keeps that value and passes it to validate_grant_type() and validate_scopes().
As a result, an authenticated low-privilege confidential client can authenticate as itself, submit another client’s client_id in the token request body, and cause grant and scope validation to run under that other client identity.
References
- github.com/advisories/GHSA-7984-qgvg-3j9c
- github.com/oauthlib/oauthlib/commit/c951a1d09f99f14e3240973fa83c4f4287d4753d
- github.com/oauthlib/oauthlib/pull/920
- github.com/oauthlib/oauthlib/releases/tag/v4.0.0
- github.com/oauthlib/oauthlib/security/advisories/GHSA-7984-qgvg-3j9c
- nvd.nist.gov/vuln/detail/CVE-2026-118669
Code Behaviors & Features
Detect and mitigate CVE-2026-118669 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Dependency Scanning using SBOM also detects vulnerabilities from proprietary advisories that this site does not include. Learn more about Dependency Scanning using SBOM →