/

CVE-2026-114387

Severity:

HIGH RISK

(8.8)

Missing Authorization (CWE-862) in Shopper Admin Panel

CVE-2026-114387

Deferred

Vulnerability type

Category:

Missing Authorization

CWE:

CWE-862

Impact:

Privilege Escalation and Unauthorized Administrator Creation

Severity:

HIGH RISK

(8.8)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

Shopper contains a missing authorization vulnerability in its administrative functions, allowing users with only dashboard access to create administrator accounts and grant additional permissions. The issue becomes risky when an authenticated admin-panel user can directly invoke authorization-sensitive actions through the Livewire update endpoint without a server-side privilege check.

Shopper contains a missing authorization vulnerability in its administrative functions, allowing users with only dashboard access to create administrator accounts and grant additional permissions. The issue becomes risky when an authenticated admin-panel user can directly invoke authorization-sensitive actions through the Livewire update endpoint without a server-side privilege check.

Affected context

The vulnerability affects Shopper deployments in the affected 2.0.0 through before-2.6.0 range when users possessing only the access_dashboard capability can reach administrative Livewire actions. The relevant behavior occurs in administrator creation and permission-management functions exposed through the /livewire/update request path.

The vulnerability affects Shopper deployments in the affected 2.0.0 through before-2.6.0 range when users possessing only the access_dashboard capability can reach administrative Livewire actions. The relevant behavior occurs in administrator creation and permission-management functions exposed through the /livewire/update request path.

Exploit preconditions

  • Attack surface: The Shopper administrative panel and its Livewire update endpoint
  • Required access: An authenticated user with the access_dashboard permission
  • Trigger point: Direct invocation of administrator-creation or permission-toggle actions
  • Why exploitation is possible: Sensitive actions do not consistently verify that the caller holds the required administrative privileges
  • Attack surface: The Shopper administrative panel and its Livewire update endpoint
  • Required access: An authenticated user with the access_dashboard permission
  • Trigger point: Direct invocation of administrator-creation or permission-toggle actions
  • Why exploitation is possible: Sensitive actions do not consistently verify that the caller holds the required administrative privileges

Why this happens

The underlying bug is a missing server-side authorization check on privileged application actions. Shopper permits a caller who has limited dashboard access to reach functions such as CreateTeamMember::store() and Permissions::togglePermission() without independently enforcing the permissions required for administrator creation or privilege modification. This maps to CWE-862 because access-control decisions are absent or insufficient at the point where the protected operation is performed.

The underlying bug is a missing server-side authorization check on privileged application actions. Shopper permits a caller who has limited dashboard access to reach functions such as CreateTeamMember::store() and Permissions::togglePermission() without independently enforcing the permissions required for administrator creation or privilege modification. This maps to CWE-862 because access-control decisions are absent or insufficient at the point where the protected operation is performed.

Potential impact

  • An attacker may create unauthorized administrator accounts.
  • An attacker could grant elevated permissions to existing or newly created accounts.
  • The application may suffer complete administrative-account compromise.
  • Sensitive data, configuration, and other administrative functions could be exposed or modified.
  • The compromised account could enable further abuse of connected application resources.
  • An attacker may create unauthorized administrator accounts.
  • An attacker could grant elevated permissions to existing or newly created accounts.
  • The application may suffer complete administrative-account compromise.
  • Sensitive data, configuration, and other administrative functions could be exposed or modified.
  • The compromised account could enable further abuse of connected application resources.

General mitigation guidance

Mitigation typically focuses on enforcing authorization at every privileged

action rather than relying on UI visibility or route reachability.

Common defensive patterns include:

  • Apply explicit, server-side policy checks to administrator creation and permission-management operations.
  • Deny access by default and require the specific privilege needed for each sensitive action.
  • Revalidate authorization within Livewire action handlers, including when actions are called directly.
  • Treat client-controlled component calls and request parameters as untrusted.
  • Separate dashboard viewing permissions from account-management and access-control privileges.
  • Record and review administrator creation, role changes, and permission updates.
  • Run administrative services with only the minimum privileges needed for their operating context.

Mitigation typically focuses on enforcing authorization at every privileged

action rather than relying on UI visibility or route reachability.

Common defensive patterns include:

  • Apply explicit, server-side policy checks to administrator creation and permission-management operations.
  • Deny access by default and require the specific privilege needed for each sensitive action.
  • Revalidate authorization within Livewire action handlers, including when actions are called directly.
  • Treat client-controlled component calls and request parameters as untrusted.
  • Separate dashboard viewing permissions from account-management and access-control privileges.
  • Record and review administrator creation, role changes, and permission updates.
  • Run administrative services with only the minimum privileges needed for their operating context.

How teams detect issues like this

Organizations commonly detect missing authorization through:

  • Static analysis that identifies sensitive methods lacking policy, guard, or capability checks.
  • Code review of every controller, Livewire action, API handler, and background operation that changes users or permissions.
  • Tests that invoke privileged operations directly with users holding progressively weaker permissions.
  • Dynamic testing of administrative endpoints and component actions using least-privileged accounts.
  • Policy enforcement requiring authorization tests for role-management and access-control changes.
  • Audit-log monitoring for unexpected administrator creation or permission changes.

Automated application-security and code-review tools may help identify unguarded sensitive operations, but authorization behavior should also be verified with integration tests.

Organizations commonly detect missing authorization through:

  • Static analysis that identifies sensitive methods lacking policy, guard, or capability checks.
  • Code review of every controller, Livewire action, API handler, and background operation that changes users or permissions.
  • Tests that invoke privileged operations directly with users holding progressively weaker permissions.
  • Dynamic testing of administrative endpoints and component actions using least-privileged accounts.
  • Policy enforcement requiring authorization tests for role-management and access-control changes.
  • Audit-log monitoring for unexpected administrator creation or permission changes.

Automated application-security and code-review tools may help identify unguarded sensitive operations, but authorization behavior should also be verified with integration tests.

Sources

SourceLink
github.comgithub.com/shopperlabs/shopper/blob/v2.5.0/packages/admin/src/Livewire/Components/Settings/Team/Permissions.php#L18-L49
github.comgithub.com/shopperlabs/shopper/blob/v2.5.0/packages/admin/src/Livewire/SlideOvers/CreateTeamMember.php#L102-L123
github.comgithub.com/shopperlabs/shopper/commit/d1ac6cee2f02e5a84262fbeb87c689bd38df672f
github.comgithub.com/shopperlabs/shopper/issues/433
github.comgithub.com/shopperlabs/shopper/releases/tag/v2.6.0
vulncheck.comvulncheck.com/advisories/shopper-2.0.0-before-2.6.0-privilege-escalation-via-unguarded-livewire-components

Frequently asked

questions

An authenticated admin-panel user with only the access_dashboard permission may be able to exploit the issue if the affected administrative actions remain reachable without stronger authorization checks.

It generally requires access to the Shopper application and its Livewire update endpoint, along with valid credentials for a user possessing the required limited dashboard access.

Enforce explicit, server-side authorization for administrator creation and permission changes inside the action handlers themselves, using deny-by-default policies.

Treat every callable application action as independently protected, add negative authorization tests for lower-privileged roles, and monitor audit logs for unexpected role or permission changes.

An authenticated admin-panel user with only the access_dashboard permission may be able to exploit the issue if the affected administrative actions remain reachable without stronger authorization checks.

It generally requires access to the Shopper application and its Livewire update endpoint, along with valid credentials for a user possessing the required limited dashboard access.

Enforce explicit, server-side authorization for administrator creation and permission changes inside the action handlers themselves, using deny-by-default policies.

Treat every callable application action as independently protected, add negative authorization tests for lower-privileged roles, and monitor audit logs for unexpected role or permission changes.

Find out what's already
exploitable in your codebase.