Skip to content
Heist/ feed
Back to feed
High

OAuthLib: Token grants can use attacker-supplied client_id for authorization after authenticating a different client

Type: advisorySources: Official CVE List

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.

Products
oauthlib
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-118669
Confirmed fixed CVEs
Not specified
Updated in this feed
3 Nov 2026, 01:42 UTC · Revision 1

Source evidence

OAuthLib: Token grants can use attacker-supplied client_id for authorization after authenticating a different client

core-cve · Original source

Published 28 Oct 2026, 21:09 UTC

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.

cve:CVE-2026-118669

oauthlib

Fixed versions: Not specified

Complete source record
{
  "id": "f987c30b03ba7ed6fafc019eaad2c7b93768c871892b403a1f17aee590fbea95",
  "url": "https://www.cve.org/CVERecord?id=CVE-2026-118669",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "OAuthLib: Token grants can use attacker-supplied client_id for authorization after authenticating a different client",
    "summary": "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.",
    "evidence": "cve:CVE-2026-118669",
    "products": [
      {
        "name": {
          "value": "oauthlib",
          "evidence": "/containers/cna/affected/0/product"
        },
        "prerequisites": [],
        "fixed_versions": [],
        "affected_versions": []
      }
    ],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-118669",
      "aliases": [
        "CVE-2026-118669"
      ],
      "metrics": [
        {
          "cvssV4_0": {
            "version": "4.0",
            "baseScore": 8.4,
            "attackVector": "NETWORK",
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:N/SC:H/SI:H/SA:N",
            "userInteraction": "NONE",
            "attackComplexity": "LOW",
            "attackRequirements": "NONE",
            "privilegesRequired": "LOW",
            "subIntegrityImpact": "HIGH",
            "vulnIntegrityImpact": "HIGH",
            "subAvailabilityImpact": "NONE",
            "vulnAvailabilityImpact": "NONE",
            "subConfidentialityImpact": "HIGH",
            "vulnConfidentialityImpact": "NONE"
          }
        }
      ],
      "affected": [
        {
          "vendor": "oauthlib",
          "product": "oauthlib",
          "versions": [
            {
              "status": "affected",
              "version": "< 4.0.0"
            }
          ]
        }
      ],
      "modified": "2026-10-28T21:09:58.893Z",
      "provider": "cve",
      "references": [
        "https://github.com/oauthlib/oauthlib/security/advisories/GHSA-7984-qgvg-3j9c",
        "https://github.com/oauthlib/oauthlib/pull/920",
        "https://github.com/oauthlib/oauthlib/commit/c951a1d09f99f14e3240973fa83c4f4287d4753d",
        "https://github.com/oauthlib/oauthlib/releases/tag/v4.0.0"
      ],
      "provider_metadata": {
        "cna": {
          "orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
          "shortName": "GitHub_M",
          "dateUpdated": "2026-10-28T21:09:58.893Z"
        }
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-118669",
        "evidence": "/cveMetadata/cveId"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/containers/cna/metrics"
  },
  "source_id": "core-cve",
  "document_id": 491713,
  "published_at": "2026-10-28T21:09:58.893+00:00"
}