GHSA-6j52-38f8-qhxr

Suggest an improvement
Source
https://github.com/advisories/GHSA-6j52-38f8-qhxr
Import Source
https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-6j52-38f8-qhxr/GHSA-6j52-38f8-qhxr.json
JSON Data
https://api.osv.dev/v1/vulns/GHSA-6j52-38f8-qhxr
Aliases
  • CVE-2026-63414
Published
2026-10-29T16:39:49Z
Modified
2026-10-29T16:45:05Z
Severity
  • 7.6 (High) CVSS_V4 - CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N CVSS Calculator
Summary
Shopify App: Token exchange shop context confusion may allow cross-shop authorization bypass in affected apps
Details

In token-exchange authenticated controllers, shopify_app exposes shop context through helpers such as current_shopify_domain. Prior to the fix, current_shopify_domain could resolve to the sanitized shop query parameter instead of the shop identity derived from the verified Shopify ID token or active Shopify session.

As a result, a request authenticated for one shop could include a different shop query parameter, causing application code to treat the requested shop as the current shop.

Applications that used current_shopify_domain, or the request shop parameter, for authorization decisions, tenant lookup, stored access-token selection, or shop-scoped data access may have been vulnerable to cross-shop context confusion.

The patched version hardens token-exchange handling so that:

  • current_shopify_domain resolves to the authenticated shop from the verified token or session.
  • authenticated_shopify_domain exposes the trusted authenticated shop.
  • requested_shopify_domain exposes the sanitized requested shop parameter for bootstrap or routing use cases only.
  • Token-exchange requests are rejected with 401 Unauthorized when the requested shop does not match the authenticated shop.

Impact

In affected applications, an attacker with a valid Shopify session token for one shop could send an authenticated request that also supplied a different shop query parameter. If the application relied on current_shopify_domain or params[:shop] for security-sensitive shop scoping, application code could operate in the context of the requested shop rather than the authenticated shop.

Affected applications are those that:

  1. Use shopify_app token-exchange authentication;
  2. Accept authenticated controller requests where a shop query parameter may be present; and
  3. Use current_shopify_domain or the request shop parameter for authorization, tenant lookup, stored access-token selection, or shop-scoped resource access.

Depending on the application’s authorization model, this could result in unauthorized access to another shop’s application data or unauthorized shop-scoped actions.

Remediation

Upgrade to shopify_app version 23.0.3

Workarounds

Applications that cannot upgrade immediately should apply equivalent validation in token-exchange authenticated controllers:

  • Do not use params[:shop] for authorization, tenant lookup, access-token selection, or data scoping.
  • On vulnerable versions, avoid relying on current_shopify_domain for security-sensitive shop scoping if a shop query parameter may be present.
  • Use the authenticated shop from the verified ID token or active Shopify session instead, such as current_shopify_session.shop or the verified JWT dest value.
    • If a sanitized params[:shop] value is present, reject the request with 401 Unauthorized when it does not match the authenticated shop.

Credit

This issue was responsibly reported by Hackerone researcher leqtuer.

Database specific
{
    "cwe_ids":  [
        "CWE-863"
    ],
    "github_reviewed":  true,
    "github_reviewed_at":  "2026-10-29T16:39:49Z",
    "nvd_published_at":  null,
    "severity":  "HIGH"
}
References

Affected packages

RubyGems / shopify_app

Package

Name
shopify_app
Purl
pkg:gem/shopify_app

Affected ranges

Type
ECOSYSTEM
Events
Introduced
22.1.0
Fixed
23.0.3

Affected versions

22.*
22.1.0
22.2.0
22.2.1
22.3.0
22.3.1
22.4.0
22.5.0
22.5.1
22.5.2
23.*
23.0.0
23.0.1
23.0.2

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-6j52-38f8-qhxr/GHSA-6j52-38f8-qhxr.json"