CVE-2026-49264
OAuthLib: Unsafe JSONP callback injection in RevocationEndpoint allows arbitrary JavaScript response generation
OAuthLib is an implementation of the OAuth request-signing logic for Python 3.6+. From 0.6.1 until 4.0.0, OAuthLib's RevocationEndpoint in oauthlib/oauth2/rfc6749/endpoints/revocation.py reflects an unvalidated callback request parameter into success and error response bodies when enable_jsonp=True. The callback can come from the query string or request body and is used without restricting it to a legal JavaScript function name. A browser application that loads the revocation response as trusted JSONP and permits attacker influence over callback can therefore execute attacker-controlled JavaScript in the including application's origin, with access to its DOM and script-accessible data. The feature is disabled by default, so only deployments that explicitly enable JSONP are affected. This issue is fixed in version 4.0.0.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- Required
What an attacker can affect
- Confidentiality
- Low
- Integrity
- Low
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
6.1
OAuthLib: Unsafe JSONP callback injection in RevocationEndpoint allows arbitrary JavaScript response generation
OAuthLib is an implementation of the OAuth request-signing logic for Python 3.6+. From 0.6.1 until 4.0.0, OAuthLib's RevocationEndpoint in oauthlib/oauth2/rfc6749/endpoints/revocation.py reflects an unvalidated callback request parameter into success and error response bodies when enable_jsonp=True. The callback can come from the query string or request body and is used without restricting it to a legal JavaScript function name. A browser application that loads the revocation response as trusted JSONP and permits attacker influence over callback can therefore execute attacker-controlled JavaScript in the including application's origin, with access to its DOM and script-accessible data. The feature is disabled by default, so only deployments that explicitly enable JSONP are affected. This issue is fixed in version 4.0.0.
- Record
CVE-2026-49264- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Weakness
- CWE-79
- Updated
- 2026-11-02
EUVDEUVD-2026-98834
6.1
OAuthLib is an implementation of the OAuth request-signing logic for Python 3.6+. From 0.6.1 until 4.0.0, OAuthLib's RevocationEndpoint in oauthlib/oauth2/rfc6749/endpoints/revocation.py reflects an unvalidated callback request parameter into success and error response bodies when enable_jsonp=True. The callback can come from the query string or request body and is used without restricting it to a legal JavaScript function name. A browser application that loads the revocation response as trusted JSONP and permits attacker influence over callback can therefore execute attacker-controlled JavaScript in the including application's origin, with access to its DOM and script-accessible data. The feature is disabled by default, so only deployments that explicitly enable JSONP are affected. This issue is fixed in version 4.0.0.
- Record
EUVD-2026-98834- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-hj66-6f7g-4r5v
6.1
Oauthlib : Unsafe JSONP callback injection in RevocationEndpoint allows arbitrary JavaScript response generation
Summary
When enable_jsonp=True, oauthlib's RevocationEndpoint reflects the user-supplied callback parameter directly into JavaScript response bodies on both success and error paths without validating that it is a legal JSONP callback name. This allows arbitrary JavaScript response generation instead of a restricted function call, making the documented JSONP revocation feature unsafe for browser-based JSONP consumption when attackers can influence callback.
Details
The issue is in oauthlib/oauth2/rfc6749/endpoints/revocation.py.
When enable_jsonp=True is passed to the RevocationEndpoint constructor, two code paths wrap the response body using the user-supplied request.callback parameter:
# Error response path (line 72-73):
if self.enable_jsonp and request.callback:
response_body = '{}({});'.format(request.callback, response_body)
# Success response path (line 81-82):
if self.enable_jsonp and request.callback:
response_body = request.callback + '();'
The request.callback value comes from HTTP request parameters, either the query string or POST body, via the Request class in oauthlib/common.py (lines 394-395), which merges query and body parameters into _params. Any value the client sends as callback is used verbatim.
There is no validation of any kind on the callback parameter:
- No check that it is a valid JavaScript identifier
- No whitelist of allowed characters
- No escaping or sanitization
A safe JSONP implementation must validate that the callback is a legal JavaScript function name (e.g., matching ^[a-zA-Z_$][a-zA-Z0-9_$.]*$). Without this, the attacker controls the JavaScript code returned in the response body. This is the standard mitigation used by jQuery, Express.js, Google APIs, and other major JSONP implementations.
How the injection works:
An attacker sends a revocation request with a crafted callback value:
POST /revoke HTTP/1.1
Content-Type: application/x-www-form-urlencoded
token=anything&callback=alert(document.cookie)//
The server responds with:
alert(document.cookie)//({"error": "invalid_client"});
This is syntactically valid JavaScript. alert(document.cookie) executes as a statement, and // comments out the rest of the line. The attacker has full control over the code that appears before the //.
Execution context and attack surface:
JSONP works by having a browser load a remote script via <script src="...">. The loaded script executes in the origin of the including page, not the remote server. This means a <script src="https://auth.example.com/revoke?token=x&callback=payload"> tag on evil.com would execute the payload in evil.com's context, not the auth server's context.
The impact comes from client-side integrations that consume this endpoint as trusted JSONP. If a legitimate OAuth client includes <script src> pointed at the revocation endpoint and an attacker can influence the callback value (e.g., via query parameter injection, a reflected value, or a man-in-the-middle downgrade), the attacker controls what code runs in the client application's origin. The authorization server becomes a source of attacker-controlled JavaScript that client applications trust and execute.
Note: the enable_jsonp parameter defaults to False, so only deployments that explicitly opt in are affected. However, this is a supported, documented library feature, not a debug flag. The client-side library includes prepare_token_revocation_request() with an explicit callback parameter (oauthlib/oauth2/rfc6749/parameters.py, line 174), and the documentation shows JSONP revocation as a use case (oauthlib/oauth2/rfc6749/clients/base.py, lines 351-358). The existing test suite tests JSONP callback reflection with a benign value (test_revocation_endpoint.py, lines 91-101) but does not test for injection. Deployments that enable JSONP typically do so to support older browsers or cross-origin revocation from…
- Record
GHSA-hj66-6f7g-4r5v- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Weakness
- CWE-79
- Updated
- 2026-11-02
NVD
6.1
OAuthLib is an implementation of the OAuth request-signing logic for Python 3.6+. From 0.6.1 until 4.0.0, OAuthLib's RevocationEndpoint in oauthlib/oauth2/rfc6749/endpoints/revocation.py reflects an unvalidated callback request parameter into success and error response bodies when enable_jsonp=True. The callback can come from the query string or request body and is used without restricting it to a legal JavaScript function name. A browser application that loads the revocation response as trusted JSONP and permits attacker influence over callback can therefore execute attacker-controlled JavaScript in the including application's origin, with access to its DOM and script-accessible data. The feature is disabled by default, so only deployments that explicitly enable JSONP are affected. This issue is fixed in version 4.0.0.
- Record
CVE-2026-49264- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Weakness
- CWE-79
- Updated
- 2026-11-02
OSV
6.1
OAuthLib: Unsafe JSONP callback injection in RevocationEndpoint allows arbitrary JavaScript response generation
OAuthLib is an implementation of the OAuth request-signing logic for Python 3.6+. From 0.6.1 until 4.0.0, OAuthLib's RevocationEndpoint in oauthlib/oauth2/rfc6749/endpoints/revocation.py reflects an unvalidated callback request parameter into success and error response bodies when enable_jsonp=True. The callback can come from the query string or request body and is used without restricting it to a legal JavaScript function name. A browser application that loads the revocation response as trusted JSONP and permits attacker influence over callback can therefore execute attacker-controlled JavaScript in the including application's origin, with access to its DOM and script-accessible data. The feature is disabled by default, so only deployments that explicitly enable JSONP are affected. This issue is fixed in version 4.0.0.
- Record
CVE-2026-49264- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Weakness
- CWE-79
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-49264
6.1
OAuthLib is an implementation of the OAuth request-signing logic for Python 3.6+. From 0.6.1 until 4.0.0, OAuthLib's RevocationEndpoint in oauthlib/oauth2/rfc6749/endpoints/revocation.py reflects an unvalidated callback request parameter into success and error response bodies when enable_jsonp=True. The callback can come from the query string or request body and is used without restricting it to a legal JavaScript function name. A browser application that loads the revocation response as trusted JSONP and permits attacker influence over callback can therefore execute attacker-controlled JavaScript in the including application's origin, with access to its DOM and script-accessible data. The feature is disabled by default, so only deployments that explicitly enable JSONP are affected. This issue is fixed in version 4.0.0.
- Record
DEBIAN-CVE-2026-49264- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Updated
- 2026-11-02
Show 15 moreShow less
OSVGHSA-hj66-6f7g-4r5v
6.1
Oauthlib : Unsafe JSONP callback injection in RevocationEndpoint allows arbitrary JavaScript response generation
Summary
When enable_jsonp=True, oauthlib's RevocationEndpoint reflects the user-supplied callback parameter directly into JavaScript response bodies on both success and error paths without validating that it is a legal JSONP callback name. This allows arbitrary JavaScript response generation instead of a restricted function call, making the documented JSONP revocation feature unsafe for browser-based JSONP consumption when attackers can influence callback.
Details
The issue is in oauthlib/oauth2/rfc6749/endpoints/revocation.py.
When enable_jsonp=True is passed to the RevocationEndpoint constructor, two code paths wrap the response body using the user-supplied request.callback parameter:
# Error response path (line 72-73):
if self.enable_jsonp and request.callback:
response_body = '{}({});'.format(request.callback, response_body)
# Success response path (line 81-82):
if self.enable_jsonp and request.callback:
response_body = request.callback + '();'
The request.callback value comes from HTTP request parameters, either the query string or POST body, via the Request class in oauthlib/common.py (lines 394-395), which merges query and body parameters into _params. Any value the client sends as callback is used verbatim.
There is no validation of any kind on the callback parameter:
- No check that it is a valid JavaScript identifier
- No whitelist of allowed characters
- No escaping or sanitization
A safe JSONP implementation must validate that the callback is a legal JavaScript function name (e.g., matching ^[a-zA-Z_$][a-zA-Z0-9_$.]*$). Without this, the attacker controls the JavaScript code returned in the response body. This is the standard mitigation used by jQuery, Express.js, Google APIs, and other major JSONP implementations.
How the injection works:
An attacker sends a revocation request with a crafted callback value:
POST /revoke HTTP/1.1
Content-Type: application/x-www-form-urlencoded
token=anything&callback=alert(document.cookie)//
The server responds with:
alert(document.cookie)//({"error": "invalid_client"});
This is syntactically valid JavaScript. alert(document.cookie) executes as a statement, and // comments out the rest of the line. The attacker has full control over the code that appears before the //.
Execution context and attack surface:
JSONP works by having a browser load a remote script via <script src="...">. The loaded script executes in the origin of the including page, not the remote server. This means a <script src="https://auth.example.com/revoke?token=x&callback=payload"> tag on evil.com would execute the payload in evil.com's context, not the auth server's context.
The impact comes from client-side integrations that consume this endpoint as trusted JSONP. If a legitimate OAuth client includes <script src> pointed at the revocation endpoint and an attacker can influence the callback value (e.g., via query parameter injection, a reflected value, or a man-in-the-middle downgrade), the attacker controls what code runs in the client application's origin. The authorization server becomes a source of attacker-controlled JavaScript that client applications trust and execute.
Note: the enable_jsonp parameter defaults to False, so only deployments that explicitly opt in are affected. However, this is a supported, documented library feature, not a debug flag. The client-side library includes prepare_token_revocation_request() with an explicit callback parameter (oauthlib/oauth2/rfc6749/parameters.py, line 174), and the documentation shows JSONP revocation as a use case (oauthlib/oauth2/rfc6749/clients/base.py, lines 351-358). The existing test suite tests JSONP callback reflection with a benign value (test_revocation_endpoint.py, lines 91-101) but does not test for injection. Deployments that enable JSONP typically do so to support older browsers or cross-origin revocation from…
- Record
GHSA-hj66-6f7g-4r5v- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Weakness
- CWE-79
- Updated
- 2026-11-02
OSVOESA-2026-4497
6.1
python-oauthlib security update
AuthLib is a framework which implements the logic of OAuth1 or OAuth2 without assuming a specific HTTP request object or web framework. Use it to graft OAuth client support onto your favorite HTTP library, or provide support onto your favourite web framework. If you're a maintainer of such a library, write a thin veneer on top of OAuthLib and get OAuth support for very little effort.
Security Fix(es):
OAuthLib is an implementation of the OAuth request-signing logic for Python 3.6+. From 0.6.1 until 4.0.0, OAuthLib's RevocationEndpoint in oauthlib/oauth2/rfc6749/endpoints/revocation.py reflects an unvalidated callback request parameter into success and error response bodies when enable_jsonp=True. The callback can come from the query string or request body and is used without restricting it to a legal JavaScript function name. A browser application that loads the revocation response as trusted JSONP and permits attacker influence over callback can therefore execute attacker-controlled JavaScript in the including application's origin, with access to its DOM and script-accessible data. The feature is disabled by default, so only deployments that explicitly enable JSONP are affected. This issue is fixed in version 4.0.0.(CVE-2026-49264)
- Record
OESA-2026-4497- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Updated
- 2026-11-02
OSVOESA-2026-4498
6.1
python-oauthlib security update
AuthLib is a framework which implements the logic of OAuth1 or OAuth2 without assuming a specific HTTP request object or web framework. Use it to graft OAuth client support onto your favorite HTTP library, or provide support onto your favourite web framework. If you're a maintainer of such a library, write a thin veneer on top of OAuthLib and get OAuth support for very little effort.
Security Fix(es):
OAuthLib is an implementation of the OAuth request-signing logic for Python 3.6+. From 0.6.1 until 4.0.0, OAuthLib's RevocationEndpoint in oauthlib/oauth2/rfc6749/endpoints/revocation.py reflects an unvalidated callback request parameter into success and error response bodies when enable_jsonp=True. The callback can come from the query string or request body and is used without restricting it to a legal JavaScript function name. A browser application that loads the revocation response as trusted JSONP and permits attacker influence over callback can therefore execute attacker-controlled JavaScript in the including application's origin, with access to its DOM and script-accessible data. The feature is disabled by default, so only deployments that explicitly enable JSONP are affected. This issue is fixed in version 4.0.0.(CVE-2026-49264)
- Record
OESA-2026-4498- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Updated
- 2026-11-02
OSVOESA-2026-4499
6.1
python-oauthlib security update
AuthLib is a framework which implements the logic of OAuth1 or OAuth2 without assuming a specific HTTP request object or web framework. Use it to graft OAuth client support onto your favorite HTTP library, or provide support onto your favourite web framework. If you're a maintainer of such a library, write a thin veneer on top of OAuthLib and get OAuth support for very little effort.
Security Fix(es):
OAuthLib is an implementation of the OAuth request-signing logic for Python 3.6+. From 0.6.1 until 4.0.0, OAuthLib's RevocationEndpoint in oauthlib/oauth2/rfc6749/endpoints/revocation.py reflects an unvalidated callback request parameter into success and error response bodies when enable_jsonp=True. The callback can come from the query string or request body and is used without restricting it to a legal JavaScript function name. A browser application that loads the revocation response as trusted JSONP and permits attacker influence over callback can therefore execute attacker-controlled JavaScript in the including application's origin, with access to its DOM and script-accessible data. The feature is disabled by default, so only deployments that explicitly enable JSONP are affected. This issue is fixed in version 4.0.0.(CVE-2026-49264)
- Record
OESA-2026-4499- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Updated
- 2026-11-02
OSVOESA-2026-4500
6.1
python-oauthlib security update
AuthLib is a framework which implements the logic of OAuth1 or OAuth2 without assuming a specific HTTP request object or web framework. Use it to graft OAuth client support onto your favorite HTTP library, or provide support onto your favourite web framework. If you're a maintainer of such a library, write a thin veneer on top of OAuthLib and get OAuth support for very little effort.
Security Fix(es):
OAuthLib is an implementation of the OAuth request-signing logic for Python 3.6+. From 0.6.1 until 4.0.0, OAuthLib's RevocationEndpoint in oauthlib/oauth2/rfc6749/endpoints/revocation.py reflects an unvalidated callback request parameter into success and error response bodies when enable_jsonp=True. The callback can come from the query string or request body and is used without restricting it to a legal JavaScript function name. A browser application that loads the revocation response as trusted JSONP and permits attacker influence over callback can therefore execute attacker-controlled JavaScript in the including application's origin, with access to its DOM and script-accessible data. The feature is disabled by default, so only deployments that explicitly enable JSONP are affected. This issue is fixed in version 4.0.0.(CVE-2026-49264)
- Record
OESA-2026-4500- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Updated
- 2026-11-02
OSVPYSEC-2026-4113
6.1
Oauthlib : Unsafe JSONP callback injection in RevocationEndpoint allows arbitrary JavaScript response generation
Summary
When enable_jsonp=True, oauthlib's RevocationEndpoint reflects the user-supplied callback parameter directly into JavaScript response bodies on both success and error paths without validating that it is a legal JSONP callback name. This allows arbitrary JavaScript response generation instead of a restricted function call, making the documented JSONP revocation feature unsafe for browser-based JSONP consumption when attackers can influence callback.
Details
The issue is in oauthlib/oauth2/rfc6749/endpoints/revocation.py.
When enable_jsonp=True is passed to the RevocationEndpoint constructor, two code paths wrap the response body using the user-supplied request.callback parameter:
# Error response path (line 72-73):
if self.enable_jsonp and request.callback:
response_body = '{}({});'.format(request.callback, response_body)
# Success response path (line 81-82):
if self.enable_jsonp and request.callback:
response_body = request.callback + '();'
The request.callback value comes from HTTP request parameters, either the query string or POST body, via the Request class in oauthlib/common.py (lines 394-395), which merges query and body parameters into _params. Any value the client sends as callback is used verbatim.
There is no validation of any kind on the callback parameter:
- No check that it is a valid JavaScript identifier
- No whitelist of allowed characters
- No escaping or sanitization
A safe JSONP implementation must validate that the callback is a legal JavaScript function name (e.g., matching ^[a-zA-Z_$][a-zA-Z0-9_$.]*$). Without this, the attacker controls the JavaScript code returned in the response body. This is the standard mitigation used by jQuery, Express.js, Google APIs, and other major JSONP implementations.
How the injection works:
An attacker sends a revocation request with a crafted callback value:
POST /revoke HTTP/1.1
Content-Type: application/x-www-form-urlencoded
token=anything&callback=alert(document.cookie)//
The server responds with:
alert(document.cookie)//({"error": "invalid_client"});
This is syntactically valid JavaScript. alert(document.cookie) executes as a statement, and // comments out the rest of the line. The attacker has full control over the code that appears before the //.
Execution context and attack surface:
JSONP works by having a browser load a remote script via <script src="...">. The loaded script executes in the origin of the including page, not the remote server. This means a <script src="https://auth.example.com/revoke?token=x&callback=payload"> tag on evil.com would execute the payload in evil.com's context, not the auth server's context.
The impact comes from client-side integrations that consume this endpoint as trusted JSONP. If a legitimate OAuth client includes <script src> pointed at the revocation endpoint and an attacker can influence the callback value (e.g., via query parameter injection, a reflected value, or a man-in-the-middle downgrade), the attacker controls what code runs in the client application's origin. The authorization server becomes a source of attacker-controlled JavaScript that client applications trust and execute.
Note: the enable_jsonp parameter defaults to False, so only deployments that explicitly opt in are affected. However, this is a supported, documented library feature, not a debug flag. The client-side library includes prepare_token_revocation_request() with an explicit callback parameter (oauthlib/oauth2/rfc6749/parameters.py, line 174), and the documentation shows JSONP revocation as a use case (oauthlib/oauth2/rfc6749/clients/base.py, lines 351-358). The existing test suite tests JSONP callback reflection with a benign value (test_revocation_endpoint.py, lines 91-101) but does not test for injection. Deployments that enable JSONP typically do so to support older browsers or cross-origin revocation from…
- Record
PYSEC-2026-4113- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-49264
6.1
OAuthLib is an implementation of the OAuth request-signing logic for Python 3.6+. From 0.6.1 until 4.0.0, OAuthLib's RevocationEndpoint in oauthlib/oauth2/rfc6749/endpoints/revocation.py reflects an unvalidated callback request parameter into success and error response bodies when enable_jsonp=True. The callback can come from the query string or request body and is used without restricting it to a legal JavaScript function name. A browser application that loads the revocation response as trusted JSONP and permits attacker influence over callback can therefore execute attacker-controlled JavaScript in the including application's origin, with access to its DOM and script-accessible data. The feature is disabled by default, so only deployments that explicitly enable JSONP are affected. This issue is fixed in version 4.0.0.
- Record
UBUNTU-CVE-2026-49264- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Updated
- 2026-11-02
OSVAZL-108042 No score
CVE-2026-49264 affecting package python-oauthlib for versions less than 3.2.2-4
OAuthLib is an implementation of the OAuth request-signing logic for Python 3.6+. From 0.6.1 until 4.0.0, OAuthLib's RevocationEndpoint in oauthlib/oauth2/rfc6749/endpoints/revocation.py reflects an unvalidated callback request parameter into success and error response bodies when enable_jsonp=True. The callback can come from the query string or request body and is used without restricting it to a legal JavaScript function name. A browser application that loads the revocation response as trusted JSONP and permits attacker influence over callback can therefore execute attacker-controlled JavaScript in the including application's origin, with access to its DOM and script-accessible data. The feature is disabled by default, so only deployments that explicitly enable JSONP are affected. This issue is fixed in version 4.0.0.
- Record
AZL-108042- Updated
- 2026-11-07
OSVopenSUSE-SU-2026:11973-1 No score
python313-oauthlib-4.0.0-1.1 on GA media
These are all security issues fixed in the python313-oauthlib-4.0.0-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:11973-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:22103-1 No score
Security update for python-oauthlib
This update for python-oauthlib fixes the following issues:
- CVE-2026-49264: Oauthlib : Unsafe JSONP callback injection in RevocationEndpoint allows arbitrary JavaScript response generation (bsc#1283526).
- CVE-2026-49265: Oauthlib: Timing Attack Vulnerability in PKCE code_verifier Comparison (bsc#1283527).
- Record
openSUSE-SU-2026:22103-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:24139-1 No score
Security update for python-oauthlib
This update for python-oauthlib fixes the following issues:
- CVE-2026-49264: Oauthlib : Unsafe JSONP callback injection in RevocationEndpoint allows arbitrary JavaScript response generation (bsc#1283526).
- CVE-2026-49265: Oauthlib: Timing Attack Vulnerability in PKCE code_verifier Comparison (bsc#1283527).
- Record
SUSE-SU-2026:24139-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:24189-1 No score
Security update for python-oauthlib
This update for python-oauthlib fixes the following issues:
- CVE-2026-49264: Oauthlib : Unsafe JSONP callback injection in RevocationEndpoint allows arbitrary JavaScript response generation (bsc#1283526).
- CVE-2026-49265: Oauthlib: Timing Attack Vulnerability in PKCE code_verifier Comparison (bsc#1283527).
- Record
SUSE-SU-2026:24189-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:24246-1 No score
Security update for python-oauthlib
This update for python-oauthlib fixes the following issues:
- CVE-2026-49264: Oauthlib : Unsafe JSONP callback injection in RevocationEndpoint allows arbitrary JavaScript response generation (bsc#1283526).
- CVE-2026-49265: Oauthlib: Timing Attack Vulnerability in PKCE code_verifier Comparison (bsc#1283527).
- Record
SUSE-SU-2026:24246-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:4807-1 No score
Security update for python-oauthlib
This update for python-oauthlib fixes the following issue:
- CVE-2026-49264: Oauthlib : Unsafe JSONP callback injection in RevocationEndpoint allows arbitrary JavaScript response generation (bsc#1283526).
- Record
SUSE-SU-2026:4807-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:4810-1 No score
Security update for python-oauthlib
This update for python-oauthlib fixes the following issues:
- CVE-2026-49264: Oauthlib : Unsafe JSONP callback injection in RevocationEndpoint allows arbitrary JavaScript response generation (bsc#1283526).
- CVE-2026-49265: Oauthlib: Timing Attack Vulnerability in PKCE code_verifier Comparison (bsc#1283527).
- Record
SUSE-SU-2026:4810-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
oauthlibPyPI |
0.6.1 to 3.3.1 | 4.0.0 |
python-oauthlibAzure Linux:3 |
before 3.2.2-4 | 3.2.2-4 |
python-oauthlibDebian:12 |
All versions, plus listed versions 3.2.2-13.2.2-23.2.2-33.2.2-43.3.1-13.3.1-2 |
None known |
python-oauthlibDebian:13 |
All versions, plus listed versions 3.2.2-33.2.2-43.3.1-13.3.1-2 |
None known |
python-oauthlibDebian:14 |
All versions, plus listed versions 3.2.2-33.2.2-43.3.1-13.3.1-2 |
None known |
oauthlibPyPI |
0.6.1 up to 4.0.0, plus listed versions 0.6.20.6.30.7.00.7.10.7.2 Show 26 moreShow less1.0.01.0.11.0.21.0.31.1.01.1.11.1.22.0.02.0.12.0.22.0.32.0.42.0.52.0.62.0.72.1.03.0.03.0.13.0.23.1.03.1.13.2.03.2.13.2.23.3.03.3.1 |
4.0.0 |
python-oauthlibopenEuler:24.03-LTS-SP1 |
before 3.2.2-3.oe2403sp1 | 3.2.2-3.oe2403sp1 |
python-oauthlibopenEuler:24.03-LTS-SP3 |
before 3.2.2-3.oe2403sp3 | 3.2.2-3.oe2403sp3 |
python-oauthlibopenEuler:24.03-LTS-SP4 |
before 3.2.2-3.oe2403sp4 | 3.2.2-3.oe2403sp4 |
python-oauthlibopenEuler:22.03-LTS-SP4 |
before 3.1.1-5.oe2203sp4 | 3.1.1-5.oe2203sp4 |
Show 17 moreShow less
| Package | Affected | Fixed |
|---|---|---|
python-oauthlibSUSE:Linux Micro 6.0 From an advisory covering 2 CVEs |
before 3.2.2-159998.1.1 | 3.2.2-159998.1.1 |
python-oauthlibSUSE:Linux Micro 6.2 From an advisory covering 2 CVEs |
before 3.2.2-160000.3.1 | 3.2.2-160000.3.1 |
python-oauthlibSUSE:Linux Enterprise Server 16.0 From an advisory covering 2 CVEs |
before 3.2.2-160000.3.1 | 3.2.2-160000.3.1 |
python-oauthlibSUSE:Linux Enterprise Server for SAP applications 16.0 From an advisory covering 2 CVEs |
before 3.2.2-160000.3.1 | 3.2.2-160000.3.1 |
python-oauthlibSUSE:Linux Enterprise Micro 5.5 |
before 2.0.6-150000.3.9.1 | 2.0.6-150000.3.9.1 |
python-oauthlibSUSE:Linux Enterprise Module for Basesystem 15 SP7 |
before 2.0.6-150000.3.9.1 | 2.0.6-150000.3.9.1 |
python-oauthlibSUSE:Linux Enterprise Module for Public Cloud 15 SP4 From an advisory covering 2 CVEs |
before 3.2.2-150400.12.10.1 | 3.2.2-150400.12.10.1 |
python-oauthlibSUSE:Linux Enterprise Module for Python 3 15 SP7 From an advisory covering 2 CVEs |
before 3.2.2-150400.12.10.1 | 3.2.2-150400.12.10.1 |
python-oauthlibUbuntu:16.04:LTS |
All versions, plus listed versions 1.0.0-11.0.3-1 |
None known |
python-oauthlibUbuntu:18.04:LTS |
All versions, plus listed versions 2.0.1-12.0.4-12.0.6-1 |
None known |
python-oauthlibUbuntu:20.04:LTS |
All versions, plus listed versions 2.1.0-13.1.0-1ubuntu13.1.0-1ubuntu2 |
None known |
python-oauthlibUbuntu:22.04:LTS |
All versions, plus listed versions 3.1.0-23.1.1-13.2.0-13.2.0-1ubuntu0.1 |
None known |
python-oauthlibUbuntu:24.04:LTS |
All versions, plus listed versions 3.2.2-1 |
None known |
python-oauthlibUbuntu:26.10 |
All versions, plus listed versions 3.3.1-1build13.3.1-2 |
None known |
python-oauthlibUbuntu:26.04:LTS |
All versions, plus listed versions 3.2.2-33.3.1-13.3.1-1build1 |
None known |
python-oauthlibopenSUSE:Tumbleweed |
before 4.0.0-1.1 | 4.0.0-1.1 |
python-oauthlibopenSUSE:Leap 16.0 From an advisory covering 2 CVEs |
before 3.2.2-160000.3.1 | 3.2.2-160000.3.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected | OSV | |
| affected | ||
| facts | OSV | |
| affected, aliases, references | ||
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-49264 is a medium vulnerability (CVSS 6.1) in Oauthlib, published September 29, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.23%, the 14th percentile. Fixed in oauthlib 4.0.0.
References
github.com/oauthlib/oauthlib/security/advisories/GHSA-hj66-6f7g-4r5v
github.com/oauthlib/oauthlib/pull/951
github.com/oauthlib/oauthlib/commit/c888359f3c42bec235b2c5caab2069c9ed62457c
github.com/oauthlib/oauthlib/releases/tag/v4.0.0
nvd.nist.gov/vuln/detail/CVE-2026-49264
github.com/pypa/advisory-database/tree/main/vulns/oauthlib/PYSEC-2026-4113.yaml
Show 20 moreShow less
github.com/advisories/GHSA-hj66-6f7g-4r5v
github.com/CVEProject/cvelistV5/tree/main/cves/2026/49xxx/CVE-2026-49264.json
security-tracker.debian.org/tracker/CVE-2026-49264
github.com/oauthlib/oauthlib
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2026-4497
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2026-4498
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2026-4499
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2026-4500
pypi.org/project/oauthlib
suse.com/support/update/announcement/2026/suse-su-202624139-1
bugzilla.suse.com/1283526
bugzilla.suse.com/1283527
suse.com/security/cve/CVE-2026-49264
suse.com/security/cve/CVE-2026-49265
suse.com/support/update/announcement/2026/suse-su-202624189-1
suse.com/support/update/announcement/2026/suse-su-202624246-1
suse.com/support/update/announcement/2026/suse-su-20264807-1
suse.com/support/update/announcement/2026/suse-su-20264810-1
ubuntu.com/security/CVE-2026-49264
cve.org/CVERecord?id=CVE-2026-49264
Left out here: the rest of 3 source descriptions. The JSON record has them.