CVE-2026-62990
WysokieCVSS 8.7Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 16 - wyżej niż 16% wszystkich znanych CVE
Streszczenie
Podatność typu stored XSS w panelu administracyjnym Shopper pozwala uwierzytelnionemu pracownikowi z uprawnieniami do przesyłania treści na zapisanie wykonywalnych plików HTML lub SVG, które są serwowane bez nagłówka Content-Disposition i CSP. Gdy administrator otworzy taki plik, złośliwy skrypt wykonuje się w jego sesji i może utworzyć nowe konto administratora z wybranym hasłem. Problem dotyczy wersji 2.0.0–2.10.0 oraz 3.0.0-beta.1 i beta.2; naprawiono w 2.10.1 i 3.0.0-beta.3.
Ocena ryzyka
Atakujący z niskimi uprawnieniami może przejąć pełną kontrolę nad kontem administratora, uzyskując dostęp do danych klientów, zamówień, ustawień oraz zarządzania użytkownikami i rolami. Utworzone konto pozostaje aktywne nawet po usunięciu złośliwego pliku.
Rekomendacja
Zaktualizuj Shopper do wersji 2.10.1 lub 3.0.0-beta.3, a do czasu aktualizacji ogranicz uprawnienia do przesyłania plików i egzekwuj nagłówki Content-Disposition: attachment oraz restrykcyjny CSP dla katalogu /storage/.
Inne podatności w Shopper
Zobacz wszystkie- CVE-2026-47744Krytyczne
Shopper, panel administracyjny e-commerce headless, przed wersją 2.8.0 zawiera dwie wady autoryzacji w ustawieniach zespołu. Umożliwiają one każdemu uwierzytelnionemu użytkownikowi przejęcie systemu RBAC, tworzenie nowych ról, usuwanie innych użytkowników (w tym administratorów) oraz eskalację uprawnień do pełnego administratora panelu.
- CVE-2026-62991Średnie
Shopper to headless panel administracyjny e-commerce. W wersji przed 2.10.1 trasa szczegółów klienta /cpanel/customers/{user}/show sprawdza uprawnienie read_customers, ale wyszukuje dowolny identyfikator użytkownika bez zastosowania zakresu roli customers używanego na liście. Uwierzytelniony personel z access_dashboard i read_customers może zmienić ID użytkownika, aby uzyskać profile administratorów lub personelu, mimo braku view_users. Luka ujawnia dane profilu i umożliwia enumerację ID użytkowników; w połączeniu z delete_customers może umożliwić destrukcyjne działania wobec kont niebędących klientami. Problem naprawiono w wersji 2.10.1.
- CVE-2026-62989Wysokie
W Shopper przed wersją 2.10.0 komponent Livewire Variants w packages/admin/src/Livewire/Components/Products/Form/Variants.php udostępnia DeleteAction i DeleteBulkAction bez autoryzacji po stronie serwera. Uwierzytelniony pracownik z uprawnieniem edit_products może uzyskać podpisany stan komponentu i trwale usuwać pojedyncze lub wiele wariantów bez uprawnienia delete_product_variants. Może to zniszczyć katalog produktów i zakłócić działanie sklepu, koszyka i finalizacji zamówień. Problem naprawiono w wersji 2.10.0.
- CVE-2026-56828Wysokie
Shopper to headless panel administracyjny e-commerce. Od wersji 2.8.0 do 2.8.1 trzy komponenty Livewire zachowują luki w autoryzacji: pracownik z uprawnieniami tylko `view_users` i `access_dashboard` może zmieniać uprawnienia, tworzyć administratora lub usuwać role. Może nadać dowolne uprawnienia, w tym `access_setting` własnej roli, utworzyć wstępnie zweryfikowanego administratora z wybranym hasłem lub usunąć role, co umożliwia eskalację uprawnień i denial of service w RBAC.
- CVE-2026-114387Wysokie
W aplikacji Shopper od wersji 2.0.0 do 2.6.0 występuje brak autoryzacji, który pozwala użytkownikom panelu administracyjnego z uprawnieniem `access_dashboard` na tworzenie administratorów i nadawanie uprawnień. Atakujący mogą wywołać `CreateTeamMember::store()` lub `Permissions::togglePermission()` bezpośrednio przez `/livewire/update`, aby utworzyć konta administratorów i eskalować uprawnienia.
- CVE-2026-56826Średnie
W panelu administracyjnym Shopper (Headless e-commerce Admin Panel) w wersjach od 2.0.0 do 2.9.2 uwierzytelnieni użytkownicy z uprawnieniem access_setting mogli wywołać destrukcyjne akcje przez endpoint Livewire, ponieważ komponenty ustawień stref wysyłki, stref podatkowych i stawek podatkowych nie egzekwowały autoryzacji usuwania po stronie serwera. Możliwe było usunięcie opcji przewoźników, stref wysyłki, stref podatkowych oraz stawek podatkowych. Problem naprawiono w wersji 2.9.2.
- CVE-2026-56831Średnie
Shopper to headlessowy panel administracyjny e-commerce. W wersjach przed 2.9.0 interfejs administracyjny /cpanel/discounts akceptuje ujemne wartości rabatu fixed_amount, zapisuje je w sh_discounts i przekazuje przez DiscountCalculator.php oraz Calculate.php bez wymuszenia dodatniej wartości. Ponieważ obliczenia odejmują discountTotal od sumy częściowej, ujemny rabat zwiększa końcową wartość zamówienia zamiast ją zmniejszać.
- CVE-2026-56830Średnie
Shopper to headlessowy panel administracyjny e-commerce. W wersjach przed 2.9.2 wcześniejsza zmiana wzmacniająca podformularz produktu pozostawiła metodę store() w Media.php bez sprawdzenia autoryzacji edit_products używanego przez inne podformularze. Uwierzytelniony pracownik z uprawnieniem browse_products może wywołać akcję Livewire store i zastąpić miniaturę oraz obrazy galerii produktu, którego komponent Media został zainicjowany, nawet bez uprawnienia do edycji produktu.
- CVE-2026-56829Wysokie
W Shopper przed wersją 2.9.2 plik packages/admin/src/Livewire/Components/Products/VariantStock.php udostępnia stockAction() bez autoryzacji edit_product_variants i pozostawia public $variant mutowalnym po stronie klienta, ponieważ brakuje atrybutu Livewire Locked. Każdy uwierzytelniony użytkownik panelu administracyjnego, w tym personel z uprawnieniem tylko browse_products, może wybrać dowolny wariant produktu i lokalizację magazynu poprzez stan komponentu, a następnie przesłać dodatnią lub ujemną korektę ilości. Pozwala to personelowi z uprawnieniem tylko przeglądania zawyżać stany magazynowe, zmniejszać je lub wymuszać stany wyprzedania dla wariantów spoza bieżącej strony. Problem naprawiono w wersji 2.9.2.
- CVE-2026-56827Wysokie
W Shopper przed wersją 2.9.2 akcje grupowe groupedBulkActions w plikach packages/admin/src/Livewire/Pages/Attribute/Browse.php, Tag/Index.php, Brand/Index.php, Category/Index.php i Supplier/Index.php pomijają autoryzację po stronie serwera, podczas gdy strony wymagają jedynie uprawnień browse_attributes, browse_tags, browse_brands, browse_categories lub browse_suppliers. Użytkownik personelu z uprawnieniem tylko przeglądania może wywołać DeleteBulkAction, aby masowo usuwać atrybuty lub tagi, oraz BulkAction::make('enabled') lub BulkAction::make('disabled'), aby zmieniać widoczność atrybutów, marek, kategorii lub dostawców. Operacje te mogą zepsuć warianty produktów i poważnie zakłócić widoczność katalogu sklepu. Problem naprawiono w wersji 2.9.2.
Oryginalny opis (angielski, źródło NVD)
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.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

