OAuthLib: Token grants can use attacker-supplied client_id for authorization
Summary
OAuthLib, a Python implementation of OAuth request-signing logic, does not require the request client_id to match the authenticated client in the client_credentials and Resource Owner Password Credentials grant handlers. A low-privileged authenticated client can thereby cause grant and scope authorization to use another client's identity, which can lead to tokens with unauthorized grants or scopes. The issue only affects applications whose validators rely on the client_id argument; validators that authorize exclusively from request.client may not be affected.
Affected
- oauthlib versions before 4.0.0
- Downstream distribution packages: check your distro tracker, fixed versions unknown.
Fixed in
- Fixed in oauthlib 4.0.0.
- Fixed distribution package versions: Unknown.
Workaround
- No vendor-confirmed workaround.
- Interim step: review custom validators for use of the client_id argument and treat this as a stopgap, not a fix.
Exploitation
- No evidence of known exploitation in the wild found.
- Not listed in CISA KEV as far as found.
- Public technical detail exists in the GHSA advisory; no standalone public exploit confirmed.
Our recommendation
- Inventory Python applications using oauthlib, including transitive dependencies and Docker images, and identify which act as token issuers.
- Upgrade to oauthlib 4.0.0 or later; for distro-packaged Python, check the vendor tracker for the fixed build.
- If upgrading is delayed, review custom validators that use the client_id argument.
- Note: CVSS scores differ (NVD/CNA 8.4, GitLab 9.6).
Public exploits
PoC-in-GitHub, Metasploit and Exploit-DB list nothing for this CVE.
Research sources
- GitHub Security Advisory GHSA-7984-qgvg-3j9c github.com
- oauthlib release v4.0.0 github.com
- Fix commit c951a1d github.com
- GitLab Advisory Database CVE-2026-118669 advisories.gitlab.com
- OSV Debian CVE-2026-118669 osv.dev
Researched and written up in English and German by an AI (Claude by Anthropic) based on NVD, CISA, EPSS and the sources listed. The vendor information is authoritative. Researched on 1 Nov 2026, 11:52.
Original description (NVD)
OAuthLib is an implementation of the OAuth request-signing logic for Python 3.6+. Prior to 4.0.0, the client_credentials and Resource Owner Password Credentials token grant handlers can authenticate request.client as one confidential client while retaining an attacker-supplied request.client_id for validate_grant_type and validate_scopes. A lower-privilege authenticated client can therefore cause grant and scope authorization to use another client's identity when an application validator relies on the documented client_id argument, potentially issuing tokens with unauthorized grants or scopes. Validators that authorize exclusively from request.client may not be affected. This issue is fixed in version 4.0.0.
Sources
The tracker combines official, freely usable data sources – updated continuously:
- NVD (NIST) – CVEs, rating (CVSS), affected products
- CISA KEV – vulnerabilities confirmed by CISA as actively exploited
- CISA Vulnrichment – CISA assessment (SSVC) in the official CVE record
- FIRST EPSS – probability of exploitation
- Microsoft MSRC – Patch Tuesday: vulnerabilities, severity, updates
- PoC-in-GitHub – public proof-of-concept repositories
- Metasploit (Rapid7) – modules of the Metasploit Framework
- Exploit-DB (OffSec) – archive of public exploits (links only)
- Patch days: official vendor pages (linked per vendor) (Vendor patch days)
This product uses data from the NVD API but is not endorsed or certified by the NVD. EPSS data © FIRST.org.
Affected? We can help.
We check whether your systems are affected, install updates and close the gap – continuously with the System Health Checker if you wish.
