Skip to content

Commit 03925c8

Browse files
jasnowRubySec CI
authored andcommitted
Updated advisory posts against rubysec/ruby-advisory-db@9be358e
1 parent 7a90d9a commit 03925c8

File tree

3 files changed

+197
-0
lines changed

3 files changed

+197
-0
lines changed
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
---
2+
layout: advisory
3+
title: 'CVE-2026-25757 (spree_storefront): Unauthenticated Spree Commerce users can
4+
view completed guest orders by Order ID'
5+
comments: false
6+
categories:
7+
- spree_storefront
8+
advisory:
9+
gem: spree_storefront
10+
cve: 2026-25757
11+
ghsa: p6pv-q7rc-g4h9
12+
url: https://github.com/spree/spree/security/advisories/GHSA-p6pv-q7rc-g4h9
13+
title: Unauthenticated Spree Commerce users can view completed guest orders by Order
14+
ID
15+
date: 2026-02-05
16+
description: |
17+
### Unauthenticated users can view completed guest orders by Order ID (`GHSL-2026-029`)
18+
19+
The `OrdersController#show` action permits viewing completed
20+
guest orders by order number alone, without requiring the
21+
associated order token.
22+
23+
Order lookup without enforcing token requirement in
24+
[`OrdersController#show`](https://github.com/spree/spree/blob/1341623f2ae92685cdbe232885bf5808fc8f9ca8/storefront/app/controllers/spree/orders_controller.rb#L14):
25+
26+
```ruby
27+
@order = complete_order_finder.new(number: params[:id],
28+
token: params[:token], store: current_store).execute.first
29+
```
30+
31+
Authorization bypass for guest orders in [`authorize_access`](https://github.com/spree/spree/blob/1341623f2ae92685cdbe232885bf5808fc8f9ca8/storefront/app/controllers/spree/orders_controller.rb#L51C1-L55C8):
32+
33+
```ruby
34+
def authorize_access
35+
return true if @order.user_id.nil?
36+
37+
@order.user == try_spree_current_user
38+
end
39+
```
40+
41+
If the attacker is in possession of a leaked Order ID, they might
42+
look it up directly via this API.
43+
Alternatively, brute forcing all or parts of the possible Order IDs
44+
might be feasible for an attacker. (The Order IDs themselves are
45+
[securely generated](https://github.com/spree/spree/blob/a878eb4a782ce0445d218ea86fb12075b0e3d7cc/core/lib/spree/core/number_generator.rb#L45),
46+
but with relatively low entropy: by default an order ID has a length
47+
of 9 and a base of 10, that would require an attacker to perform
48+
1 billion requests to gather all guest orders. (At an assumed
49+
constant rate of 100 requests per second it would take 115 days.)
50+
51+
#### Impact
52+
53+
This issue may lead to disclosure of PII of guest users
54+
(including names, addresses and phone numbers).
55+
56+
#### CWEs
57+
58+
- CWE-639: Authorization Bypass Through User-Controlled Key
59+
60+
### Credit
61+
62+
This issue was discovered with the [GitHub Security Lab Taskflow Agent](https://github.com/GitHubSecurityLab/seclab-taskflow-agent)
63+
and manually verified by GHSL team members
64+
[@p- (Peter Stöckli)](https://github.com/p-) and
65+
[@m-y-mo (Man Yue Mo)](https://github.com/m-y-mo).
66+
67+
### Disclosure Policy
68+
69+
This report is subject to a 90-day disclosure deadline, as
70+
described in more detail in our [coordinated disclosure policy](https://securitylab.github.com/advisories#policy).
71+
cvss_v4: 7.7
72+
patched_versions:
73+
- "~> 5.0.8"
74+
- "~> 5.1.10"
75+
- "~> 5.2.7"
76+
- ">= 5.3.2"
77+
related:
78+
url:
79+
- https://nvd.nist.gov/vuln/detail/CVE-2026-25757
80+
- https://github.com/spree/spree/security/advisories/GHSA-p6pv-q7rc-g4h9
81+
- https://github.com/spree/spree/commit/3e00be64c128ef4bd4b99731f0c3ab469509cfab
82+
- https://github.com/spree/spree/commit/6b32ed7d474aa55fa441990e6aa39740152aa1be
83+
- https://github.com/spree/spree/commit/6f6b8a7a28a8bff24a6e20eab04b4bbbdf39384d
84+
- https://github.com/spree/spree/commit/ea4a5db590ca753dbc986f2a4e818d9e0edfb1ad
85+
- https://github.com/spree/spree/blob/1341623f2ae92685cdbe232885bf5808fc8f9ca8/storefront/app/controllers/spree/orders_controller.rb#L14
86+
- https://github.com/spree/spree/blob/1341623f2ae92685cdbe232885bf5808fc8f9ca8/storefront/app/controllers/spree/orders_controller.rb#L51C1-L55C8
87+
- https://github.com/spree/spree/blob/a878eb4a782ce0445d218ea86fb12075b0e3d7cc/core/lib/spree/core/number_generator.rb#L45
88+
- https://advisories.gitlab.com/pkg/gem/spree_storefront/CVE-2026-25757
89+
- https://github.com/advisories/GHSA-p6pv-q7rc-g4h9
90+
---
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
---
2+
layout: advisory
3+
title: 'CVE-2026-25758 (spree_api): Unauthenticated Spree Commerce users can access
4+
all guest addresses'
5+
comments: false
6+
categories:
7+
- spree_api
8+
advisory:
9+
gem: spree_api
10+
cve: 2026-25758
11+
ghsa: 87fh-rc96-6fr6
12+
url: https://github.com/spree/spree/security/advisories/GHSA-87fh-rc96-6fr6
13+
title: Unauthenticated Spree Commerce users can access all guest addresses
14+
date: 2026-02-05
15+
description: |
16+
### Summary
17+
18+
A critical IDOR vulnerability exists in Spree Commerce's guest
19+
checkout flow that allows any guest user to bind arbitrary guest
20+
addresses to their order by manipulating address ID parameters.
21+
This enables unauthorized access to other guests' personally
22+
identifiable information (PII) including names, addresses and
23+
phone numbers. The vulnerability bypasses existing ownership
24+
validation checks and affects all guest checkout transactions.
25+
26+
### Impact
27+
28+
This issue may lead to disclosure of PII of guest users
29+
(including names, addresses and phone numbers).
30+
31+
### Unauthenticated users can access all guest addresses (`GHSL-2026-027`)
32+
33+
The vulnerability stems from incomplete authorization validation
34+
in Spree's checkout address assignment logic. While nested address
35+
attributes (`bill_address_attributes[id]` and
36+
`ship_address_attributes[id]`) are properly validated through
37+
`validate_address_ownership`, plain ID parameters (`bill_address_id`
38+
and `ship_address_id`) bypass this check entirely. Since Spree's
39+
address IDs are sequential numbers, an attacker might get all
40+
guest addresses by simply enumerating over them.
41+
42+
### Affected Code Components
43+
44+
1. **Permitted Attributes** ([`core/lib/spree/permitted_attributes.rb:92–96`](https://github.com/spree/spree/blob/1341623f2ae92685cdbe232885bf5808fc8f9ca8/core/lib/spree/permitted_attributes.rb#L92-L96))
45+
- Allows `bill_address_id` and `ship_address_id` as permitted
46+
parameters without validation
47+
48+
2. **Checkout Update** ([`core/app/models/spree/order/checkout.rb:241–254`](https://github.com/spree/spree/blob/1341623f2ae92685cdbe232885bf5808fc8f9ca8/core/app/models/spree/order/checkout.rb#L241-L254))
49+
- Applies permitted parameters directly to the Order model
50+
via `update_from_params`
51+
52+
3. **Incomplete Ownership Validation** ([`core/app/services/spree/checkout/update.rb:33–48`](https://github.com/spree/spree/blob/1341623f2ae92685cdbe232885bf5808fc8f9ca8/core/app/services/spree/checkout/update.rb#L33-L48))
53+
- `validate_address_ownership` only validates nested attributes structure
54+
- Does NOT validate plain `bill_address_id`/`ship_address_id` fields
55+
56+
4. **Vulnerable Assignment Logic** ([`core/app/models/spree/order/address_book.rb:16–23, 31–38`](https://github.com/spree/spree/blob/1341623f2ae92685cdbe232885bf5808fc8f9ca8/core/app/models/spree/order/address_book.rb#L16-L38))
57+
* [`bill_address_id=` setter](https://github.com/spree/spree/blob/1341623f2ae92685cdbe232885bf5808fc8f9ca8/core/app/models/spree/order/address_book.rb#L16-L24)
58+
* [`ship_address_id=` setter](https://github.com/spree/spree/blob/1341623f2ae92685cdbe232885bf5808fc8f9ca8/core/app/models/spree/order/address_book.rb#L31-L39)
59+
60+
Both setters check that: `address.user_id == order.user_id`. For
61+
guest orders: nil == nil → TRUE ✓ (bypass!)
62+
63+
#### Impact
64+
65+
This issue may lead to disclosure of PII of guest users
66+
(including names, addresses and phone numbers).
67+
68+
#### CWEs
69+
70+
- CWE-639: Authorization Bypass Through User-Controlled Key
71+
- CWE-284: Improper Access Control
72+
73+
### Credit
74+
75+
This issue was discovered with the [GitHub Security Lab Taskflow Agent](https://github.com/GitHubSecurityLab/seclab-taskflow-agent)
76+
and manually verified by GHSL team members
77+
[@p- (Peter Stöckli)](https://github.com/p-) and
78+
[@m-y-mo (Man Yue Mo)](https://github.com/m-y-mo).
79+
80+
### Disclosure Policy
81+
82+
This report is subject to a 90-day disclosure deadline, as
83+
described in more detail in our [coordinated disclosure policy](https://securitylab.github.com/advisories#policy).
84+
cvss_v4: 7.7
85+
patched_versions:
86+
- "~> 4.10.3"
87+
- "~> 5.0.8"
88+
- "~> 5.1.10"
89+
- "~> 5.2.7"
90+
- ">= 5.3.2"
91+
related:
92+
url:
93+
- https://nvd.nist.gov/vuln/detail/CVE-2026-25758
94+
- https://github.com/spree/spree/security/advisories/GHSA-87fh-rc96-6fr6
95+
- https://github.com/spree/spree/commit/15619618e43b367617ec8d2d4aafc5e54fa7b734
96+
- https://github.com/spree/spree/commit/29282d1565ba4f7bc2bbc47d550e2c0c6d0ae59f
97+
- https://github.com/spree/spree/commit/6650f96356faa0d16c05bcb516f1ffd5641741b8
98+
- https://github.com/spree/spree/commit/902d301ac83fd2047db1b9a3a99545162860f748
99+
- https://github.com/spree/spree/commit/ff7cfcfcfe0c40c60d03317e1d0ee361c6a6b054
100+
- https://github.com/spree/spree/blob/1341623f2ae92685cdbe232885bf5808fc8f9ca8/core/app/models/spree/order/address_book.rb#L16-L38
101+
- https://github.com/spree/spree/blob/1341623f2ae92685cdbe232885bf5808fc8f9ca8/core/app/models/spree/order/checkout.rb#L241-L254
102+
- https://github.com/spree/spree/blob/1341623f2ae92685cdbe232885bf5808fc8f9ca8/core/app/services/spree/checkout/update.rb#L33-L48
103+
- https://github.com/spree/spree/blob/1341623f2ae92685cdbe232885bf5808fc8f9ca8/core/lib/spree/permitted_attributes.rb#L92-L96
104+
- https://advisories.gitlab.com/pkg/gem/spree_api/CVE-2026-25758
105+
- https://github.com/advisories/GHSA-87fh-rc96-6fr6
106+
---

advisories/_posts/2026-02-06-GHSA-w67g-2h6v-vjgq.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,5 +67,6 @@ advisory:
6767
- https://github.com/yippee-fun/phlex/commit/74e3d8610ffabc2cf5f241945e9df4b14dceb97d
6868
- https://github.com/yippee-fun/phlex/commit/9f56ad13bea9a7d6117fdfd510446c890709eeac
6969
- https://github.com/yippee-fun/phlex/commit/fe9ea708672f9fa42526d9b47e1cdc4634860ef1
70+
- https://advisories.gitlab.com/pkg/gem/phlex/GHSA-w67g-2h6v-vjgq
7071
- https://github.com/advisories/GHSA-w67g-2h6v-vjgq
7172
---

0 commit comments

Comments
 (0)