Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as staff holding only edit_products
-
DeliveryOpen /shopper/products/{id}/edit, receive signed Livewire snapshot
-
ExploitInvoke callTableAction/callTableBulkAction 'delete' on Livewire endpoint
-
ExecutionDeleteAction/DeleteBulkAction run with no authorization check
-
ImpactVariants permanently deleted, catalogue and checkout disrupted
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization verification
MITRE ATT&CK
1 technique across 1 tactic: Defense Evasion The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated Shopper admin-panel account that holds the edit_products permission (the content-editor role) but lacks delete_product_variants; the attacker must reach the Livewire endpoint backing /shopper/products/{id}/edit to obtain the signed component state and then call callTableAction('delete',...) or callTableBulkAction('delete',...). The condition is created by Shopper's default seeded permission model, which separates edit_products from delete_product_variants - the flaw is that the parent Edit page only gates on edit_products while the Variants component's delete actions check nothing. Limiting factors: exploitation is impossible without a valid staff login carrying edit_products (no anonymous/unauthenticated path), it affects admin-panel users rather than storefront visitors, and the destructive impact is maximized specifically on ProductType::Variant products; versions 2.10.0 and later enforce delete_product_variants and are not exploitable. |
| Impact | This is a genuine but bounded access-control flaw (CWE-285/CWE-862, missing server-side authorization). The provided CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H, base 8.1) is internally consistent with the evidence: the Variants Livewire component exposes DeleteAction/DeleteBulkAction over the network with no authorize() call, and exploitation requires an authenticated account (PR:L), so the high score is driven entirely by integrity and availability impact, not by remote unauthenticated reach. The real-world risk is tempered by the privilege requirement: the attacker must already hold a valid staff account with the edit_products permission (a content-editor role), so this is a privilege-boundary violation within the admin panel rather than an external breach - a malicious or compromised low-tier staff account, not an anonymous internet attacker. No EPSS score is supplied and the CVE is not listed in CISA KEV, so there is no signal of widespread or active exploitation; the vuln.today decision label is 'this_week' (not act_now/emergency). The only exploitation artifact is a Pest unit test embedded in the GHSA advisory demonstrating the deletion against Shopper's own test harness - this is a public PoC reference, not verified working exploit code against a live deployment. Net: a real authorization-boundary bug worth patching on the stated this_week cadence, but not a drop-everything internet-facing emergency given the authenticated-insider precondition and absence of KEV/EPSS exploitation signals. |
| Exploit ScenarioDerived | A disgruntled or compromised content-editor staff account - holding only edit_products and deliberately NOT granted delete_product_variants - opens /shopper/products/{id}/edit to obtain the signed Livewire snapshot for the Variants component, then issues callTableAction('delete', ...) or callTableBulkAction('delete', ...) against the Livewire endpoint to permanently delete one or many product variants. For ProductType::Variant products this wipes the sellable catalogue, breaking storefront product pages, cart, and checkout. A public PoC reference exists in the GHSA advisory (a Pest test); it is not verified as working exploit code against a production instance. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 30, 2026
Permanent deletion of product variants in Shopper's admin panel is possible for any authenticated staff member who holds edit_products but not delete_product_variants in versions before 2.10.0, because the Variants Livewire component's single and bulk Filament delete actions perform no server-side authorization check (CWE-285/CWE-862). The parent product edit page gates only on edit_products, so a user can load /shopper/products/{id}/edit, obtain the signed component state, and invoke callTableAction('delete', ...) or callTableBulkAction('delete', ...) against the Livewire endpoint; impact is greatest on ProductType::Variant products, where the sellable catalogue and the storefront product pages, cart and checkout can break. Shopper 2.10.0 adds ->authorize('delete_product_variants') to both actions; a public proof-of-concept test is referenced in the advisory but is not verified as working exploit code, and no CISA KEV entry or confirmed active exploitation is reported.
RemediationAI
Vendor-released patch: upgrade to Shopper 2.10.0 (composer/shopper/framework 2.10.0), which adds ->authorize('delete_product_variants') to both DeleteAction::make() and DeleteBulkAction::make() in packages/admin/src/Livewire/Components/Products/Form/Variants.php, matching the pattern already used for other variant-mutating actions; the change is in PR https://github.com/shopperlabs/shopper/pull/573 and commit 3c814f3b8eaf7cd2296c213bec0ce91e9f92a3f2, with the release at https://github.com/shopperlabs/shopper/releases/tag/v2.10.0 and the advisory at https://github.com/shopperlabs/shopper/security/advisories/GHSA-93v2-gcw2-vfwc. If upgrading immediately is not possible, the interim mitigation is to revoke edit_products from roles that are not intended to delete variants, with the trade-off that those users lose the ability to edit products at all, or to restrict admin-panel accounts holding edit_products to trusted staff and monitor for unexpected variant deletions; neither restores variant deletion control while leaving product editing in place, so the 2.10.0 upgrade is the complete fix.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Shopper is a Laravel-based headless e-commerce admin panel built on Livewire and Filament tables. The affected class is packages/admin/src/Livewire/Components/Products/Form/Variants.php, which renders product variants and exposes DeleteAction and DeleteBulkAction. The parent page Livewire/Pages/Product/Edit.php authorizes edit_products in mount(), but the Variants component itself contains no authorize(), can(), gate or policy call on its delete paths, and the bulk action callback simply executes $records->each->delete(). The dedicated delete_product_variants permission is seeded by Permission::generate('product_variants', 'products') in PermissionsTableSeeder.php but is never enforced on deletion; other variant-mutating actions such as SlideOvers/UpdateVariant.php, SlideOvers/GenerateVariants.php and Components/Products/VariantStock.php do check edit_product_variants. This is CWE-285 (improper authorization) and CWE-862 (missing authorization) in the Livewire/Filament action dispatch layer, where client-invoked table action calls reach model deletion without a server-side permission check. The CPE cpe:2.3:a:shopperlabs:shopper:*:*:*:*:*:*:*:* covers all releases before the 2.10.0 fix.
Know when Shopper 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
AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H
Network Livewire endpoint (AV:N), no special trigger conditions (AC:L), requires an authenticated edit_products staff account (PR:L), no user interaction; deletion gives no data disclosure (C:N) but destroys variants (I:H) and disrupts storefront/checkout (A:H).
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Shopper is a Headless e-commerce Admin Panel. Prior to 2.10.0, the Variants Livewire component in packages/admin/src/Livewire/Components/Products/Form/Variants.php exposes DeleteAction and DeleteBulkAction without server-side authorization. An authenticated staff user with edit_products can access /shopper/products/{id}/edit and obtain the signed component state even without delete_product_variants. The callTableAction and callTableBulkAction paths then permanently delete individual or multiple variants without checking that dedicated permission. For variant products, this can destroy the sellable catalogue and disrupt storefront product pages, cart, and checkout. This issue is fixed in version 2.10.0.
Technical POC Analysis
CWE-285 (Improper Authorization), with the advisory also tagging CWE-862 (Missing Authorization).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
A high-severity authorization flaw in Shopper's admin panel (versions before 2.10.0) allows any staff member with basic product editing rights to permanently delete product variants without the required delete permission. This enables insider misuse or compromised low-privilege accounts to erase sellable catalogue data, potentially disrupting storefront operations, cart functionality, and checkout for variant-based products. Leadership should prioritize assessment and mitigation due to the direct revenue and operational impact.
Apply vendor patch.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Privilege escalation in Shopper headless e-commerce admin panel prior to version 2.8.0 allows any low-privilege authenti
Privilege escalation in Shopper 2.0.0 through 2.5.x allows an authenticated admin-panel user who holds only the access_d
Stored cross-site scripting in the Shopper headless e-commerce admin panel (2.0.0 up to but not including 2.10.1, plus 3
Authorization bypass in Shopperlabs Shopper headless e-commerce admin panel prior to 2.8.0 allows authenticated low-priv
Privilege escalation in shopperlabs/shopper prior to 2.8.0 allows any authenticated admin panel user - regardless of ass
Missing authorization enforcement in the Shopper headless e-commerce admin panel (all versions prior to 2.8.0) allows an
Shopper versions prior to 2.10.1 expose administrator and staff profile records to low-privileged admin-panel users thro
Discount over-redemption via race condition in Shopper (shopperlabs/shopper prior to v2.8.0) allows concurrent unauthent
EUVD-2026-114510
NVD
CVE.org
EPSS
GitHub
Exploit-DB