CVE-2026-115450 Details
Description
External Control of Assumed-Immutable Web Parameter (CWE-472) in the cart and checkout flow of MarcosCamara01 Ecommerce Template allows an authenticated user with no special privileges to be charged the price of one product while placing an order for another, because POST /api/user/cart accepts variantId, which determines what the order records, and stripeId, which determines what Stripe charges, as two independent fields of the request body, stores both on the cart row, and no check requires the stripeId to be the one that belongs to the variantId. POST /api/stripe/payment builds the Stripe Checkout line items from the stored value, as { price: item.stripeId, quantity }, so the amount charged is the amount of that Stripe price. The checkout.session.completed webhook then creates the order products from the variantId of the same cart row, so the order records a product that was not paid for. Every stripeId in the catalogue is readable by any visitor, so no value has to be guessed. This results in orders for goods at the price of the cheapest item in the catalogue, repeatable without limit, and in order records whose amount does not correspond to the product they list.
A vulnerability allowing price manipulation during the checkout process has been identified in the MarcosCamara01 Ecommerce Template. This issue arises from the cart and checkout flow, where an authenticated user can be charged for one product while ordering another. The vulnerability exists because the 'POST /api/user/cart' endpoint accepts 'variantId' and 'stripeId' as independent fields. The 'stripeId' determines the amount charged via Stripe, while the 'variantId' is used to record the order. There is no validation to ensure that the 'stripeId' corresponds to the 'variantId', allowing users to exploit this discrepancy. The 'POST /api/stripe/payment' endpoint then creates Stripe Checkout line items based on the 'stripeId', leading to unauthorized charges. This vulnerability is further exacerbated by the fact that all 'stripeId's in the catalog are publicly accessible, enabling users to manipulate prices easily.
Users are advised to update to the latest version of the MarcosCamara01 Ecommerce Template, which includes a fix for this vulnerability by ensuring that the Stripe price is derived from the product variant, not from user-supplied data.
Metrics
CVSS 4.0 Severity and Vector Strings:
CVSS 3.x Severity and Vector Strings:
No data available for CVSS Version 2.0 on this CVE.
Volerion
Assessed Oct 22, 2026CISA-ADP
Assessed Oct 30, 2026References to Advisories, Solutions, and Tools
By selecting these links, you will be leaving this site. These are references gathered from the official CVE record and are not endorsed by Volerion.
| URL | Source(s) | Tag(s) |
|---|---|---|
| https://github.com/MarcosCamara01/ecommerce-template/commit/e6b364cd668f2ba875cfa7f6d55c63e771715df7 | Secur0 | Source CodeVendor |
| https://secur0.com/en/cna/cve-list/cve-2026-115450-price-manipulation-stripe-checkout | Secur0 | AdvisoryRemedy |
Weakness Enumeration
| CWE-ID | CWE Name | Source |
|---|---|---|
| CWE-472 | External Control of Assumed-Immutable Web Parameter | Secur0 |
Affected Products
| Product | Versions |
|---|---|
| MarcosCamara01 Ecommerce Template | >= 2aa8ec53, < e6b364cd |
CPE
Remediation
| |
Change History
3 change records found show changes
| Date | Action | Recorded By |
|---|---|---|
| Oct 30, 2026 | CVE Modified | CISA-ADP |
| Oct 26, 2026 | CVE Modified | Secur0 |
| Oct 22, 2026 | New CVE Received | Secur0 |
Volerion