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·28 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

•about 3 hours ago•CVE-2026-47296
7.8

CVE-2026-47296: Elevation of Privilege via SQL Injection in Microsoft SQL Server Internal Stored Procedures

CVE-2026-47296 is a high-severity local Elevation of Privilege (EoP) vulnerability in Microsoft SQL Server. The issue stems from the improper neutralization of special elements within internal database routines, allowing a low-privileged authenticated user to execute arbitrary database queries with the privileges of the database owner or system administrator. Microsoft has addressed this vulnerability in its July 2026 security updates.

Amit Schendel
Amit Schendel
3 views•5 min read
•about 3 hours ago•CVE-2026-47295
8.8

CVE-2026-47295: SQL Injection and Privilege Escalation in Microsoft SQL Server

CVE-2026-47295 is a high-severity elevation of privilege vulnerability in Microsoft SQL Server (2016 through 2025). An authenticated, low-privileged attacker can execute remote SQL injection commands within system stored procedures to elevate permissions to sysadmin.

Amit Schendel
Amit Schendel
6 views•6 min read
•2 days ago•GHSA-8RQH-VXPR-X77P
4.3

GHSA-8RQH-VXPR-X77P: Stored Cross-Site Scripting via MIME Type Spoofing in Plone REST API

A stored Cross-Site Scripting (XSS) vulnerability exists within plone.restapi, the REST API package for Plone content management system. By supplying a spoofed input MIME type (text/x-html-safe), an attacker can mislead the rendering layer (plone.app.textfield) into assuming that the supplied content is already sanitized. This causes the system to skip the safe_html transform, allowing arbitrary JavaScript to execute in the victim's browser when they view the compromised page.

Amit Schendel
Amit Schendel
11 views•7 min read
•2 days ago•CVE-2026-11400
8.0

CVE-2026-11400: Privilege Escalation via Untrusted Search Path in AWS Advanced JDBC Wrapper

An untrusted search path vulnerability in the GlobalDatabasePlugin component of the AWS Advanced JDBC Wrapper for Amazon Aurora PostgreSQL allows authenticated, low-privilege database users to hijack administrative session queries. By defining a custom function in a writable schema such as the public schema, an attacker can hijack queries executed automatically during driver-level topology detection. When a highly privileged database user connects to the database utilizing an affected version of the wrapper, the custom function executes under their security context, enabling remote privilege escalation to rds_superuser.

Alon Barad
Alon Barad
11 views•6 min read
•2 days ago•CVE-2026-27771
8.2

CVE-2026-27771: Authentication Bypass and Information Disclosure in Gitea Container and Composer Registries

CVE-2026-27771 represents a critical security flaw in Gitea and Forgejo (up to and including version 1.26.1) involving missing authorization checks (CWE-862). Unauthenticated remote attackers can query, enumerate, and download private container images from the OCI-compliant container registry. Additionally, unauthorized users can retrieve private or internal source repository URLs via the Composer package registry metadata API. A public proof-of-concept exists, and threat metrics indicate highly active scanning and exploitation risks.

Alon Barad
Alon Barad
45 views•7 min read
•2 days ago•GHSA-CVPC-HCCG-WMW4
8.8

GHSA-CVPC-HCCG-WMW4: Missing Authorization in Formie Administrative Settings Allows Privilege Escalation

A missing authorization vulnerability in the Formie plugin for Craft CMS prior to version 3.1.28 allows low-privileged Control Panel users to read and modify sensitive administrative settings, configuration options, and third-party integrations.

Amit Schendel
Amit Schendel
8 views•6 min read