{"id":"CVE-2026-62989","kind":"vulnerability","aliases":["CVE-2026-62989"],"related":[],"title":"Shopper admin: staff can delete product variants without permission","description":"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.","summary":"Shopper is a headless e-commerce admin panel package. A staff user who can edit products can permanently delete product variants without the separate delete permission, because the server does not check it.","severity":"high","cvss":8.1,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["e-commerce","laravel","package","php","shopper"],"not_affected_if":["no-staff-with-edit-products-only","version-2.10.0-or-later"],"how_to_check":"- Check the installed Shopper version with `composer show laravel-shopper/admin` or in `composer.lock`\n- Look for `packages/admin/src/Livewire/Components/Products/Form/Variants.php` and confirm whether `DeleteAction` and `DeleteBulkAction` check `delete_product_variants`\n- Review which staff roles hold `edit_products` without `delete_product_variants`","fix":"- Upgrade Shopper to `2.10.0` or later","status":"open","published_at":"2026-10-30T21:17:15+00:00","first_seen_at":"2026-10-30T21:25:54+00:00","triaged_at":"2026-10-30T21:26:36+00:00","updated_at":"2026-10-30T21:26:36+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-30T21:26:36Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade Shopper to `2.10.0` or later","reach":"internet","title":"Shopper admin: staff can delete product variants without permission","impact":"medium","summary":"Shopper is a headless e-commerce admin panel package. A staff user who can edit products can permanently delete product variants without the separate delete permission, because the server does not check it.","audience":"businesses","category":"package","nicknames":[],"who_cares":["shopper","laravel","php","e-commerce"],"confidence":0.7,"fix_status":"available","needs_auth":"yes","worst_case":"Staff with edit access permanently delete product variants, breaking storefront checkout","analyst_note":"","how_to_check":"- Check the installed Shopper version with `composer show laravel-shopper/admin` or in `composer.lock`\n- Look for `packages/admin/src/Livewire/Components/Products/Form/Variants.php` and confirm whether `DeleteAction` and `DeleteBulkAction` check `delete_product_variants`\n- Review which staff roles hold `edit_products` without `delete_product_variants`","plain_action":"","needs_analyst":false,"not_affected_if":["version-2.10.0-or-later","no-staff-with-edit-products-only"],"who_is_affected":"Teams running Shopper's admin panel where some staff hold edit_products but not delete_product_variants. Storefronts that use variant products are most at risk, since deleted variants break product pages, cart and checkout. Sites that do not use the admin panel or only trust fully privileged staff are less exposed.","user_interaction":"no","needs_special_setup":"no","severity_if_unknown":"high"},"cost_usd":0.000711,"input_tokens":4262,"output_tokens":570,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-2026':11A,14A '-62989':12A,15A '/edit':94C '/shopper/products':92C '2.10.0':67C,146C 'access':91C 'admin':2A,30B,63C 'authent':84C 'author':82C 'calltableact':107C 'calltablebulkact':109C 'cart':137C 'catalogu':131C 'check':55B,119C 'checkout':139C 'commerc':18B,29B,62C 'compon':71C,99C 'cve':10A,13A 'dedic':121C 'delet':5A,42B,48B,103C,113C 'deleteact':75C 'deletebulkact':77C 'destroy':128C 'disrupt':133C 'e':17B,28B,61C 'e-commerc':16B,27B,60C 'edit':38B,88C 'even':101C 'expos':74C 'fix':143C 'headless':26B,59C 'id':93C 'individu':114C 'issu':141C 'laravel':19B 'livewir':70C 'multipl':116C 'obtain':96C 'packag':20B,32B 'packages/admin/src/livewire/components/products/form/variants.php':73C 'page':136C 'panel':31B,64C 'path':110C 'perman':41B,112C 'permiss':9A,49B,122C 'php':21B 'prior':65C 'product':6A,39B,43B,89C,104C,125C,135C 'sellabl':130C 'separ':47B 'server':52B,80C 'server-sid':79C 'shopper':1A,22B,23B,56C 'side':81C 'sign':98C 'staff':3A,34B,85C 'state':100C 'storefront':134C 'user':35B,86C 'variant':7A,44B,69C,105C,117C,124C 'version':145C 'without':8A,45B,78C,102C,118C","nicknames":[],"mitigations":[],"who_affected":"Teams running Shopper's admin panel where some staff hold edit_products but not delete_product_variants. Storefronts that use variant products are most at risk, since deleted variants break product pages, cart and checkout. Sites that do not use the admin panel or only trust fully privileged staff are less exposed.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"first_public_at":"2026-10-30T21:17:15+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-62989","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-62989","severity":null,"published_at":"2026-10-30T21:17:15+00:00","modified_at":"2026-10-30T21:17:15+00:00","first_seen_at":"2026-10-30T21:25:54+00:00","fetched_at":"2026-10-30T21:25:54+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}