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-47744

CVE-2026-47744: Improper Privilege Management and State Tampering in Shopper E-commerce Administration Panel

Alon Barad
Alon Barad
Software Engineer

Jun 5, 2026·6 min read·54 visits

Executive Summary (TL;DR)

A critical privilege escalation flaw in Shopper allows low-privilege panel users to bypass access controls, gain administrative privileges, and tamper with arbitrary orders and customer records due to missing authorization gates and unlocked Livewire properties.

Shopper, an open-source headless e-commerce administration panel, is vulnerable to a critical privilege escalation and state tampering vulnerability. By exploiting missing page authorization and improper permission checks in the team settings component, combined with unlocked Livewire model properties, any authenticated low-privilege user can escalate their role to administrator. This allows full control over the e-commerce configuration, customer data, and order states.

Vulnerability Overview

Shopper is an open-source headless e-commerce administration panel designed for the Laravel ecosystem, relying heavily on Filament and Laravel Livewire for its administrative user interface. The team settings component in Shopper manages administrator user roles, system permissions, and staff registration. Because these components are exposed over the network, they represent a high-exposure attack surface that requires stringent access control logic at multiple layers of execution.

CVE-2026-47744 identifies a critical vulnerability within this settings module, combining missing lifecycle authorization checks with improper privilege mapping. A secondary, systemic flaw in the application's implementation of Livewire allows state tampering and model hijacking on sensitive model properties. When these issues are chained, any authenticated panel user with minimal privileges can completely bypass administrative boundaries.

The vulnerability enables full horizontal and vertical privilege escalation, allowing an attacker to modify their own permissions and assume administrative control over the entire e-commerce infrastructure. Once escalated, the attacker gains the ability to manipulate orders, access customer personally identifiable information (PII), disrupt transactions, and compromise backend databases. The vulnerability was successfully resolved in version 2.8.0.

Root Cause Analysis

The primary defect arises from a complete absence of page-level component mount validation within the Team Settings index view. In Laravel Livewire, the mount() lifecycle hook serves as the gatekeeper for incoming requests, executing initialization logic and security verifications before hydrating the component. In affected versions of Shopper, the Shopper\Livewire\Pages\Settings\Team\Index component lacked a defined mount() method entirely, allowing any authenticated user to instantiate the component.

The secondary bug resides in the permission assignment component, located in Shopper\Livewire\Pages\Settings\Team\RolePermission. This component is responsible for saving and updating specific role permissions in the database. The component's write-oriented methods, including save(), were gated behind the 'view_users' permission check, which is a low-privilege permission intended for viewing directory information rather than managing roles.

Furthermore, the vulnerability is compounded by Livewire state tampering, where public Eloquent model properties are exposed without cryptographic signatures. Livewire dehydrates component states to the client-side browser and re-hydrates them upon consecutive requests. Because sensitive models like ShopperUser, Order, and Product were not locked on the server, attackers could intercept the HTTP traffic and alter the model's primary key (ID) in transit. During the hydration phase, the server binds the component to the attacker-supplied ID, leading to Indirect Object Reference (IDOR) execution across several data-modifying actions.

Code Analysis

To understand the mechanics of the vulnerability, we examine the differences between the vulnerable code and the official security patch applied in pull request #511. The developer introduced crucial validation steps in both the index page and the permission management classes.

In the index file packages/admin/src/Livewire/Pages/Settings/Team/Index.php, a mount() method was introduced to enforce administrative permission requirements on instantiation.

// BEFORE (Vulnerable - no mount method existed)
class Index extends Component implements HasActions, HasSchemas, HasTable
{
    use InteractsWithActions;
    use InteractsWithSchemas;
    use InteractsWithTable;
    // Missing mount() method allows unauthorized hydration
}
 
// AFTER (Patched - enforces authorization)
class Index extends Component implements HasActions, HasSchemas, HasTable
{
    use InteractsWithActions;
    use InteractsWithSchemas;
    use InteractsWithTable;
 
    public function mount(): void
    {
        // Require the view_users permission to render the component
        $this->authorize('view_users');
    }
}

The patch also corrected the authorization logic in packages/admin/src/Livewire/Pages/Settings/Team/RolePermission.php by changing the authorization gate from 'view_users' to 'access_setting'. Additionally, the developer systematically locked public model properties using the Livewire #[Locked] attribute to prevent model hijacking.

// AFTER (Patched - using #[Locked] attribute to prevent ID tampering)
use Livewire\Attributes\Locked;
use Livewire\Component;
 
class Addresses extends Component
{
    /** @var Model&ShopperUser */
    #[Locked] // Cryptographically signs property to prevent client-side ID mutation
    public ShopperUser $customer;
}

Exploitation Mechanics

An attacker can exploit this vulnerability using basic, low-privilege credentials. The attack operates entirely over HTTP, utilizing a series of standard HTTP POST requests to the Livewire endpoint /livewire/message/{component-name}.

The exploit begins with the attacker navigating to the team settings route /admin/settings/team. Because the parent component lacks a mount() method, the application returns the fully hydrated component structure, exposing public actions. The attacker then targets the permission adjustment handler.

By capturing the outgoing Livewire payload, the attacker replaces the parameters targeting their own role with permissions of higher value, such as manage_users and access_setting. Since the save() method on the server side only verifies the 'view_users' permission, which the low-privilege attacker already possesses, the transaction completes successfully. The application then writes the escalated role configurations directly to the database, granting the attacker complete administrative control over the backend.

Impact Assessment

The impact of CVE-2026-47744 is classified as critical, receiving a CVSS v3.1 base score of 9.9. This rating reflects the low attack complexity and the minimal privileges required to trigger the exploit, coupled with complete system compromise. The vulnerability changes the authorization scope, allowing an attacker to manipulate core framework states.

Upon successful privilege escalation, the attacker operates as a complete panel administrator. They can access, modify, or delete sensitive user databases, customer PII, transaction histories, and e-commerce inventory details. Furthermore, the attacker can lock out legitimate administrators by deleting their user profiles or modifying administrative credentials.

The state-tampering vector presents an immediate threat to business operations. By mutating model IDs on components that lack property locks, attackers can cancel active orders, adjust inventory levels, intercept shipping labels, and alter refund policies. This compromise results in complete loss of confidentiality, integrity, and availability for the affected e-commerce application.

Remediation & Hardening Guide

Remediation of CVE-2026-47744 requires an immediate update of the shopperlabs/shopper dependency to version 2.8.0 or higher. The patch incorporates explicit mount controls, proper permission mapping for all write actions, and systematic attribute locking on vulnerable models.

# Update Shopper package via Composer
composer update shopperlabs/shopper:^2.8.0
 
# Clear application and framework caches
php artisan cache:clear
php artisan view:clear
php artisan route:clear

In environments where an immediate package upgrade is not feasible, security engineers should implement temporary Web Application Firewall (WAF) rules. These rules must intercept all traffic destined for /livewire/message/shopper-livewire-pages-settings-team-* and block requests initiated by sessions lacking verified super-administrator roles.

Additionally, developers of custom Livewire applications must adopt defensive programming patterns. Every state-altering action must validate security policies manually, and all exposed model properties should be decorated with the #[Locked] attribute to prevent model hijacking.

Technical Appendix

CVSS Score
9.9/ 10
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H

Affected Systems

Shopper (shopperlabs/shopper)
AttributeDetail
CWE IDCWE-269
Attack VectorNetwork
CVSS Score9.9 (Critical)
Exploit StatusNo public PoC
Affected Versions< 2.8.0
Patched Version2.8.0
CWE-269
Improper Privilege Management

Vulnerability Timeline

Fix commit submitted by lead developer
2026-05-11
Official GitHub Security Advisory GHSA-c3qp-2ggw-xjg7 published
2026-05-29
CVE-2026-47744 assigned
2026-05-29

More Reports

•37 minutes ago•CVE-2026-72804
9.2

CVE-2026-72804: Authentication Bypass and Sensitive Information Exposure in SiYuan Graph Endpoints

SiYuan before version 3.7.4 contains an authentication bypass vulnerability within its graph visualization API endpoints, allowing unauthenticated remote attackers to extract sensitive node metadata and content from password-protected documents.

Alon Barad
Alon Barad
1 views•7 min read
•about 2 hours ago•CVE-2026-72802
6.9

CVE-2026-72802: Sensitive Information Disclosure via Administrative Asset Resolvers in SiYuan Note

SiYuan Note versions prior to v3.7.4 contain an information disclosure vulnerability in the `/api/asset/resolveAssetPath` endpoint. This endpoint returns absolute backend filesystem paths unmodified to CheckAuth-only requests. Low-privileged users or unauthenticated readers under publish mode can exploit this to leak the local directory layout, operating system username, and overall host deployment structure.

Amit Schendel
Amit Schendel
1 views•6 min read
•about 3 hours ago•CVE-2026-72801
8.7

CVE-2026-72801: Information Disclosure of Cryptographic Key Material in SiYuan

An access control vulnerability in the SiYuan personal knowledge management platform before version v3.7.4 exposes notebook encryption parameters to unauthenticated remote attackers. When the platform is configured in Publish Mode, specific API endpoints fail to enforce authorization checks. This access failure leaks key-derivation materials, password verifiers, and wrapped database keys to anonymous network clients.

Amit Schendel
Amit Schendel
3 views•6 min read
•about 5 hours ago•CVE-2026-72800
5.8

CVE-2026-72800: Missing Authorization in SiYuan Personal Knowledge Management System

A security vulnerability in the SiYuan local-first personal knowledge management system allows unauthenticated remote attackers to bypass logical boundary controls in publish (read-only) mode. By interacting with endpoints that lack proper publish-access validation, an attacker can disclose the application's internal database schemas and harvest block IDs across both public and private notebooks. This metadata leakage compromises the confidentiality of restricted documents and provides foundational information for targeted extraction.

Alon Barad
Alon Barad
3 views•5 min read
•about 6 hours ago•CVE-2026-72803
6.9

CVE-2026-72803: Information Disclosure via Missing Authorization in SiYuan API

An information disclosure vulnerability exists in the SiYuan personal knowledge management system versions prior to v3.7.4. The application fails to enforce publish-access filters on block attribute retrieval endpoints. Consequently, unauthenticated remote attackers can bypass document-level protection rules (such as password protection or disabled-publish flags) to retrieve sensitive block-level attributes, including aliases, memos, block names, and custom metadata fields, by querying the API using guessed or known block IDs.

Alon Barad
Alon Barad
5 views•7 min read
•about 7 hours ago•GHSA-7J72-F6WG-CXW6
8.6

CVE-2026-68584: Authentication Bypass via Auxiliary Content Endpoints in SiYuan

An authentication bypass vulnerability (classified as CWE-288) exists in the publish-mode component of SiYuan, a Go-based note-taking application. This security flaw allows unauthenticated remote attackers to bypass password-protected note boundaries by leveraging auxiliary block endpoints that fail to enforce document access checks. Attackers can exploit this issue by first harvesting document metadata via a public search endpoint and subsequently fetching full rendered document contents using vulnerable block endpoints. This technical analysis explores the root cause, exploitation methodology, and remediation path.

Alon Barad
Alon Barad
3 views•7 min read