CVE-2026-49265
MediumCVSS 6.8Exploitation Probability (EPSS)
Low risk30th percentile - higher than 30% of all known CVEs
Summary
OAuthLib versions 3.0.0 through 4.0.0 compare attacker-supplied code_verifier values with stored challenges using ordinary string equality in PKCE checks, potentially leaking common-prefix timing information. This could allow recovery of the code_verifier, unauthorized access-token acquisition, and account takeover, though practical exploitation requires an intercepted single-use authorization code and many measurements. The issue is fixed in version 4.0.0.
Risk Assessment
Exploitation could lead to account takeover and unauthorized token access, but due to required conditions (intercepted code, network noise) the risk is moderate and considered a defense-in-depth concern.
Recommendation
Update OAuthLib to version 4.0.0 or later to eliminate the timing attack vulnerability.
Other vulnerabilities in OAuthLib
See all- CVE-2026-118669High
Prior to 4.0.0, OAuthLib's 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, potentially issuing tokens with unauthorized grants or scopes.
- CVE-2026-49264Medium
OAuthLib versions 0.6.1 through 4.0.0, when enable_jsonp=True, reflect an unvalidated callback request parameter into success and error response bodies in RevocationEndpoint. This allows execution of attacker-controlled JavaScript in the context of an application that loads the response as trusted JSONP, if the attacker can influence the callback. The feature is disabled by default and only affects deployments that explicitly enable JSONP. Fixed in version 4.0.0.
Original NVD description (English source)
OAuthLib is an implementation of the OAuth request-signing logic for Python 3.6+. From 3.0.0 until 4.0.0, OAuthLib's PKCE checks in oauthlib/oauth2/rfc6749/grant_types/authorization_code.py compare attacker-supplied code_verifier values with stored challenges using ordinary string equality in code_challenge_method_plain and code_challenge_method_s256. Because the comparison can return after a length difference or the first mismatching character, repeated token endpoint measurements can reveal common-prefix timing information that could potentially allow recovery of the code_verifier, unauthorized access-token acquisition, and account takeover. Practical exploitation requires an intercepted, single-use authorization code and enough measurements to overcome real-world network noise; the local timing benchmark does not establish practical remote account takeover, so the weakness remains a defense-in-depth concern. This issue is fixed in version 4.0.0.
Vulnerability data from NVD (NIST) · CISA KEV · EPSS

