Skip to content
Heist/ feed
Back to feed
High

Shopper: read-only team permissions allow administrator creation and permission escalation

Type: advisorySources: Official CVE List

Shopper is a Headless e-commerce Admin Panel. From 2.8.0 until 2.8.1, three Shopper Livewire admin components retain authorization gaps after the earlier team-settings authorization fix. A staff member with only `view_users` and `access_dashboard` can mutate permissions, create an administrator, or delete roles. In `packages/admin/src/Livewire/Components/Settings/Team/Permissions.php`, `togglePermission` and `removePermission` authorize `view_users` rather than the stronger `access_setting` permission; `packages/admin/resources/views/livewire/components/settings/team/permissions.blade.php` exposes permission IDs in `wire:click` handlers. The attacker can grant arbitrary permissions to the bound role, including `access_setting` on the attacker's own role, or delete permission definitions. In `packages/admin/src/Livewire/SlideOvers/CreateTeamMember.php`, `mount()` and `store()` also accept `view_users`, and the client-selected `role_id` can identify the admin role, allowing creation of a pre-verified administrator with an attacker-chosen password. In `packages/admin/src/Livewire/Pages/Settings/Team/RolePermission.php`, `deleteAction` has no action authorization and is only conditioned on `can_be_removed`, while page access requires `view_users`. Deleting a removable role removes access for assigned users, enabling RBAC denial of service as well as privilege escalation. This issue is fixed in version 2.8.1.

Products
shopper
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-56828
Confirmed fixed CVEs
Not specified
Updated in this feed
1 Nov 2026, 16:29 UTC · Revision 1

Source evidence

Shopper: read-only team permissions allow administrator creation and permission escalation

core-cve · Original source

Published 28 Oct 2026, 15:40 UTC

Shopper is a Headless e-commerce Admin Panel. From 2.8.0 until 2.8.1, three Shopper Livewire admin components retain authorization gaps after the earlier team-settings authorization fix. A staff member with only `view_users` and `access_dashboard` can mutate permissions, create an administrator, or delete roles. In `packages/admin/src/Livewire/Components/Settings/Team/Permissions.php`, `togglePermission` and `removePermission` authorize `view_users` rather than the stronger `access_setting` permission; `packages/admin/resources/views/livewire/components/settings/team/permissions.blade.php` exposes permission IDs in `wire:click` handlers. The attacker can grant arbitrary permissions to the bound role, including `access_setting` on the attacker's own role, or delete permission definitions. In `packages/admin/src/Livewire/SlideOvers/CreateTeamMember.php`, `mount()` and `store()` also accept `view_users`, and the client-selected `role_id` can identify the admin role, allowing creation of a pre-verified administrator with an attacker-chosen password. In `packages/admin/src/Livewire/Pages/Settings/Team/RolePermission.php`, `deleteAction` has no action authorization and is only conditioned on `can_be_removed`, while page access requires `view_users`. Deleting a removable role removes access for assigned users, enabling RBAC denial of service as well as privilege escalation. This issue is fixed in version 2.8.1.

cve:CVE-2026-56828

shopper

Fixed versions: Not specified

Complete source record
{
  "id": "d498145059a638b025fe01fc425335c5c1fa70a730f6c5c1bfd2fb5a73fdff22",
  "url": "https://www.cve.org/CVERecord?id=CVE-2026-56828",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Shopper: read-only team permissions allow administrator creation and permission escalation",
    "summary": "Shopper is a Headless e-commerce Admin Panel. From 2.8.0 until 2.8.1, three Shopper Livewire admin components retain authorization gaps after the earlier team-settings authorization fix. A staff member with only `view_users` and `access_dashboard` can mutate permissions, create an administrator, or delete roles. In `packages/admin/src/Livewire/Components/Settings/Team/Permissions.php`, `togglePermission` and `removePermission` authorize `view_users` rather than the stronger `access_setting` permission; `packages/admin/resources/views/livewire/components/settings/team/permissions.blade.php` exposes permission IDs in `wire:click` handlers. The attacker can grant arbitrary permissions to the bound role, including `access_setting` on the attacker's own role, or delete permission definitions. In `packages/admin/src/Livewire/SlideOvers/CreateTeamMember.php`, `mount()` and `store()` also accept `view_users`, and the client-selected `role_id` can identify the admin role, allowing creation of a pre-verified administrator with an attacker-chosen password. In `packages/admin/src/Livewire/Pages/Settings/Team/RolePermission.php`, `deleteAction` has no action authorization and is only conditioned on `can_be_removed`, while page access requires `view_users`. Deleting a removable role removes access for assigned users, enabling RBAC denial of service as well as privilege escalation. This issue is fixed in version 2.8.1.",
    "evidence": "cve:CVE-2026-56828",
    "products": [
      {
        "name": {
          "value": "shopper",
          "evidence": "/containers/cna/affected/0/product"
        },
        "prerequisites": [],
        "fixed_versions": [],
        "affected_versions": []
      }
    ],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-56828",
      "aliases": [
        "CVE-2026-56828"
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "scope": "UNCHANGED",
            "version": "3.1",
            "baseScore": 8.8,
            "attackVector": "NETWORK",
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
            "integrityImpact": "HIGH",
            "userInteraction": "NONE",
            "attackComplexity": "LOW",
            "availabilityImpact": "HIGH",
            "privilegesRequired": "LOW",
            "confidentialityImpact": "HIGH"
          }
        }
      ],
      "affected": [
        {
          "vendor": "shopperlabs",
          "product": "shopper",
          "versions": [
            {
              "status": "affected",
              "version": ">= 2.8.0, < 2.8.1"
            }
          ]
        }
      ],
      "modified": "2026-10-28T15:40:39.294Z",
      "provider": "cve",
      "references": [
        "https://github.com/shopperlabs/shopper/security/advisories/GHSA-j328-xmgp-j4q3",
        "https://github.com/shopperlabs/shopper/pull/514",
        "https://github.com/shopperlabs/shopper/commit/ac9a76044a8e4a2b570b438d66cf3007f3dc479e",
        "https://github.com/shopperlabs/shopper/compare/v2.8.1...v2.9.2",
        "https://github.com/shopperlabs/shopper/releases/tag/v2.8.1"
      ],
      "provider_metadata": {
        "cna": {
          "orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
          "shortName": "GitHub_M",
          "dateUpdated": "2026-10-28T15:40:39.294Z"
        }
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-56828",
        "evidence": "/cveMetadata/cveId"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/containers/cna/metrics"
  },
  "source_id": "core-cve",
  "document_id": 457886,
  "published_at": "2026-10-28T15:40:39.294+00:00"
}