Shopper: Missing authorization on Product admin Livewire sub-form components
The advisory, in context
Impact
Sub-form Livewire components used in the product editor (Edit, Inventory, Seo, Shipping, Files) had no authorization on their store() method. Any authenticated panel user, regardless of role, could mutate any product's pricing, stock, SEO metadata, shipping dimensions, and attached media without holding edit_products.
The affected components accepted the product ID as a public Livewire property without #[Locked], so an attacker could also target an arbitrary product by tampering with the wire payload from the client.
Patches
Fixed in v2.8.0. Each sub-form store() now authorizes against edit_products and the product binding is locked.
Upgrade via:
composer require shopper/admin:^2.8
Workarounds
None. Upgrade to v2.8.0.
References
- Pull request: https://github.com/shopperlabs/shopper/pull/511
- CWE-862 Missing Authorization
Affected packages
Start with the recorded fix for your release branch. Check your installed version and test compatibility before upgrading. Fixing this advisory does not rule out other vulnerabilities in the release.
Earlier releases before 2.8.0
Fixed in 2.8.0
59 explicitly affected versions
v2.0.0, v2.0.0-alpha, v2.0.0-beta, v2.0.0-beta10, v2.0.0-beta11, v2.0.0-beta12, v2.0.0-beta13, v2.0.0-beta14, v2.0.0-beta15, v2.0.0-beta16, v2.0.0-beta17, v2.0.0-beta18, v2.0.0-beta19, v2.0.0-beta2, v2.0.0-beta20, v2.0.0-beta21, v2.0.0-beta3, v2.0.0-beta4, v2.0.0-beta5, v2.0.0-beta6, v2.0.0-beta7, v2.0.0-beta8, v2.0.0-beta9, v2.0.1, v2.0.2, v2.0.3, v2.1.1, v2.1.2, v2.1.3, v2.1.4, v2.1.5, v2.1.6, v2.2, v2.2.1, v2.2.2, v2.2.3, v2.2.4, v2.2.5, v2.2.6, v2.2.7, v2.3, v2.3.1, v2.3.2, v2.3.3, v2.4.0, v2.4.1, v2.4.2, v2.4.3, v2.5.0, v2.5.1, v2.6.0, v2.6.1, v2.6.2, v2.6.3, v2.6.4, v2.7.0, v2.7.1, v2.7.2, v2.7.3
View affected-version evidence
{
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "2.8.0"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"v2.0.0",
"v2.0.0-alpha",
"v2.0.0-beta",
"v2.0.0-beta10",
"v2.0.0-beta11",
"v2.0.0-beta12",
"v2.0.0-beta13",
"v2.0.0-beta14",
"v2.0.0-beta15",
"v2.0.0-beta16",
"v2.0.0-beta17",
"v2.0.0-beta18",
"v2.0.0-beta19",
"v2.0.0-beta2",
"v2.0.0-beta20",
"v2.0.0-beta21",
"v2.0.0-beta3",
"v2.0.0-beta4",
"v2.0.0-beta5",
"v2.0.0-beta6",
"v2.0.0-beta7",
"v2.0.0-beta8",
"v2.0.0-beta9",
"v2.0.1",
"v2.0.2",
"v2.0.3",
"v2.1.1",
"v2.1.2",
"v2.1.3",
"v2.1.4",
"v2.1.5",
"v2.1.6",
"v2.2",
"v2.2.1",
"v2.2.2",
"v2.2.3",
"v2.2.4",
"v2.2.5",
"v2.2.6",
"v2.2.7",
"v2.3",
"v2.3.1",
"v2.3.2",
"v2.3.3",
"v2.4.0",
"v2.4.1",
"v2.4.2",
"v2.4.3",
"v2.5.0",
"v2.5.1",
"v2.6.0",
"v2.6.1",
"v2.6.2",
"v2.6.3",
"v2.6.4",
"v2.7.0",
"v2.7.1",
"v2.7.2",
"v2.7.3"
]
}