Skip to main content

MarcosCamara01 Ecommerce Template EUVDEUVD-2026-108212

| CVE-2026-115450 HIGH
External Control of Assumed-Immutable Web Parameter (CWE-472)
2026-10-22 Secur0 GHSA-5222-hwj8-q4fh
7.1
CVSS 4.0 · Vendor: Secur0
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate as ordinary user
  2. Delivery
    Read cheap item's public stripeId
  3. Exploit
    POST cart pairing expensive variantId with cheap stripeId
  4. Execution
    Complete Stripe checkout at cheap price
  5. Impact
    Webhook records expensive product unpaid-for

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V3 - Web Frontend Security Server-side parameter enforcement
Exploitation Conditions

Requires only a standard authenticated user account with no special privileges (PR:L) against a default deployment of MarcosCamara01 Ecommerce Template - no non-default configuration or feature toggle is needed. The attacker POSTs to /api/user/cart supplying variantId and stripeId as independent fields; because every stripeId in the catalogue is readable by any visitor, no secret value must be guessed. The only limiting factors are the need for a valid logged-in session and reachability of the cart/checkout API; there is no user-interaction requirement, no admin access, and no version- or platform-specific precondition stated in the evidence.

Impact

Severity signals point to a moderate, integrity-only flaw: the supplied CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N) scores 7.1 with VI:H but VC:N and VA:N, i.e. no data exposure and no availability loss - the damage is fraudulent, mismatched orders and under-charging of the merchant. No EPSS score and no CISA KEV entry are present in the input, so widespread-exploitation probability cannot be quantified from the data; the only priority signal is the vuln.today 'this_week' decision label, which is consistent with easy, authenticated, network-reachable exploitation rather than an emergency. Exploitability is genuinely high in context: AC:L/PR:L with every required stripeId publicly readable means any registered user can abuse it reliably and repeatably with no guessing. The tempering factor is real-world footprint - this is an individual-authored open-source ecommerce template, so even though the bug is trivially exploitable and directly monetizable, the number of exposed production deployments is likely small. Net: a real, must-fix priority for anyone actually running this template (direct financial fraud), but not a mass-exploitation internet-wide event given the narrow product base. Missing data to flag: no EPSS, no KEV, and no vendor-confirmed public exploit-code artifact.

Exploit ScenarioDerived

An authenticated shopper reads the publicly visible Stripe price ID of the cheapest catalogue item, then calls POST /api/user/cart adding an expensive variantId while supplying the cheap item's stripeId. Stripe charges the cheap price, but the checkout.session.completed webhook records the order against the expensive variantId, so the attacker obtains expensive goods for the cheapest price, repeatable without limit. A private PoC (REPORT-1627) is mirrored in the vendor's added regression test; no verified public working exploit code is published in the input.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 22, 2026

Price substitution in the MarcosCamara01 Ecommerce Template cart and checkout flow lets any authenticated customer pay a cheap Stripe price while ordering a more expensive variant, producing paid orders and order records that do not match. The flaw exists because /api/user/cart stores client-supplied variantId and stripeId independently, and /api/stripe/payment charges the stored stripeId while the checkout.session.completed webhook records the variantId. The vendor commit e6b364cd668f2ba875cfa7f6d55c63e771715df7 removes stripeId from client input and resolves pricing server-side; a public PoC reference exists in the vendor regression test and is not verified as working exploit code, and no CISA KEV active exploitation is reported in the supplied data.

RemediationAI

Apply the vendor fix in commit e6b364cd668f2ba875cfa7f6d55c63e771715df7 or a release containing it; the patch removes stripeId from addToCartSchema and client payloads, resolves the Stripe price server-side from the variant via findVariantById and findByUserIdWithDetails, and builds Stripe line items with buildLineItems from the authoritative variant stripeId. Until upgraded, ignore or strip any client-supplied stripeId at /api/user/cart and derive the Stripe price server-side from variantId, because the supplied evidence shows the payment route otherwise charges the stored client-controlled stripeId. If immediate patching is not possible, restricting or disabling the cart and checkout API endpoints would reduce exposure but has the trade-off of blocking legitimate purchases. The patch reference is https://github.com/MarcosCamara01/ecommerce-template/commit/e6b364cd668f2ba875cfa7f6d55c63e771715df7, the CNA reference is https://secur0.com/en/cna/cve-list/cve-2026-115450-price-manipulation-stripe-checkout, and the supplied priority label is this_week.

Affected VersionsENISA

Ecommerce Template 2aa8ec539b6b441632096ced78e099fb096a57da <e6b364cd668f2ba875cfa7f6d55c63e771715df7

Affects your stack

Find out whether the stacks and servers you run are on an affected version.

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The affected code is a Next.js App Router e-commerce template using Drizzle ORM repositories and Stripe Checkout. CWE-472 applies because stripeId is treated as an assumed-immutable value but is accepted from the client in the add-to-cart request alongside variantId; the cart row stores both values, the payment route builds Stripe line items from item.stripeId, and the checkout.session.completed webhook creates order products from variantId. Catalogue stripe IDs are readable by any visitor, so an authenticated user can pair an expensive variantId with a cheap stripeId without guessing a secret. The vendor patch adds buildLineItems and findByUserIdWithDetails, removes stripeId from addToCartSchema and client components/hooks, and adds findVariantById so the server resolves the variant's authoritative stripe_id. The trigger described in the supplied evidence is a crafted POST to /api/user/cart with mismatched variantId and stripeId; no race, memory-corruption condition, or non-default configuration requirement is stated.

Know when Ecommerce Template gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (Secur0) PRIMARY 7.1 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N
vuln.today AI 6.5 MEDIUM

Network API reachable (AV:N), trivially reliable with public stripeIds (AC:L), needs any authenticated account (PR:L), no UI; integrity-only fraud (I:H) with no confidentiality or availability impact.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (Secur0).

CVSS VectorVendor: Secur0

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
High
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

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.

Executive ViewAI

Why It Matters

CVE-2026-115450 is a high-severity pricing flaw in the MarcosCamara01 Ecommerce Template that allows authenticated customers to pay a reduced price for higher-value products, directly impacting revenue and order integrity. Leadership should be concerned because this undermines financial controls and customer trust, and requires immediate remediation to prevent financial losses.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

Prevalence
Rare
individual-author open-source ecommerce template, hobby/demo footprint
Social Media
1
Sightings
Data Quality
4 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

36
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy