CVE-2026-56831
ŚrednieCVSS 6.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 34 - wyżej niż 34% wszystkich znanych CVE
Streszczenie
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ć.
Ocena ryzyka
Nieprawidłowe rekordy rabatów mogą powodować błędne ceny i naruszenie integralności danych finansowych, choć doradztwo nie potwierdza ścieżki wykorzystania przez klienta.
Rekomendacja
Zaktualizuj Shopper do wersji 2.9.0 lub nowszej oraz zweryfikuj istniejące rekordy rabatów pod kątem wartości ujemnych.
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-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.
- CVE-2026-56825Wysokie
W Shopper przed wersją 2.9.2 plik packages/admin/src/Livewire/Components/Collection/CollectionProducts.php udostępnia Action::make('delete') i DeleteBulkAction::make() bez autoryzacji delete_collections, a public Collection $collection pozostaje mutowalny po stronie klienta, ponieważ brakuje atrybutu Livewire Locked. Uwierzytelniony użytkownik personelu z uprawnieniem tylko browse_collections może wywołać akcję usuwania Livewire, podstawić dowolny identyfikator kolekcji i odłączyć wybrane produkty lub opróżnić kolekcję. Może to zakłócić działanie stron docelowych katalogu i promocji powiązanych z docelową kolekcją. Problem naprawiono w wersji 2.9.2.
- CVE-2026-47743Wysokie
W panelu administracyjnym Shopper (headless e-commerce) przed wersją 2.8.0 wykryto trzy powiązane defekty: brak blokady identyfikatorów modeli Eloquent w komponentach Livewire umożliwiał manipulację danymi, przesyłanie hasła w postaci jawnego tekstu przez ukryte pole formularza prowadziło do ujawnienia wrażliwych danych, a pole kodu kreskowego produktu było renderowane bez odpowiedniego escapingu, co pozwalało na trwałe przechowywanie złośliwego kodu XSS.
- CVE-2026-47745Średnie
Shopper przed wersją 2.8.0 nie sprawdza uprawnień dla akcji włączania/wyłączania, edycji i usuwania w tabelach admina dla PaymentMethods, Currencies i Carriers. Użytkownik z niskimi uprawnieniami może wyłączyć metody płatności, zmienić domyślną walutę lub wyłączyć przewoźników.
- CVE-2026-47742Średnie
Shopper przed wersją 2.8.0 zawiera podatność w komponentach Livewire używanych w edytorze produktów (Edit, Inventory, Seo, Shipping, Files), gdzie metoda store() nie sprawdza autoryzacji. Każdy uwierzytelniony użytkownik może modyfikować ceny, stany magazynowe, metadane SEO, wymiary wysyłki i załączniki dowolnego produktu.
- CVE-2026-47741Średnie
W Shopper, headless e-commerce panelu administracyjnym, przed wersją 2.8.0, funkcja CreateOrderFromCartAction::execute tworzyła zamówienie przed sprawdzeniem i inkrementacją licznika total_use rabatu. Przy współbieżnym obciążeniu (Black Friday, wyprzedaż błyskawiczna, wiralny kupon) globalny limit użycia był cicho przekraczany: zamówienia były zatwierdzane z pełnym rabatem, podczas gdy licznik blokował się na limicie. Sprzedawca nie miał sygnału o nadmiernym wykorzystaniu rabatu.
- CVE-2026-47740Wysokie
Shopper, panel administracyjny e-commerce typu Headless, przed wersją 2.8.0 zawiera podatność polegającą na tym, że wiele akcji Filament w szczegółach zamówienia i tabeli wysyłek może być wywoływanych przez uwierzytelnionego użytkownika o niskich uprawnieniach bez wymaganych uprawnień do modyfikacji zamówień. Akcje takie jak anulowanie, oznaczenie jako zapłacone, ukończone, przechwycenie płatności, archiwizacja i rozpoczęcie przetwarzania były dostępne z uprawnieniami tylko do odczytu read_orders, a nie wymaganymi edit_orders. Funkcja capturePayment mogła faktycznie przechwycić środki w systemie płatności. Użytkownik z dostępem tylko do odczytu mógł zmieniać cykl życia każdego zamówienia i inicjować rzeczywiste przechwycenia płatności.
Oryginalny opis (angielski, źródło NVD)
Shopper is a Headless e-commerce Admin Panel. Prior to 2.9.0, the /cpanel/discounts administrative interface accepts negative fixed_amount discount values, persists them in sh_discounts, and passes them through vendor/shopper/cart/src/Discounts/DiscountCalculator.php and vendor/shopper/cart/src/Pipelines/Calculate.php without enforcing a positive-value invariant. Because the calculation subtracts discountTotal from the subtotal, a negative discount increases the resulting order total instead of reducing it. Malformed discount records can therefore cause incorrect pricing and financial data integrity failures, although the advisory does not establish a customer-facing exploitation path. This issue is fixed in version 2.9.0.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

