AI for Security Summit: Join Figma, Perplexity & Wiz. [Register]

CVE-2026-56827
PHP vulnerability analysis and mitigation

Overview

CVE-2026-56827 is an authorization bypass vulnerability in the shopper/framework Composer package (Shopper e-commerce admin) affecting all versions prior to 2.9.2. Five Filament groupedBulkActions blocks across Shopper admin Livewire pages omit the ->authorize(...) permission gate, allowing a low-privilege staff user with only read (browse_*) permissions to invoke state-mutating bulk operations they were never granted. The vulnerability was originally reported by Vishal Shukla (@shukla304) via sechub.dev AI Agent, first published June 22, 2026, and added to the GitHub Advisory Database on September 11, 2026. It carries a CVSS v3.1 base score of 8.1 (High) (GitHub Advisory, Shopper Advisory).

Technical details

The root cause is CWE-862 (Missing Authorization) / CWE-285 (Improper Authorization): five groupedBulkActions definitions in Shopper's Filament 4 admin pages lack the ->authorize(...) chain that is correctly applied to per-record sibling actions and other index pages. The affected files are Pages/Attribute/Browse.php, Pages/Tag/Index.php, Pages/Brand/Index.php, Pages/Category/Index.php, and Pages/Supplier/Index.php. Each page's mount() method enforces only the corresponding browse_* read permission, so an attacker authenticates as a low-privilege staff user and directly invokes the Livewire callTableBulkAction endpoint — the same HTTP-level flow the browser uses — bypassing the write-permission check entirely. This is the same vulnerability class as prior Shopper advisories GHSA-f946-9qp6-vgch and GHSA-j328-xmgp-j4q3, applied to a different code surface (Filament 4 grouped bulk actions vs. top-level Livewire methods) (GitHub Advisory).

Impact

A browse_attributes-only staff user can permanently delete every product attribute in the catalog, which cascades via the attribute_product pivot to break every dependent product variant. A browse_tags-only user can permanently delete every ProductTag row. Users holding browse_brands, browse_categories, or browse_suppliers can bulk-toggle the is_enabled flag on every brand, category, or supplier, effectively removing entire catalog sections from the storefront. There is no confidentiality impact, but integrity and availability impacts are both rated High — a single low-privilege insider or compromised staff account can cause irreversible data loss and complete storefront disruption (GitHub Advisory, Shopper Advisory).

Exploitability

A proof-of-concept (PoC) test suite (tests/Admin/Livewire/Pages/Brand/AuthBypassPocTest.php) was included in the advisory and confirmed passing against master commit ac9a760, demonstrating all seven attack scenarios with 32 assertions. No in-the-wild exploitation has been reported, and the CVE status remains "Reserved" with no CISA KEV listing or EPSS score published at this time. The attack requires only a valid low-privilege staff account (network-accessible, no user interaction, low complexity), making it straightforward for any insider or attacker who has obtained a browse_* credential (GitHub Advisory).

Exploitation steps

  1. Obtain a low-privilege staff account: Acquire or compromise any Shopper admin account holding a browse_* permission (e.g., browse_attributes, browse_tags, browse_brands, browse_categories, or browse_suppliers) — no elevated privileges are required.
  2. Authenticate to the Shopper admin panel: Log in to the Livewire-powered admin interface at the target's admin URL.
  3. Navigate to the target admin page: Access the relevant admin index page (e.g., Attributes, Tags, Brands, Categories, or Suppliers) that corresponds to the held browse_* permission.
  4. Invoke the unguarded bulk action via Livewire: Craft or intercept a Livewire callTableBulkAction request targeting the unguarded DeleteBulkAction or BulkAction (enabled/disabled). Using the Livewire test helper or a browser with developer tools, send the payload:
    Livewire::test(AttributeBrowse::class)
      ->callTableBulkAction(\Filament\Actions\DeleteBulkAction::class, [/* all record IDs */])
  5. Confirm impact: Verify that all targeted records (attributes, tags, brands, categories, or suppliers) have been deleted or had their is_enabled flag toggled — achievable in a single request covering all records in the table (GitHub Advisory).

Indicators of compromise

  • Network: Unusual Livewire POST requests to admin endpoints for /attributes, /tags, /brands, /categories, or /suppliers pages originating from accounts with only browse_* permissions; bulk action payloads in Livewire update requests containing large arrays of record IDs.
  • Logs: Application/web server logs showing callTableBulkAction calls (e.g., DeleteBulkAction, enabled, disabled) from low-privilege staff users on the five affected pages; repeated requests selecting all record IDs in a single payload.
  • Database: Sudden mass deletion of rows in attributes, product_tags, or related pivot tables; bulk is_enabled flag changes across all brands, categories, or suppliers records within a short time window, especially outside normal business hours.
  • Application: Storefront catalog pages returning empty results for brands, categories, or suppliers; product variant pages breaking due to missing attribute references (GitHub Advisory).

Mitigation and workarounds

Upgrade shopper/framework to version 2.9.2 or later, which adds the missing ->authorize(...) chains to all five affected groupedBulkActions blocks. The fix mirrors the pattern already correctly applied in Pages/Settings/Currencies.php, Pages/Reviews/Index.php, Pages/Collection/Index.php, and Pages/Discount/Index.php. No configuration-based workaround is available; the only remediation is upgrading to the patched version. As an interim measure, administrators should audit staff role assignments and remove browse_* permissions from any accounts that do not require them until the upgrade is applied (GitHub Advisory, Shopper Advisory).

Community reactions

The vulnerability was reported by Vishal Shukla (@shukla304) using the sechub.dev AI Agent, highlighting the growing role of AI-assisted security research in discovering authorization drift in open-source projects. The Shopper maintainer (mckenziearts) published the advisory and patch promptly. No broader media coverage or notable community commentary beyond the GitHub advisory thread has been identified at this time (GitHub Advisory).

Additional resources


SourceThis report was generated using AI

Related PHP vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-56829HIGH8.1
  • PHP logoPHP
  • shopper/framework
NoYesSep 15, 2026
CVE-2026-56827HIGH8.1
  • PHP logoPHP
  • shopper/framework
NoYesSep 15, 2026
CVE-2026-56825HIGH8.1
  • PHP logoPHP
  • shopper/framework
NoYesSep 15, 2026
CVE-2026-56831MEDIUM6.5
  • PHP logoPHP
  • shopper/framework
NoYesSep 15, 2026
CVE-2026-56830MEDIUM6.5
  • PHP logoPHP
  • shopper/framework
NoYesSep 15, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management