PrestaShop 8.2.3 aktualizacja już dostępna

Opublikowano 04/09/2025 10:35 i zmodyfikowano 07/12/2025 15:24.

Jest to poprawka bezpieczeństwa dla gałęzi 8.2. Jej głównym celem jest usunięcie luki w zabezpieczeniach związanej z enumeracją adresów e-mail w funkcji resetowania hasła w zapleczu. Wprowadzono również kilka ulepszeń o niskim ryzyku i poprawek błędów, które zostały już zweryfikowane.

Dlaczego ta wersja jest dostępna właśnie teraz?

PrestaShop 8.2 jest w fazie rozszerzonego wsparcia, dlatego udostępniane są tylko poprawki bezpieczeństwa i krytyczne. W ciągu ostatnich dni zaobserwowaliśmy (dzięki raportom społeczności i partnerom) automatyczne sondy wykorzystujące stronę resetowania hasła w zapleczu do enumeracji adresów e-mail pracowników. To skłoniło nas do zaplanowania aktualizacji bezpieczeństwa dla gałęzi 8.2.x.

Szczegóły luki

Nieuwierzytelniony atakujący może wykorzystać stronę resetowania hasła, modyfikując parametry id_employee i reset_token, aby dowiedzieć się, które konta pracowników istnieją (enumeracja adresów e-mail). Wykorzystanie luk wymaga, aby atakujący znał (lub odgadł/odkrył) adres URL Twojego zaplecza. Ukrycie lub dostosowanie tego adresu URL może zmniejszyć szumy generowane przez skanowanie oportunistyczne, ale nie należy tego traktować jako wystarczającego zabezpieczenia.

Zaktualizuj do wersji 8.2.3 lub zastosuj poniższą poprawkę ręczną. Szczegółowe informacje znajdują się w oficjalnym komunikacie: GHSA-8xx5-h6m3-jr33.

Zaktualizuj do PrestaShop 8.2.3

Zaleca się jak najszybszą aktualizację do wersji 8.2.3. Asystent aktualizacji sprawia, że ​​proces aktualizacji jest w dużej mierze oparty na wskazywaniu i klikaniu: włącz tryb konserwacji, uruchom aktualizację, przejrzyj logi, przetestuj, a następnie ponownie otwórz sklep.
Jeśli korzystasz z PrestaShop 8 z PHP 8, aktualizacja do PrestaShop 8.2.3 wymaga obniżenia wersji PHP do 7.4 (na czas aktualizacji) lub wybrania opcji Archiwum lokalne. To ograniczenie jest znane i zostanie usunięte w przyszłych wersjach Asystenta aktualizacji.

Instrukcja ręcznego łatania (dla zaawansowanych użytkowników)

Aktualizacja do wersji 8.2.3 to najbezpieczniejsze podejście, ale jeśli nie możesz zaktualizować systemu natychmiast, możesz wykonać łatkę ręcznie:

Szczegóły poprawki

Łatka zapewnia, że:

  • Muszą być obecne zarówno reset_token, jak i id_employee.
  • Obiekt pracownika musi zostać pomyślnie załadowany.
  • Zapisany, prawidłowy token resetowania pobrany za pomocą Employee::getValidResetPasswordToken() musi być zgodny z podanym tokenem.
  • Dopiero wtedy wartości reset_email, reset_token i id_employee są przypisywane do szablonu. W przeciwnym razie nie zostanie wyświetlone nic, co potwierdzałoby powiązanie między adresem e-mail a pracownikiem.

W uproszczeniu, poprawiony kod wygląda teraz następująco:

// For reset password feature
$reset_token = Tools::getValue('reset_token');
$id_employee = Tools::getValue('id_employee');
if ($reset_token !== false && $id_employee !== false) {
	$this->context->smarty->assign('reset_token', $reset_token);
	$this->context->smarty->assign('id_employee', $id_employee);

	$employee = new Employee($id_employee);
	$valid_reset_token = $employee->getValidResetPasswordToken();

	if ($valid_reset_token !== false && $valid_reset_token === $reset_token) {
		$this->context->smarty->assign('reset_email', $employee->email);
	}
}

Jak ręcznie zaktualizować patch

  1. Kopia zapasowa (pliki + baza danych).
  2. Otwórz controllers/admin/AdminLoginController.php.
  3. Znajdź blok zaczynający się od // dla funkcji resetowania hasła, która przypisuje id_employee / reset_email przed walidacją tokena.
  4. Zastąp cały ten blok sprawdzoną sekwencją kodu pokazaną wcześniej.
  5. Test: poproś o zresetowanie hasła, użyj linku przesłanego e-mailem, a następnie spróbuj zmodyfikować id_employee / reset_token, aby upewnić się, że żaden inny adres e-mail nie zostanie ujawniony.
  6. (Tylko jeśli używasz kodu operacji lub zewnętrznych warstw buforowania) wyczyść pamięć podręczną OPcache, Varnish, CDN lub odwrotnego proxy. Samo czyszczenie pamięci podręcznej Smarty nie jest wymagane w przypadku tej zmiany.

W razie wątpliwości zalecamy pełną aktualizację do wersji 8.2.3.

Polecane produkty