CVE-2026-78065
WysokieCVSS 7.1Streszczenie
W rozszerzeniu Joomla J2Store (wersje 1.0.0-3.3.21, 4.0.0-4.0.21, 4.1.0-4.1.6) wykryto podatność IDOR w funkcji editAddress(), która umożliwia każdemu uwierzytelnionemu użytkownikowi dostęp do adresów zamówień gości. Funkcja przekierowywała nie-właścicieli tylko wtedy, gdy załadowany wiersz adresu miał niepusty user_id należący do kogoś innego. Wiersze adresów zamówień gości mają pusty user_id, więc ten warunek nigdy nie był spełniony — każdy zalogowany użytkownik, zgadując mały, sekwencyjny address_id, mógł zobaczyć pełne imię, adres ulicy i numer telefonu klienta-gościa w formularzu edycji.
Ocena ryzyka
Ryzyko obejmuje ujawnienie danych osobowych klientów (imię, adres, telefon) nieuprawnionym użytkownikom, co narusza prywatność i może prowadzić do kradzieży tożsamości.
Rekomendacja
Zaleca się aktualizację J2Store do wersji zawierającej poprawkę oraz wdrożenie kontroli dostępu opartej na właścicielu dla wszystkich operacji na adresach.
Inne podatności w J2Store
Zobacz wszystkie- CVE-2026-78064Wysokie
W rozszerzeniu Joomla J2Store (wersje 1.0.0-3.3.21, 4.0.0-4.0.21, 4.1.0-4.1.6) wykryto podatność umożliwiającą anonimowe manipulowanie rekordami koszyka poprzez odziedziczone zadanie `save` z FOF. Plik `fof.xml` przyznaje zadaniom widoku `carts` dziką kartę ACL `true`, a FOF egzekwuje tokeny CSRF tylko na żądaniach HTML backendu, nie na żądaniach frontendu `format=raw`. `J2StoreControllerCarts` ograniczył `remove()` do własnej sesji wywołującego, ale nie nadpisał ogólnego zadania `save` FOF, więc pozostało ono dostępne do wstawiania nowych wierszy koszyka z wybranym przez atakującego `user_id`/`session_id` lub nadpisywania istniejącego wiersza po id.
- CVE-2026-78000Średnie
Rozszerzenie Joomla - j2commerce.com - zawiera odzwierciedlony XSS poprzez parametry `filter_tag`, `pricefrom` i `priceto` w J2Store 1.0.0-3.3.21, 4.0.0-4.0.21, 4.1.0-4.1.6. Cztery procedury obsługi zadań akceptowały zakodowany w base64 adres URL od użytkownika i przekierowywały do niego bez weryfikacji hosta docelowego, umożliwiając phishing przy użyciu zaufanej domeny sklepu. Nie wymaga uwierzytelnienia.
- CVE-2026-77999Wysokie
W rozszerzeniu Joomla J2Store (wersje 1.0.0-3.3.21, 4.0.0-4.0.21, 4.1.0-4.1.6) wykryto podatność umożliwiającą nieuwierzytelnione fałszowanie wywołania zwrotnego PayPal, prowadzące do oszustwa związanego z potwierdzeniem zamówienia. Listener PayPal IPN akceptował odpowiedzi `UNVERIFIED` i każdą nie-`INVALID` jako ważne, wyłączał weryfikację SSL (CURLOPT_SSL_VERIFYPEER) i przechowywał werdykt w polu, którego nic później nie sprawdzało — więc przetwarzanie kontynuowało się niezależnie od wyniku. Dodatkowo porównanie zapłaconej kwoty działało tylko, gdy `mc_gross` było liczbą dodatnią; pominięcie pola w treści POST (`floatval(null) == 0`) pomijało sprawdzenie. W połączeniu z `receiver_email` skonfigurowanym przez sprzedawcę i sekwencyjnym, możliwym do odgadnięcia identyfikatorem zamówienia odczytanym z pola `custom`, anonimowy POST wystarczył, aby przenieść oczekujące zamówienie bezpośrednio do statusu `CONFIRMED` bez płatności lub wymusić na innym kliencie zmianę statusu oczekującego zamówienia na `FAILED`. `paypalv2.php` nie przeprowadzał żadnej kontroli kwoty w żadnych okolicznościach.
- CVE-2026-78069Krytyczne
Rozszerzenie Joomla - j2commerce.com - Brak autoryzacji w łańcuchu delegacji kontrolera Apps w J2Store 1.0.0-3.3.21, 4.0.0-4.0.21, 4.1.0-4.1.6 - Ścieżka delegacji appTask w J2StoreControllerApps tworzy kontrolery wtyczek bez żadnej kontroli ACL. Ponadto applocalizationdata::getInstallerTool() używa nazwy tabeli zależnej od wywołującego bez listy dozwolonych, co umożliwia odczyt/wykonanie plików z możliwością path traversal.
- CVE-2026-74252Wysokie
Rozszerzenie Joomla J2Store (wersje 1.0.0-3.3.20, 4.0.0-4.0.20, 4.1.0-4.1.5) jest podatne na trwały Cross-Site Scripting (XSS) przez pola adresu rozliczeniowego w kasie gościa. Nieuwierzytelniony atakujący wykorzystuje obejście filtra w Joomla Input::getArray() w połączeniu z PHP variables_order=EGPCS (Cookie nadpisuje POST w $_REQUEST), aby przechowywać nieoczyszczony HTML w polach takich jak billing_first_name.
- CVE-2026-67362Średnie
Rozszerzenie Joomla - j2commerce.com - Otwarte przekierowanie w kontrolerze koszyka w J2Store 1.0.0-3.3.20, 4.0.0-4.0.20, 4.1.0-4.1.5 - Cztery procedury obsługi zadań akceptowały zakodowany w base64 URL z danych wejściowych użytkownika i przekierowywały do niego bez weryfikacji hosta docelowego, umożliwiając phishing przy użyciu zaufanej domeny sklepu. Nie wymaga uwierzytelnienia.
- CVE-2026-67361Średnie
Rozszerzenie Joomla - j2commerce.com - Nieuwierzytelnione przesyłanie plików z brakiem ochrony katalogu w J2Store 1.0.0-3.3.20, 4.0.0-4.0.20, 4.1.0-4.1.5 - Punkt końcowy przesyłania plików akceptował żądania POST od nieuwierzytelnionych odwiedzających bez tokena CSRF. Dodatkowo, manifest instalatora pominął katalogi upload i invoices, powodując, że świeże instalacje wdrażają te katalogi bez ochrony .htaccess/web.config, co czyni przesłane pliki bezpośrednio dostępnymi w sieci.
- CVE-2026-67360Średnie
Rozszerzenie Joomla - j2commerce.com - Replikacja zamówień między klientami w J2Store 1.0.0-3.3.20, 4.0.0-4.0.20, 4.1.0-4.1.5 - Uwierzytelniony użytkownik mógł podać order_id innego klienta, aby skopiować zawartość koszyka i dane adresowe do swojej sesji. Token CSRF był walidowany, ale własność nie była sprawdzana.
- CVE-2026-67359Wysokie
Rozszerzenie Joomla J2Store (wersje 1.0.0-3.3.20, 4.0.0-4.0.20, 4.1.0-4.1.5) umożliwia nieuwierzytelnionemu odwiedzającemu podanie dowolnego order_id jako parametru zapytania, aby wyświetlić pełną stronę potwierdzenia zamówienia, w tym pozycje, ceny i sumy.
- CVE-2026-67358Średnie
Rozszerzenie Joomla - j2commerce.com - Manipulacja limitem pobrań w J2Store 1.0.0-3.3.20, 4.0.0-4.0.20, 4.1.0-4.1.5 - Uwierzytelniony użytkownik z prawidłowym tokenem zamówienia mógł zwiększyć licznik limitu pobrań na rekordzie pobrania należącym do innego zamówienia. Punkt końcowy również nie miał tokena CSRF.
Oryginalny opis (angielski, źródło NVD)
Joomla Extension - j2commerce.com - Guest checkout address disclosure to any authenticated user (IDOR) in J2Store 1.0.0-3.3.21, 4.0.0-4.0.21, 4.1.0-4.1.6 - `editAddress()` redirected non-owners away only when the loaded address row had a **non-empty** `user_id` belonging to someone else. Guest-checkout address rows have an empty `user_id`, so that check never triggered for them — any logged-in account guessing a small, sequential `address_id` got a guest customer's full name, street address, and phone number rendered prefilled into the edit form.

