Description
Shopper is a Headless e-commerce Admin Panel. In versions from 2.0.0 prior to 2.10.1 and in the 3.0.0 prereleases beta.1 and beta.2, authenticated back-office staff with a content-upload permission can store executable media on the administrator's own origin. In the 2.x implementation, relevant upload permissions include `edit_products` or `add_brands`, and `packages/admin/config/media.php` allows `image/svg+xml` in every media collection, including image fields whose image/* validation also accepts SVG. The product files collection in `packages/admin/src/Livewire/Components/Products/Form/Files.php` has no MIME restriction and accepts `text/html` as well. Media is served inline from the `public` disk under `/storage/` with its own content type, without `Content-Disposition: attachment` or a `Content-Security-Policy`. When an administrator opens an uploaded HTML or SVG file, stored script executes in that administrator's session. In 2.x, the script can invoke `packages/admin/src/Livewire/SlideOvers/CreateTeamMember.php`, whose `store()` checks `access_setting` held by the viewing administrator but trusts client-supplied `role_id`, to create a new attacker-controlled administrator with a chosen password. This account persists after the uploaded file is deleted and gives access to customer data, orders, settings, and user/role management; the same script can exfiltrate data or grant permissions to the attacker's account. Direct account creation by the low-privileged uploader is blocked, so exploitation requires the administrator to open the file. The 3.x prerelease line already excludes SVG but still allows executable product files. This issue is fixed in versions 2.10.1 and 3.0.0-beta.3.
Published: 2026-10-30
Score: 8.7 High
EPSS: n/a
KEV: No
Impact: Stored XSS that can create a persistent administrator account via unauthorized privilege escalation
Action: Immediate Patch
AI Analysis

Impact

Authenticated back‑office staff with content‑upload permissions can store SVG or HTML files that the application serves inline. When a site administrator opens one of these files, the embedded script runs in the administrator’s session and exploits a flaw in the user‑creation component that trusts a client‑supplied role identifier. This allows the attacker to create a new administrator account with a chosen password, granting full access to customer data, orders, and system settings. The new account survives after the malicious file is removed, making the compromise persistent and potentially more damaging than a single session hijack. The weakness is a stored cross‑site scripting flaw (CWE‑79) coupled with improper privilege validation (CWE‑269).

Affected Systems

Shopper Labs’ Shopper Headless e‑commerce Admin Panel. Versions before 2.10.1 in the 2.x line and before 3.0.0‑beta.3 in the 3.x prerelease line are affected. The problem is fixed in 2.10.1 and 3.0.0‑beta.3; earlier releases require remediation before using them in production.

Risk and Exploitability

The CVSS score of 8.7 indicates high severity. EPSS is not available, so no precise exploitation probability can be quoted, but the vulnerability is not included in the CISA KEV catalog. Exploitation requires an authenticated staff member to upload a malicious SVG or HTML file and an administrator to open the file in a browser. After opening, the attacker can create a new administrator account, giving persistent and full‑privilege access. The attack is therefore medium‑to‑high risk depending on the site’s administrative review practices; if admins routinely open uploaded content, the vulnerability could be exploited quickly.

Generated by OpenCVE AI on October 30, 2026 at 22:36 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade Shopper to version 2.10.1 or 3.0.0‑beta.3, where the MIME validation and role‑creation logic have been corrected
  • Modify upload rules so that SVG and text/html MIME types are rejected for all media collections used by admin users
  • Apply a Content‑Security‑Policy that disallows inline scripts for served media, and add a Content‑Disposition: attachment header so that uploaded files are not automatically rendered in the browser
  • Ensure server‑side validation of role identifiers when creating new users, rejecting any role supplied from client input
  • If upgrade is impossible, disable the ability for administrators to open or view uploaded files until the upload rules and policy checks are enforced

Generated by OpenCVE AI on October 30, 2026 at 22:36 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 30 Oct 2026 22:45:00 +0000

Type Values Removed Values Added
First Time appeared Shopperlabs
Shopperlabs shopper
Vendors & Products Shopperlabs
Shopperlabs shopper

Fri, 30 Oct 2026 21:15:00 +0000

Type Values Removed Values Added
Description Shopper is a Headless e-commerce Admin Panel. In versions from 2.0.0 prior to 2.10.1 and in the 3.0.0 prereleases beta.1 and beta.2, authenticated back-office staff with a content-upload permission can store executable media on the administrator's own origin. In the 2.x implementation, relevant upload permissions include `edit_products` or `add_brands`, and `packages/admin/config/media.php` allows `image/svg+xml` in every media collection, including image fields whose image/* validation also accepts SVG. The product files collection in `packages/admin/src/Livewire/Components/Products/Form/Files.php` has no MIME restriction and accepts `text/html` as well. Media is served inline from the `public` disk under `/storage/` with its own content type, without `Content-Disposition: attachment` or a `Content-Security-Policy`. When an administrator opens an uploaded HTML or SVG file, stored script executes in that administrator's session. In 2.x, the script can invoke `packages/admin/src/Livewire/SlideOvers/CreateTeamMember.php`, whose `store()` checks `access_setting` held by the viewing administrator but trusts client-supplied `role_id`, to create a new attacker-controlled administrator with a chosen password. This account persists after the uploaded file is deleted and gives access to customer data, orders, settings, and user/role management; the same script can exfiltrate data or grant permissions to the attacker's account. Direct account creation by the low-privileged uploader is blocked, so exploitation requires the administrator to open the file. The 3.x prerelease line already excludes SVG but still allows executable product files. This issue is fixed in versions 2.10.1 and 3.0.0-beta.3.
Title Shopper: same-origin SVG and HTML uploads enable stored XSS and persistent administrator creation
Weaknesses CWE-269
CWE-79
References
Metrics cvssV3_1

{'score': 8.7, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N'}


Subscriptions

Shopperlabs Shopper
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-10-30T21:05:51.880Z

Reserved: 2026-07-14T23:10:57.031Z

Link: CVE-2026-62990

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Deferred

Published: 2026-10-30T21:17:16.030

Modified: 2026-10-30T21:17:16.157

Link: CVE-2026-62990

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-30T22:45:14Z

Weaknesses
  • CWE-269

    Improper Privilege Management

  • CWE-79

    Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')