/

CVE-2026-62989

Severity:

HIGH RISK

(8.1)

Missing Authorization (CWE-862) in Shopper Variants

CVE-2026-62989

Deferred

Vulnerability type

Category:

Missing Authorization

CWE:

CWE-285, CWE-862

Impact:

Unauthorized destructive modification of product catalog data

Severity:

HIGH RISK

(8.1)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

Shopper's Variants Livewire component permits certain authenticated staff users to invoke variant deletion actions without the dedicated variant-deletion permission. A user with product-edit access may therefore permanently delete individual or multiple product variants, potentially disrupting the catalog, storefront pages, carts, and checkout.

Shopper's Variants Livewire component permits certain authenticated staff users to invoke variant deletion actions without the dedicated variant-deletion permission. A user with product-edit access may therefore permanently delete individual or multiple product variants, potentially disrupting the catalog, storefront pages, carts, and checkout.

Affected context

The issue occurs in Shopper Admin Panel deployments where the Variants Livewire component exposes individual and bulk deletion actions. It becomes risky when a staff account has the edit_products permission but does not have delete_product_variants, and the server relies on component state or action exposure without independently enforcing the required authorization.

The issue occurs in Shopper Admin Panel deployments where the Variants Livewire component exposes individual and bulk deletion actions. It becomes risky when a staff account has the edit_products permission but does not have delete_product_variants, and the server relies on component state or action exposure without independently enforcing the required authorization.

Exploit preconditions

  • Attack surface: Authenticated Shopper administration interface and its Variants Livewire component
  • Required access: A staff account with edit_products permission and access to a product edit page
  • Trigger point: Server-side handling of individual or bulk variant deletion actions
  • Authorization gap: The deletion paths do not verify delete_product_variants
  • Why exploitation is possible: Access to the component and signed state is treated as sufficient, even when the dedicated destructive-action permission is absent
  • Attack surface: Authenticated Shopper administration interface and its Variants Livewire component
  • Required access: A staff account with edit_products permission and access to a product edit page
  • Trigger point: Server-side handling of individual or bulk variant deletion actions
  • Authorization gap: The deletion paths do not verify delete_product_variants
  • Why exploitation is possible: Access to the component and signed state is treated as sufficient, even when the dedicated destructive-action permission is absent

Why this happens

The underlying bug is a missing server-side authorization check on destructive component actions. The application exposes deletion handlers through callTableAction and callTableBulkAction but does not consistently enforce the permission required to delete variants. This maps primarily to CWE-862, Missing Authorization, and is also related to CWE-285, Improper Authorization, because the permission boundary is not applied at the point where the sensitive operation executes.

The underlying bug is a missing server-side authorization check on destructive component actions. The application exposes deletion handlers through callTableAction and callTableBulkAction but does not consistently enforce the permission required to delete variants. This maps primarily to CWE-862, Missing Authorization, and is also related to CWE-285, Improper Authorization, because the permission boundary is not applied at the point where the sensitive operation executes.

Potential impact

  • An authorized-but-insufficiently privileged staff user may delete product variants
  • Multiple variants could be removed through a bulk operation
  • The sellable product catalog may be damaged or made incomplete
  • Storefront product pages, carts, and checkout flows could be disrupted
  • Product data integrity and business availability may be affected
  • An authorized-but-insufficiently privileged staff user may delete product variants
  • Multiple variants could be removed through a bulk operation
  • The sellable product catalog may be damaged or made incomplete
  • Storefront product pages, carts, and checkout flows could be disrupted
  • Product data integrity and business availability may be affected

General mitigation guidance

Mitigation typically focuses on enforcing authorization at every server-side

operation that changes product data.

Common defensive patterns include:

  • Check the dedicated variant-deletion permission inside both individual and bulk deletion handlers
  • Treat client-side visibility, signed component state, and route access as insufficient authorization
  • Centralize policy checks for destructive product operations and apply them consistently
  • Validate authorization again when processing each bulk-operation request
  • Follow deny-by-default behavior when a permission is missing or ambiguous
  • Separate product-edit permissions from destructive variant-management permissions
  • Record and monitor sensitive deletion actions, including the acting account and affected records

Mitigation typically focuses on enforcing authorization at every server-side

operation that changes product data.

Common defensive patterns include:

  • Check the dedicated variant-deletion permission inside both individual and bulk deletion handlers
  • Treat client-side visibility, signed component state, and route access as insufficient authorization
  • Centralize policy checks for destructive product operations and apply them consistently
  • Validate authorization again when processing each bulk-operation request
  • Follow deny-by-default behavior when a permission is missing or ambiguous
  • Separate product-edit permissions from destructive variant-management permissions
  • Record and monitor sensitive deletion actions, including the acting account and affected records

How teams detect issues like this

Organizations can identify similar authorization gaps through:

  • Static analysis and code review searches for mutation handlers lacking policy or permission checks
  • Review of Livewire, controller, API, and job entry points that invoke delete or bulk-delete operations
  • Tests covering users with related permissions but without the specific destructive permission
  • Negative authorization tests for individual and bulk actions
  • Policy enforcement requiring server-side authorization before database mutations
  • Audit-log monitoring for unusual product-variant deletion volume or activity by accounts without the expected role

Organizations can identify similar authorization gaps through:

  • Static analysis and code review searches for mutation handlers lacking policy or permission checks
  • Review of Livewire, controller, API, and job entry points that invoke delete or bulk-delete operations
  • Tests covering users with related permissions but without the specific destructive permission
  • Negative authorization tests for individual and bulk actions
  • Policy enforcement requiring server-side authorization before database mutations
  • Audit-log monitoring for unusual product-variant deletion volume or activity by accounts without the expected role

Sources

SourceLink
github.comgithub.com/shopperlabs/shopper/commit/3c814f3b8eaf7cd2296c213bec0ce91e9f92a3f2
github.comgithub.com/shopperlabs/shopper/pull/573
github.comgithub.com/shopperlabs/shopper/releases/tag/v2.10.0
github.comgithub.com/shopperlabs/shopper/security/advisories/GHSA-93v2-gcw2-vfwc

Frequently asked

questions

An authenticated staff user who can access the relevant product edit interface and has edit_products may be able to invoke variant deletion actions without delete_product_variants.

No. Signed state can help protect integrity, but it does not replace an explicit server-side permission check for a destructive operation.

Enforce the dedicated variant-deletion authorization policy within every individual and bulk deletion handler before any records are changed.

Use deny-by-default authorization, maintain separate permissions for editing and deletion, and include negative tests for users who possess related but insufficient privileges.

An authenticated staff user who can access the relevant product edit interface and has edit_products may be able to invoke variant deletion actions without delete_product_variants.

No. Signed state can help protect integrity, but it does not replace an explicit server-side permission check for a destructive operation.

Enforce the dedicated variant-deletion authorization policy within every individual and bulk deletion handler before any records are changed.

Use deny-by-default authorization, maintain separate permissions for editing and deletion, and include negative tests for users who possess related but insufficient privileges.

Find out what's already
exploitable in your codebase.