Loading...
Skip to main content

CVE-2026-25757 — Vulnerability in spree_storefront — CVE Details

HIGH

Unauthenticated Spree Commerce users can view completed guest orders by Order ID

Published February 5, 2026Updated February 13, 2026Source: osv

Summary

### Unauthenticated users can view completed guest orders by Order ID (`GHSL-2026-029`) The `OrdersController#show` action permits viewing completed guest orders by order number alone, without requiring the associated order token. Order lookup without enforcing token requirement in [`OrdersController#show`](https://github.com/spree/spree/blob/1341623f2ae92685cdbe232885bf5808fc8f9ca8/storefront/app/controllers/spree/orders_controller.rb#L14): ```ruby @order = complete_order_finder.new(number: params[:id], token: params[:token], store: current_store).execute.first ``` Authorization bypass for guest orders in [`authorize_access`](https://github.com/spree/spree/blob/1341623f2ae92685cdbe232885bf5808fc8f9ca8/storefront/app/controllers/spree/orders_controller.rb#L51C1-L55C8): ```ruby def authorize_access return true if @order.user_id.nil? @order.user == try_spree_current_user end ``` If the attacker is in possession of a leaked Order ID, they might look it up directly via this API. Alternatively, brute forcing all or parts of the possible Order IDs might be feasible for an attacker. (The Order IDs themselves are [securely generated](https://github.com/spree/spree/blob/a878eb4a782ce0445d218ea86fb12075b0e3d7cc/core/lib/spree/core/number_generator.rb#L45), but with relatively low entropy: by default an order ID has a length of 9 and a base of 10, that would require an attacker to perform 1 billion requests to gather all guest orders. (At an assumed constant rate of 100 requests per second it would take 115 days.) #### Proof of Concept 1. As a guest create a complete order. 2. Fetch the latest Order ID from the database (Table: `spree_orders`). 3. In another clean browser access following URL: `<SPREE-HOST>/orders/<ORDER-ID>`. (Sample: `http://localhost:3000/orders/R496592563`) => Full guest order details are disclosed including names, addresses and limited payment info. #### Impact This issue may lead to disclosure of PII of guest users (including names, addresses and phone numbers). #### CWEs - CWE-639: Authorization Bypass Through User-Controlled Key ### Credit This issue was discovered with the [GitHub Security Lab Taskflow Agent](https://github.com/GitHubSecurityLab/seclab-taskflow-agent) and manually verified by GHSL team members [@p- (Peter Stöckli)](https://github.com/p-) and [@m-y-mo (Man Yue Mo)](https://github.com/m-y-mo). ### Disclosure Policy This report is subject to a 90-day disclosure deadline, as described in more detail in our [coordinated disclosure policy](https://securitylab.github.com/advisories#policy).

Advisory Timeline

  • First published February 5, 2026 (249 days ago).
  • Last revised February 13, 2026 — 8 days after initial publication.

Remediation

Upgrade to the fixed version using your package manager.

Bundler
Update spree_storefront to 5.0.8 or later
gem install spree_storefront -v 5.0.8
Bundler
Update spree_storefront to 5.1.10 or later
gem install spree_storefront -v 5.1.10
Bundler
Update spree_storefront to 5.2.7 or later
gem install spree_storefront -v 5.2.7
Bundler
Update spree_storefront to 5.3.2 or later
gem install spree_storefront -v 5.3.2

After upgrading, run your dependency scanner again to confirm the vulnerability is resolved.

Affected Packages (4)

Affects 1 ecosystem: rubygems (1).

PackageEcosystemAffectedFixed In
spree_storefront
rubygems
5.0.0, 5.0.0.rc1, 5.0.1, 5.0.2 (+5 more)5.0.8
spree_storefront
rubygems
5.1.0, 5.1.1, 5.1.2, 5.1.3 (+6 more)5.1.10
spree_storefront
rubygems
5.2.0, 5.2.1, 5.2.2, 5.2.3 (+3 more)5.2.7
spree_storefront
rubygems
5.3.0, 5.3.15.3.2

Vulnerability Classification

Common Weakness Enumeration (CWE) identifiers for this vulnerability type.

  • CWE-639
    Insecure Direct Object Reference (IDOR)MITRE

CVSS Score Breakdown

What the CVSS (Common Vulnerability Scoring System) 7.5 score means for each attack dimension.

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
—
Confidentiality
—
Integrity
—
Availability
—

CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:P

Frequently Asked Questions

What is CVE-2026-25757?
Unauthenticated Spree Commerce users can view completed guest orders by Order ID This vulnerability has been assigned a severity rating of HIGH (CVSS score: 7.5/10).
How do I check if my project is affected by CVE-2026-25757?
CVE-2026-25757 affects spree_storefront. Use GeekWala's free vulnerability scanner to check your dependencies against CVE-2026-25757 and 200,000+ other known vulnerabilities.

Severity & Exploitability

CVSS Score
7.5

High exploitability or significant impact. Prioritize remediation within days.

Also Known As

GHSA-p6pv-q7rc-g4h9

Related CVEs

  • CVE-2026-94462
    HIGH

    Spree: Broken Access Control in `PATCH /api/v3/store/carts/:id/associate` (IDOR)

  • CVE-2026-77601
    HIGH

    OpenC3 COSMOS: Authenticated OS command injection via the `pypi_url` setting

Check if you're affected

Scan your dependencies to see if this vulnerability affects your projects.

Scan Your Dependencies