Every CVE Search/ Get API key

CVE-2026-54605

OAuth: Cross-origin token-request redirects can expose signed request metadata

7.2 HighFix available

OAuth is a Ruby wrapper for the OAuth 1.0 and 1.0a protocols, providing clients and servers. From 0.5.5 to 1.1.5, OAuth::Consumer#token_request parses the raw Location header of a 300 to 399 redirect returned by the OAuth server and follows the redirect recursively, which can mutate the consumer's configuration and expose signed OAuth request metadata, including the Authorization header, to a cross-origin host. This issue is fixed in version 1.1.6.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
Low
Privileges needed
None
User interaction
None

What an attacker can affect

Confidentiality
Low
Integrity
Low
Availability
None

Exploit likelihood

0.19%Up 0.1 points since Jul 29, 2026
90%50%10%1%

What each source reports

CVE List Score used 7.2

OAuth: Cross-origin token-request redirects can expose signed request metadata

OAuth is a Ruby wrapper for the OAuth 1.0 and 1.0a protocols, providing clients and servers. From 0.5.5 to 1.1.5, OAuth::Consumer#token_request parses the raw Location header of a 300 to 399 redirect returned by the OAuth server and follows the redirect recursively, which can mutate the consumer's configuration and expose signed OAuth request metadata, including the Authorization header, to a cross-origin host. This issue is fixed in version 1.1.6.

Record
CVE-2026-54605
CVSS 3.1
7.2 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N
Weakness
CWE-200, CWE-346, CWE-918
Updated
2026-11-02
EUVDEUVD-2026-49901 7.2

OAuth is a Ruby wrapper for the OAuth 1.0 and 1.0a protocols, providing clients and servers. From 0.5.5 to 1.1.5, OAuth::Consumer#token_request parses the raw Location header of a 300 to 399 redirect returned by the OAuth server and follows the redirect recursively, which can mutate the consumer's configuration and expose signed OAuth request metadata, including the Authorization header, to a cross-origin host. This issue is fixed in version 1.1.6.

Record
EUVD-2026-49901
CVSS 3.1
7.2 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N
Updated
2026-11-02
GitHub AdvisoriesGHSA-prq8-7wvh-44qh 7.2

OAuth: Cross-origin token-request redirects can expose signed request metadata

Cross-origin OAuth token-request redirects can expose signed request metadata

Summary

When an application uses OAuth::Consumer to request OAuth 1.0 request tokens or access tokens, the token request helper follows 300..399 redirects returned by the OAuth server. In affected versions, OAuth::Consumer#token_request parses the raw Location header, follows the redirect recursively, and can mutate the consumer's configured site when the redirect points to a different host with the same path.

The result is a cross-origin signed-request disclosure primitive: if an OAuth server token endpoint returns a redirect whose target an attacker controls, the client can re-sign the token request and send OAuth 1.0 request metadata, including the OAuth signature, nonce, timestamp, consumer key, and any request parameters included in the signature base string, to the attacker-controlled host. The same behavior can also be used as an SSRF or confused-deputy primitive because the application server follows the redirect and sends the next request from its own network position.

Affected

  • oauth v1.1.5 and prior versions back to and including v0.5.5.
  • The vulnerable behavior is in OAuth::Consumer#token_request, which is used by the documented request-token and access-token flows.
  • The issue is not specific to a Ruby engine or platform. It is caused by the gem's redirect handling and recursive token request behavior.

Patched version: oauth v1.1.6.

Impact

A consumer that calls OAuth::Consumer#get_request_token, OAuth::Consumer#get_access_token, or lower-level token request helpers against an OAuth server whose token endpoint redirect target can be influenced may lose three security properties:

  1. Cross-origin signed-request metadata disclosure. The redirected request is signed for the attacker-controlled endpoint. Depending on the request method, scheme, and parameters, the attacker may receive OAuth 1.0 parameters such as oauth_consumer_key, oauth_signature_method, oauth_timestamp, oauth_nonce, oauth_version, and oauth_signature.
  2. SSRF from the application server. The OAuth client follows the redirect on behalf of the application, so the redirected host is contacted from the application server's network position.
  3. Confused-deputy behavior. A malicious or compromised token endpoint can cause an otherwise trusted application to initiate signed requests to an unintended origin.

The disclosed OAuth 1 signature is not equivalent to an OAuth 2 bearer token: it is bound to the signed request, timestamp, nonce, HTTP method, and request URL. However, it can still disclose sensitive integration metadata, may be replayable within the receiver's accepted nonce/timestamp window in some deployments, and can expose application-server reachability to attacker-selected hosts.

Vulnerable code

lib/oauth/consumer.rb at tag v1.1.5:

def token_request(http_method, path, token = nil, request_options = {}, *arguments)
  request_options[:token_request] ||= true
  response = request(http_method, path, token, request_options, *arguments)
  case response.code.to_i

  when (200..299)
    # parse token response
  when (300..399)
    # Parse redirect to follow
    uri = URI.parse(response["location"])
    our_uri = URI.parse(site)

    # Guard against infinite redirects
    response.error! if uri.path == path && our_uri.host == uri.host

    if uri.path == path && our_uri.host != uri.host
      options[:site] = "#{uri.scheme}://#{uri.host}"
      @http = create_http
    end

    token_request(http_method, uri.path, token, request_options, arguments)
  when (400..499)
   …
Record
GHSA-prq8-7wvh-44qh
CVSS 3.1
7.2 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N
Weakness
CWE-200, CWE-346, CWE-918
Updated
2026-11-02
NVD 7.2

OAuth is a Ruby wrapper for the OAuth 1.0 and 1.0a protocols, providing clients and servers. From 0.5.5 to 1.1.5, OAuth::Consumer#token_request parses the raw Location header of a 300 to 399 redirect returned by the OAuth server and follows the redirect recursively, which can mutate the consumer's configuration and expose signed OAuth request metadata, including the Authorization header, to a cross-origin host. This issue is fixed in version 1.1.6.

Record
CVE-2026-54605
CVSS 3.1
7.2 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N
Weakness
CWE-200, CWE-346, CWE-918
Updated
2026-11-02
OSV 7.2

OAuth: Cross-origin token-request redirects can expose signed request metadata

OAuth is a Ruby wrapper for the OAuth 1.0 and 1.0a protocols, providing clients and servers. From 0.5.5 to 1.1.5, OAuth::Consumer#token_request parses the raw Location header of a 300 to 399 redirect returned by the OAuth server and follows the redirect recursively, which can mutate the consumer's configuration and expose signed OAuth request metadata, including the Authorization header, to a cross-origin host. This issue is fixed in version 1.1.6.

Record
CVE-2026-54605
CVSS 3.1
7.2 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N
Weakness
CWE-200, CWE-346, CWE-918
Updated
2026-11-02
OSVGHSA-prq8-7wvh-44qh 7.2

OAuth: Cross-origin token-request redirects can expose signed request metadata

Cross-origin OAuth token-request redirects can expose signed request metadata

Summary

When an application uses OAuth::Consumer to request OAuth 1.0 request tokens or access tokens, the token request helper follows 300..399 redirects returned by the OAuth server. In affected versions, OAuth::Consumer#token_request parses the raw Location header, follows the redirect recursively, and can mutate the consumer's configured site when the redirect points to a different host with the same path.

The result is a cross-origin signed-request disclosure primitive: if an OAuth server token endpoint returns a redirect whose target an attacker controls, the client can re-sign the token request and send OAuth 1.0 request metadata, including the OAuth signature, nonce, timestamp, consumer key, and any request parameters included in the signature base string, to the attacker-controlled host. The same behavior can also be used as an SSRF or confused-deputy primitive because the application server follows the redirect and sends the next request from its own network position.

Affected

  • oauth v1.1.5 and prior versions back to and including v0.5.5.
  • The vulnerable behavior is in OAuth::Consumer#token_request, which is used by the documented request-token and access-token flows.
  • The issue is not specific to a Ruby engine or platform. It is caused by the gem's redirect handling and recursive token request behavior.

Patched version: oauth v1.1.6.

Impact

A consumer that calls OAuth::Consumer#get_request_token, OAuth::Consumer#get_access_token, or lower-level token request helpers against an OAuth server whose token endpoint redirect target can be influenced may lose three security properties:

  1. Cross-origin signed-request metadata disclosure. The redirected request is signed for the attacker-controlled endpoint. Depending on the request method, scheme, and parameters, the attacker may receive OAuth 1.0 parameters such as oauth_consumer_key, oauth_signature_method, oauth_timestamp, oauth_nonce, oauth_version, and oauth_signature.
  2. SSRF from the application server. The OAuth client follows the redirect on behalf of the application, so the redirected host is contacted from the application server's network position.
  3. Confused-deputy behavior. A malicious or compromised token endpoint can cause an otherwise trusted application to initiate signed requests to an unintended origin.

The disclosed OAuth 1 signature is not equivalent to an OAuth 2 bearer token: it is bound to the signed request, timestamp, nonce, HTTP method, and request URL. However, it can still disclose sensitive integration metadata, may be replayable within the receiver's accepted nonce/timestamp window in some deployments, and can expose application-server reachability to attacker-selected hosts.

Vulnerable code

lib/oauth/consumer.rb at tag v1.1.5:

def token_request(http_method, path, token = nil, request_options = {}, *arguments)
  request_options[:token_request] ||= true
  response = request(http_method, path, token, request_options, *arguments)
  case response.code.to_i

  when (200..299)
    # parse token response
  when (300..399)
    # Parse redirect to follow
    uri = URI.parse(response["location"])
    our_uri = URI.parse(site)

    # Guard against infinite redirects
    response.error! if uri.path == path && our_uri.host == uri.host

    if uri.path == path && our_uri.host != uri.host
      options[:site] = "#{uri.scheme}://#{uri.host}"
      @http = create_http
    end

    token_request(http_method, uri.path, token, request_options, arguments)
  when (400..499)
   …
Record
GHSA-prq8-7wvh-44qh
CVSS 3.1
7.2 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N
Weakness
CWE-200, CWE-346, CWE-918
Updated
2026-11-02
OSVUBUNTU-CVE-2026-54605 7.2

OAuth is a Ruby wrapper for the OAuth 1.0 and 1.0a protocols, providing clients and servers. From 0.5.5 to 1.1.5, OAuth::Consumer#token_request parses the raw Location header of a 300 to 399 redirect returned by the OAuth server and follows the redirect recursively, which can mutate the consumer's configuration and expose signed OAuth request metadata, including the Authorization header, to a cross-origin host. This issue is fixed in version 1.1.6.

Record
UBUNTU-CVE-2026-54605
CVSS 3.1
7.2 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
oauth
RubyGems
0.5.5 to 1.1.5
1.1.6
oauth
RubyGems
0.5.5 up to 1.1.6, plus listed versions
0.5.100.5.110.5.120.5.130.5.14
Show 16 moreShow less
0.5.60.5.70.5.7.pre.pre10.5.80.5.90.6.00.6.10.6.21.0.01.0.11.1.01.1.11.1.21.1.31.1.41.1.5
1.1.6
ruby-oauth
Ubuntu:16.04:LTS
All versions, plus listed versions
0.4.7-3
None known
ruby-oauth
Ubuntu:18.04:LTS
All versions, plus listed versions
0.5.3-1
None known
ruby-oauth
Ubuntu:20.04:LTS
All versions, plus listed versions
0.5.4-1
None known
ruby-oauth
Ubuntu:22.04:LTS
All versions, plus listed versions
0.5.4-1.1
None known
ruby-oauth
Ubuntu:24.04:LTS
All versions, plus listed versions
0.5.4-1.1
None known
ruby-oauth
Ubuntu:26.10
All versions, plus listed versions
0.5.4-1.11.1.7-11.1.8-1
None known
ruby-oauth
Ubuntu:26.04:LTS
All versions, plus listed versions
0.5.4-1.1
None known

History

History
RecordedChangedSources
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-54605 is a high vulnerability (CVSS 7.2) in Cordea Oauth, published July 28, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.19%, the 8th percentile. Fixed in oauth 1.1.6.

References

This page doesn't list everything

Left out here: the rest of 2 source descriptions. The JSON record has them.

MoveEnter Open