Authorization Bypass in Shopper Framework CollectionProducts Component
An authorization bypass vulnerability in the Shopper framework allows authenticated users with limited privileges to perform unauthorized product deletions across any collection in the database.
What's new
Shopper framework versions prior to 2.9.2 are vulnerable to an authorization bypass in the CollectionProducts Livewire component. The vulnerability stems from two primary issues: the collection property is not locked, allowing arbitrary modification of the collection ID by the client, and the delete and bulk-delete actions lack proper authorization checks. An authenticated user possessing only the browse_collections role can manipulate Livewire network payloads to target and empty any collection within the store's database. This vulnerability effectively escalates a user's privileges, allowing them to perform destructive actions against storefront catalog groupings and promotions without the necessary edit_collections permissions. This impacts organizations relying on Shopper for e-commerce catalog management, as an attacker can systematically detach products from collections, disrupting site functionality and promotional campaigns.
Attack Chain
- Attacker authenticates to the admin panel using valid, low-privileged credentials (e.g.,
browse_collectionsonly). - Attacker inspects the
CollectionProductsLivewire component to identify the target collection ID and the component snapshot structure. - Attacker captures the XSRF token and active session cookie to prepare the authenticated network request.
- Attacker constructs a malicious POST request targeting the
/shopper/livewire/updateendpoint. - Attacker replaces the legitimate
collectionID within the Livewire component snapshot data with an arbitrary target collection ID. - Attacker invokes the
callBulkActionmethod within the payload, specifying the 'delete' action and a list of product IDs to detach. - The server processes the request without verifying the caller's authorization or validating the component state.
- Targeted products are detached from the specified collection, resulting in a loss of catalog integrity.
Impact
The successful exploitation of this vulnerability allows unauthorized users to detach products from any collection in the database. This causes immediate disruption to storefront catalog groupings, landing pages, and promotional activities linked to these collections. Because the attacker can target any collection ID, the scope of impact is the entire catalog database rather than just the collections associated with their assigned permissions.
Recommendation
- Upgrade
shopper/frameworkto version 2.9.2 or later immediately to patch the missing authorization and property locking. - Audit administrative roles to ensure the least-privilege principle is applied and monitor for unauthorized
callBulkActionrequests in server logs. - Validate that all Livewire components sensitive to user input use the
#[Locked]attribute to prevent client-side property modification.
Immediate actions
Upgrade shopper/framework to 2.9.2 or later
Threat Hunt
Analyze web logs for POST requests to /shopper/livewire/update containing callBulkAction methods
Data: Web server access logs or WAF logs
Mitigations
Upgrade shopper/framework to 2.9.2
CVE-2026-56825