Description
Authorization Bypass Through User-Controlled Key (CWE-639) in the cart and wishlist repositories of MarcosCamara01 Ecommerce Template allows any authenticated user to delete and modify the cart and wishlist rows of any other user, because cartRepository.delete(), cartRepository.updateQuantityInternal() and wishlistRepository.delete() in src/lib/db/drizzle/repositories/ match rows by primary key alone, with no predicate on the owning user, and the per user authorization for those three operations rests on PostgreSQL row level security. The migrations run ALTER TABLE ... ENABLE ROW LEVEL SECURITY and create policies comparing app.current_user_id() with user_id, but never ALTER TABLE ... FORCE ROW LEVEL SECURITY, and PostgreSQL does not apply policies to the role that owns a table. The template uses one DATABASE_URL both to run the migrations, which create the tables, and for the application at runtime, so the application connects as the owner of the tables and the policies do not apply to it. cart_items.id and wishlist.id are sequential bigserial values, so the identifiers of rows belonging to other users can be enumerated, and the update path returns the modified row, which carries the identifier of the user it belongs to. This results in the destruction and modification of cart and wishlist contents belonging to other accounts of the installation.
Published: 2026-10-22
Score: 7.1 High
EPSS: < 1% Very Low
KEV: No
Impact: Authorization Bypass leading to deletion and modification of cart and wishlist data of other users
Action: Immediate Patch
AI Analysis

Impact

The vulnerability is an authorization bypass that allows any authenticated user to delete or update the cart or wishlist rows of other users. It arises from repository queries that match rows solely by their primary key, with no condition on the owning user. Because PostgreSQL row‑level security policies are not enforced for the table‑owner role and the policies are not forced, the application can read, modify or delete any record. The result is a loss of integrity and confidentiality for user shopping data, potentially leading to financial loss or reputational damage. Risk assessment: The CVSS score is 7.1, which classifies the issue as High severity. The EPSS score is not available, so the current exploitation probability cannot be quantified, but the known exploitation scenario relies on enumeration of sequential bigserial identifiers and an authenticated session, making the attack plausible on a running installation. The vulnerability is not listed in the CISA KEV catalog. The likely attack vector is a legitimate authenticated user abusing the lack of owner‑based checks to impact other user accounts.

Affected Systems

MarcosCamara01’s Ecommerce Template is affected. Instances running the source built from the repository without applying the commit adf7dedbb41894c0bad0b33a26999b0da7e967b7 (dated 27 July 2026) are vulnerable. The vulnerability exists in the cart and wishlist modules that rely on a single DATABASE_URL connected as the table owner, which bypasses row‑level security.

Risk and Exploitability

The CVSS score of 7.1 indicates a High severity. Because the EPSS score is not provided, the exploitation probability is unclear, but the vulnerability can be exploited by enumerating sequential primary keys in the cart and wishlist tables using any authenticated session. The application’s use of the table‑owner role prevents row‑level security policies from firing, allowing any user to delete or modify other users’ rows. The vulnerability is not listed in the CISA KEV catalog, so no known exploits have been reported yet.

Generated by OpenCVE AI on October 22, 2026 at 16:36 UTC.

Remediation

Vendor Solution

Update to a revision of the repository that includes commit adf7dedbb41894c0bad0b33a26999b0da7e967b7 of 27 July 2026. The repository publishes no versioned releases and carries no git tags, so the fix can only be identified by commit.


OpenCVE Recommended Actions

  • Apply the latest patch identified by commit adf7dedbb41894c0bad0b33a26999b0da7e967b7 to the Ecommerce Template repository
  • Modify the database schema to include 'ALTER TABLE ... FORCE ROW LEVEL SECURITY' for the cart and wishlist tables so that the owner role cannot bypass policies
  • Deploy the application using a dedicated, non‑owner database user that lacks rights to alter ACLs and can only access data via row‑level security
  • If possible, change the primary key strategy to use random or opaque identifiers to prevent enumeration of other users’ rows

Generated by OpenCVE AI on October 22, 2026 at 16:36 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 30 Oct 2026 21:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Mon, 26 Oct 2026 11:30:00 +0000

Type Values Removed Values Added
CPEs cpe:2.3:a:marcoscamara01:ecommerce-template:*:*:*:*:*:*:*:*

Thu, 22 Oct 2026 17:15:00 +0000

Type Values Removed Values Added
First Time appeared Marcoscamara01
Marcoscamara01 ecommerce-template
Vendors & Products Marcoscamara01
Marcoscamara01 ecommerce-template

Thu, 22 Oct 2026 15:45:00 +0000

Type Values Removed Values Added
Description Authorization Bypass Through User-Controlled Key (CWE-639) in the cart and wishlist repositories of MarcosCamara01 Ecommerce Template allows any authenticated user to delete and modify the cart and wishlist rows of any other user, because cartRepository.delete(), cartRepository.updateQuantityInternal() and wishlistRepository.delete() in src/lib/db/drizzle/repositories/ match rows by primary key alone, with no predicate on the owning user, and the per user authorization for those three operations rests on PostgreSQL row level security. The migrations run ALTER TABLE ... ENABLE ROW LEVEL SECURITY and create policies comparing app.current_user_id() with user_id, but never ALTER TABLE ... FORCE ROW LEVEL SECURITY, and PostgreSQL does not apply policies to the role that owns a table. The template uses one DATABASE_URL both to run the migrations, which create the tables, and for the application at runtime, so the application connects as the owner of the tables and the policies do not apply to it. cart_items.id and wishlist.id are sequential bigserial values, so the identifiers of rows belonging to other users can be enumerated, and the update path returns the modified row, which carries the identifier of the user it belongs to. This results in the destruction and modification of cart and wishlist contents belonging to other accounts of the installation.
Title Cross user deletion and modification of cart and wishlist rows in Ecommerce Template through unscoped primary key queries
Weaknesses CWE-639
References
Metrics cvssV4_0

{'score': 7.1, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:H/VA:N/SC:N/SI:N/SA:N'}


Subscriptions

Marcoscamara01 Ecommerce-template
cve-icon MITRE

Status: PUBLISHED

Assigner: Secur0

Published:

Updated: 2026-10-30T18:49:27.205Z

Reserved: 2026-10-22T14:49:43.872Z

Link: CVE-2026-115453

cve-icon Vulnrichment

Updated: 2026-10-30T18:49:16.335Z

cve-icon NVD

Status : Deferred

Published: 2026-10-22T16:17:35.183

Modified: 2026-10-30T19:18:12.443

Link: CVE-2026-115453

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-22T17:00:09Z

Weaknesses
  • CWE-639

    Authorization Bypass Through User-Controlled Key