CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-47742

CVE-2026-47742: Missing Authorization and Client-Side Property Tampering in Shopper E-commerce Panel

Amit Schendel
Amit Schendel
Senior Security Researcher

Jun 6, 2026·5 min read·46 visits

Executive Summary (TL;DR)

Low-privileged Shopper admin panel users can manipulate Livewire payloads to edit any product's pricing, inventory, SEO, and assets because mutating endpoints lacked authorization checks and model IDs were not locked.

An authorization bypass and client-side property tampering vulnerability (CVE-2026-47742) in the Shopper headless admin panel (built on Laravel and Livewire) allows low-privileged users to modify arbitrary product records (Insecure Direct Object Reference). This occurs due to unlocked public model properties and a complete lack of access control checks on mutating sub-form store methods.

Vulnerability Overview

Shopper is an open-source headless e-commerce admin panel constructed on the Laravel framework and powered by Livewire components. The core management interface exposes various sub-forms within the product editor to permit administrative actions. These sub-forms cover key operational details, including pricing, SEO settings, shipping measurements, asset files, and inventory control.\n\nThe exposure is centered on the administrative backend panel, specifically targeting the asynchronous endpoints utilized by the Livewire state synchronization engine. An attacker possessing authenticated access to the panel, even with restricted read-only permissions, can target these components directly. This occurs because the sub-form components lack functional access control validation prior to processing state updates.\n\nThe vulnerability represents a combination of CWE-862 (Missing Authorization) and CWE-807 (Reliance on Untrusted Inputs in a Security Decision). This combination facilitates client-side tampering and direct object referencing, enabling low-privileged actors to bypass role-based access control (RBAC) boundaries. Successful exploitation leads to unauthorized modifications across the entire product catalog database.

Root Cause Analysis

The flaw lies within the state-management paradigm of Laravel Livewire v3. During the application's client-server communication lifecycle, component properties are serialized into a JSON state snapshot (dehydration) and passed to the frontend. Subsequent client interactions submit this snapshot back to the backend server to re-instantiate the stateful server-side component (hydration).\n\nIn vulnerable installations of Shopper, public database model properties, such as $product, were exposed directly to the client interface without locking constraints. Livewire serializes Eloquent models by encoding their database class name and primary key. Because these properties were not secured with the #[Locked] attribute, Livewire allowed the client payload to rewrite the model identifier (e.g., modifying the targeted ID from 42 to 999).\n\nDuring the hydration phase, the Livewire engine receives the tampered JSON, trusts the user-supplied primary key, and queries the database to bind the modified model instance. Crucially, the component's state-mutating store() method does not perform any server-side authorization checks. Consequently, the application executes the update operation against an arbitrary product record, bypassing both intended data boundaries (IDOR) and role-based access rules.

Code Analysis

Examination of the vulnerable codebase reveals complete trust in the component's internal state during mutation requests. In packages/admin/src/Livewire/Components/Products/Form/Inventory.php, the original store() method updated the database without validation:\n\nphp\n// Vulnerable server-side component state\npublic Product $product;\n\npublic function store(): void\n{\n // No permission checks exist here\n $this->product->update($this->form->getState());\n $this->dispatch('product.updated');\n}\n\n\nThe patch applied in Commit fcd0c5920588702df5b874f432b1042abd77a50b introduces two defensive controls. First, the #[Locked] attribute is assigned to the public model property. This causes Livewire to sign the property on dehydration and verify the signature on hydration, preventing ID tampering. Second, explicit authorization is enforced inside the method body.\n\nphp\n// Patched state enforcement\nuse Livewire\\Attributes\\Locked;\n\n#[Locked]\npublic Product $product;\n\npublic function store(): void\n{\n // Enforce role-based access control explicitly\n $this->authorize('edit_products');\n\n $this->product->update($this->form->getState());\n $this->dispatch('product.updated');\n}\n\n\nThe remediation is robust and covers adjacent components, including Edit.php, Seo.php, Shipping.php, and Files.php. By combining cryptographic property signing via #[Locked] with explicit server-side RBAC validation, the application successfully prevents exploitation of this entire attack vector.

Exploitation Methodology

To execute the exploit, an attacker must first obtain a low-privileged authenticated session on the Shopper admin panel. This requirement is low complexity, as any standard staff account without write privileges is sufficient. No administrative permissions like edit_products are required.\n\nThe attacker locates a product modification sub-form to retrieve the initial Livewire component state structure. By capturing the underlying AJAX communication directed at the /livewire/message/{component-name} endpoint, the attacker extracts the dehydrated JSON state. This payload includes a memo block with the identifier of the product model being processed.\n\nThe attacker modifies the product.id field to reference a target record of their choosing. They append state updates containing arbitrary product information, such as adjusted unit pricing or manipulated stock volumes. Upon dispatching the mutated JSON snapshot via the intercepting proxy, the Livewire engine reconciles the state, binds the arbitrary model, and runs the store() method, committing the unauthorized changes.

Impact Assessment

The security impact is classified as High for integrity, with a CVSS v3.1 score of 6.5. Because the application processes transaction-critical records, unauthorized modifications can cause direct business disruption. An attacker can set pricing values to nominal amounts, deplete or artificially inflate inventory stock, or manipulate product SEO profiles to redirect web traffic.\n\nmermaid\ngraph LR\n Attacker["Low-Privilege Session"] -->|1. Manipulates JSON Payload| Livewire["Livewire Hydration Engine"]\n Livewire -->|2. Binds Arbitrary Model ID| DB[("Application Database")]\n Livewire -->|3. Invokes Unprotected store()| DB\n DB -->|4. Writes Tampered Price/Stock| DB\n\n\nFurthermore, because the Files sub-form is also vulnerable, an attacker could change media attachments and associated assets. This could lead to the distribution of malicious assets or defacement of the public storefront. The exploit's scope is restricted to the Shopper e-commerce application databases, leaving host operating systems and system availability unaffected.

Remediation & Hardening

Organizations must upgrade shopperlabs/shopper to version 2.8.0 or higher immediately to resolve the underlying vulnerability. This version incorporates the necessary Livewire attributes and authorization hooks to defend the product sub-forms. Update commands should be executed via Composer inside the application root directory.\n\nWhere an immediate upgrade to version 2.8.0 is prevented by operational dependencies, administrators should manually apply the security patch. This requires modifying the target sub-forms within packages/admin/src/Livewire/Components/Products/Form/ to introduce #[Locked] attributes and call $this->authorize('edit_products') inside the store routines.\n\nWeb Application Firewalls (WAFs) can be configured to detect or block manipulation patterns. WAF signatures should monitor asynchronous JSON payloads directed at Shopper's Livewire endpoints, searching for state updates containing mismatched product identifiers or anomalous transactional modifications triggered by unauthorized session tokens.

Fix Analysis (1)

Technical Appendix

CVSS Score
6.5/ 10
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N
EPSS Probability
0.03%
Top 91% most exploited

Affected Systems

Shopper Headless E-commerce Admin Panel

Affected Versions Detail

Product
Affected Versions
Fixed Version
shopper
shopperlabs
< 2.8.02.8.0
AttributeDetail
CWE IDCWE-862, CWE-807
Attack VectorNetwork (AV:N)
CVSS v3.1 Score6.5 (Medium)
EPSS Score0.00029 (Percentile: 8.91%)
Exploit StatusPoC / Conceptual
CISA KEV StatusNot Listed

MITRE ATT&CK Mapping

T1068Exploitation for Privilege Escalation
Privilege Escalation
CWE-862
Missing Authorization

Vulnerability Timeline

Patch committed by Arthur Monney
2026-05-11
Security Advisory GHSA-h4mp-g9c6-xwph published
2026-05-29
CVE-2026-47742 registered on NVD
2026-05-29

References & Sources

  • [1]Fix commit on GitHub

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•about 1 hour ago•CVE-2026-105742
3.7

CVE-2026-105742: Sensitive Custom Header Leakage in Docling Image Resource Loader

A technical analysis of CVE-2026-105742 (GHSA-p3fw-7699-7926), a sensitive information disclosure vulnerability in the Docling document processing library. Vulnerable versions of Docling indiscriminately forward custom HTTP headers, such as authentication tokens, to arbitrary third-party origins and during cross-origin redirects while fetching remote image assets from untrusted HTML and EPUB documents.

Alon Barad
Alon Barad
3 views•6 min read
•about 2 hours ago•CVE-2026-106121
4.9

CVE-2026-106121: Denial of Service via Infinite Loop in RabbitMQ Java Client JSON Parser

CVE-2026-106121 is a Denial of Service (DoS) vulnerability in the RabbitMQ Java Client library (amqp-client) affecting versions prior to 5.37.0. The vulnerability resides in the legacy, custom JSON-RPC parsing class com.rabbitmq.tools.json.JSONReader. When parsing malformed or truncated payloads ending within a quoted string or single-line comment, the parser's scanner enters an infinite loop. This occurs because the loop lacks an exit condition for the end-of-input sentinel character returned by the iterator, leading to either CPU exhaustion or a JVM crash from an OutOfMemoryError.

Amit Schendel
Amit Schendel
5 views•6 min read
•about 4 hours ago•CVE-2026-105646
4.9

CVE-2026-105646: Regular Expression Denial of Service in Ghost CMS Import Handlers

An authenticated Regular Expression Denial of Service (ReDoS) vulnerability in TryGhost Ghost (CMS) versions 4.0.0 through 6.66.x. An attacker with administrator privileges can upload crafted content import archives containing pathological directory names or migration patterns, triggering exponential backtracking in the Node.js V8 engine.

Alon Barad
Alon Barad
8 views•6 min read
•about 5 hours ago•CVE-2026-105645
4.9

CVE-2026-105645: Regular Expression Denial of Service (ReDoS) in Ghost CMS

CVE-2026-105645 is a regular expression denial of service (ReDoS) vulnerability affecting Ghost, an open-source Node.js content management system. The vulnerability exists within directory import handlers and the external media inliner, allowing authenticated administrators to trigger catastrophic backtracking in the V8 JavaScript engine, resulting in infinite loops, 100% CPU utilization, and total denial of service.

Amit Schendel
Amit Schendel
8 views•6 min read
•about 6 hours ago•CVE-2026-105644
6.8

CVE-2026-105644: Stored Cross-Site Scripting via Malicious SVG Content Import in Ghost CMS

A Stored Cross-Site Scripting (XSS) and Unrestricted Upload of File with Dangerous Type vulnerability in Ghost CMS (versions 4.0.0 to 6.66.x) allows remote attackers to execute arbitrary JavaScript in the context of an administrator's session. The flaw lies in the content import subsystem, which extracted and stored SVG files without sanitization or binary verification.

Amit Schendel
Amit Schendel
7 views•6 min read
•about 7 hours ago•CVE-2026-105643
7.3

CVE-2026-105643: Stored Cross-Site Scripting and Isolation Bypass in Ghost CMS

Stored Cross-Site Scripting (XSS) and origin isolation bypass vulnerability in Ghost CMS versions 6.34.0 through 6.66.1 allows low-privileged staff users to execute arbitrary JavaScript in the context of an administrator session via crafted embed cards.

Alon Barad
Alon Barad
9 views•6 min read