Magento wydało nową łatkę bezpieczeństwa dla M1 oraz aktualizacje dla M1 i M2.
Na jakie problemy należy zwrócić uwagę podczas aktualizacji lub stosowania tej poprawki?
SUPEE-10570, Magento Commerce 1.14.3.8 i Open Source 1.9.3.8 zawierają wiele ulepszeń bezpieczeństwa, które pomagają zamknąć zdalne wykonanie kodu (RCE), skrypty między witrynami (XSS i inne). Te wydania zawierają również małe poprawki funkcjonalne wymienione w Informacje o wydaniu.
AKTUALIZACJA BEZPIECZEŃSTWA MAGENTO 2.2.3, 2.1.12 I 2.0.18
Magento Commerce i Open Source 2.2.3, 2.1.12 i 2.0.18 zawierają wiele ulepszeń bezpieczeństwa, które pomagają zamykać skrypty krzyżowe (XSS), uwierzytelniać zdalne wykonywanie uwierzytelnionego administratora (RCE) i inne podatności. Wydania zawierają dodatkowe poprawki funkcjonalne. Aby dowiedzieć się więcej o poprawkach funkcjonalnych, sprawdź Informacje o wersji dla Magento Commerce 2.0.18, 2.1.12, 2.2.3 i Magento Open Source 2.0.18, 2.1.12, 2.2.3.
Odpowiedzi:
Oto lista zmodyfikowanych plików według poprawki SUPEE-10570:
EDYTOWAĆ
Wreszcie po wdrożeniu na mojej stronie produktu (CE 1.7.0.2) zauważyłem krytyczny problem z blokowaniem (proces kasy zablokowany).
Kontekst: po adresie kroku 1 bezpośrednio tworzę ORAZ loguję klienta, powinien zobaczyć tylko następny krok kasy.
Problem: po supee-10570 proces kasowania jest przerywany po kroku 1 (w przypadku utworzenia konta), a klient zostaje przekierowany na stronę główną (z pustym koszykiem + wylogowanym) = niemożliwe do zrealizowania kasy.
Awaryjna poprawka: jeśli napotkasz podobny problem z kasą / sesją klienta, skomentuj linie 414-430 z app / code / core / Mage / Core / Model / Session / Abstract / Varien.php (te dodane przez łatkę patrz poniżej).
EDYCJA (2)
Myślę, że następujący warunek zawsze zwróci false (Mage_Core_Model_Session_Abstract_Varien w liniach 414-419, szczególnie linie 417 + 418).
VALIDATOR_PASSWORD_CREATE_TIMESTAMP będzie zawsze większy niż VALIDATOR_SESSION_EXPIRE_TIMESTAMP. Znacznik czasu „wygasania” sesji jest redefiniowany przy tworzeniu konta, więc nieuchronnie jest starszy niż init sesji.
Na przykład, jeśli utworzysz klienta podczas kasy, to zwróci fałsz, a klient zostanie po prostu wyrzucony (= zakończenie kasy, przekierowanie do strony głównej i pusty koszyk). Dość źle.
Zgłosiłem ten problem zespołowi magento. Dam jak najszybciej informację zwrotną.
EDYCJA (3)
Nowa łatka jest wip (na stronie pobierania łatki magento jest napisane „SUPEE-10570 dla CE 1.7.0.0 - OCZEKIWANIE NA ZAKTUALIZOWANĄ ŁATKĘ, NIE UŻYWAJ (0,06 MB)”).
EDYCJA (4) ~ 1 miesiąc po zgłoszeniu pierwszego problemu z blokowaniem
Cześć! Mam nadzieję, że wszyscy jesteście dobrami (i mam nadzieję, że do tej pory nie zachowaliście stanu początkowej łatki, chyba że dochody z firmy prawdopodobnie poważnie spadły ^^).
Zauważyłem następujące zdanie z oficjalnej strony: „Magento udostępnia teraz zaktualizowaną łatkę (SUPEE-10570v2), która nie powoduje już tego problemu. Pamiętaj jednak, że ta nowa łatka nie chroni już przed dwoma sesjami związanymi z obsługą sesji o niskim ryzyku problemy z bezpieczeństwem, które chronią przed SUPEE-10570. ” z oficjalnej strony supee-10570.
Na stronie wydania możemy wreszcie znaleźć plik v2 (PATCH_SUPEE-10570_CE_v1.7.0.2_v2-2018-03-29-08-52-37.sh).
Szczegółowo zbadałem modyfikacje. Wreszcie wydaje się, że zespół magento postanowił porzucić część bezpieczeństwa dotyczącą łatki. Mam nadzieję, że ta dziura w zabezpieczeniach nie spowoduje poważnych szkód (zgodnie z oficjalną notatką, jest mało krytyczna).
Po przywróceniu v1 + zastosuj v2, pamiętaj, że następujące pliki są przywracane do stanu początkowego (przed zastosowaniem v1):
PS: oczywiście niektóre inne pliki również są modyfikowane, sprawdź to odpowiednio.
źródło
app/etc/applied.patches.list
(nie jestem pewien, czy było to w uwagach do wydania od samego początku)
Znane problemy
Te dwa znane problemy są związane z użyciem tagów HTML w atrybucie SKU produktu:
Invalid value in SKU column. HTML tags are not allowed.
HTML tags are not allowed in SKU attribute.
Z notatek o łatce :
Jeśli łatka nie zostanie zastosowana podczas łatania
lib/Zend/Mail/Transport/Sendmail.php
, może to oznaczać, że twoja instalacja Magento została wcześniej załatana SUPEE-9652v1 zamiast SUPEE-9652v2. Zalecanym rozwiązaniem jest przywrócenie poprawki SUPEE-9652v1 i zastosowanie SUPEE-9652v2 przed zastosowaniem SUPEE-10570.źródło
Miałem ten sam problem, co @DarkCowboy po zastosowaniu poprawki do Magento CE 1.7.0.2.
Po wybraniu rejestracji jako nowy klient podczas realizacji transakcji, złożenie zamówienia powoduje utworzenie zarówno zamówienia, jak i klienta, ale zamiast wyświetlać stronę zamówienia, jestem przekierowywany na stronę główną i wylogowałem się.
Rozwiązaniem, które znalazłem, jest odwrócenie kolejności bloków kodu w zmianach do
app/code/core/Mage/Core/Model/Session/Abstract/Varien.php
.Porównując łataną wersję z tym samym plikiem w Magento CE 1.9.3.8, znalazłem nowe bloki do sprawdzania ważności sesji i znacznik czasu hasła w innej kolejności.
Magento CE 1.9.3.8 - Linie 476-491:
Magento CE 1.7.0.2 - Linie 414-430:
Powoduje to, że wartość
$validatorData[self::VALIDATOR_PASSWORD_CREATE_TIMESTAMP]
jest większa niż$sessionData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP] - $this->getCookie()->getLifetime()
, co oznacza, że metoda zawsze zwraca false, a sprawdzanie poprawności kończy się niepowodzeniem.Zmiana kodu w Magento CE 1.7.0.2 w celu dopasowania wersji w Magento CE 1.9.3.8 rozwiązuje problem.
Wynikowy kod dla Magento CE 1.7.0.2 - Linie 414-430:
Sugerowałbym utworzenie własnego pliku łatki i zastosowanie bezpośrednio do pliku podstawowego (w ten sposób zwykle podchodzę do naprawiania błędów w rdzeniu). Ułatwi to przywrócenie, jeśli Magento wyda wersję 2 łatki.
źródło
useValidateSessionPasswordTimestamp()
zwracając sięfalse
. (zmiana jednej linii w tym samym pliku)Po zastosowaniu SUPEE-10570 i kompilacji zobaczyliśmy pustą stronę w / checkout / cart. Tylko dla wyjaśnienia: Z dezaktywowanym kompilatorem wszystko poszło dobrze, z aktywowanym kompilatorem widzieliśmy tylko pustą stronę koszyka po zalogowaniu bez żadnych wpisów w dzienniku (nawet po aktywowaniu wszystkich możliwych dzienników i trybu programisty).
Rozwiązaniem była zmiana funkcji
getPasswordTimestamp()
wapp/code/core/Mage/Customer/Helper/Data.php
(oczywiście oznaczaapp/code/local/Mage/Customer/Helper/Data.php
:!) I użycieMage::getSingleton('core/resource')
zamiastMage::getModel('customer/customer')
lubMage::getSingleton('customer/session')
. Więc zamień całą funkcję np. Na następujące wiersze kodu:Po ponownej kompilacji problem zniknął. Ktoś jeszcze z tym problemem?
Wyjaśnienie w języku niemieckim tutaj .
źródło
1.7.0.0
Łata:
PATCH_SUPEE-10570_CE_v1.7.0.0_v1-2018-02-23-06-37-58.sh
Ten błąd występuje, jeśli wcześniej nie zastosowano SUPEE-9652 lub SUPEE-9767
Zastosuj te łatki, aby rozwiązać problem.
źródło
1.7.0.0
PATCH_SUPEE-10570_CE_v1.7.0.0_v1-2018-02-23-06-37-58.sh
Plik łatkiapp/code/core/Mage/Core/Model/Session/Abstract/Varien.php
Łatka dla wersji 1.7.0.0 dodaje tylko jedną stałą:
Dodaje jednak użycie dwóch nowych stałych, zwłaszcza tej:
Powoduje to błąd:
Poprawka:
Dodaj definicję tej drugiej stałej powyżej lub poniżej pierwszej stałej dodanej przez tę poprawkę.
Do tej pory nie widziałem tego problemu w żadnym z 1.9. lub łatki 1.14.x, ponieważ poprawnie definiują stałą.
źródło
const VALIDATOR_SESSION_EXPIRE_TIMESTAMP = 'session_expire_timestamp';
do górnej części pliku, podobnie jak w większości innych wersji tej poprawki.Najpierw sprawdź, czy wcześniej zastosowałeś poprawną wersję SUPEE-6788 lub SUPEE-7405, jeśli nie, przywróć niewłaściwą wersję, a następnie zastosuj poprawną wersję SUPEE-6788 / SUPEE-7405.
Następnie spróbuj ponownie zastosować SUPEE-10570.
źródło
Poniższe pliki są aktualizowane / dodawane po zastosowaniu poprawki SUPEE - 10570 w EE
@DarkCowboy dostarczył listę plików innych niż pliki EE :
Kilka ważnych uwag
password_created_at
utworzony w tabeli atrybutów klienta.Są to pliki używane do tworzenia i sprawdzania poprawności. problem z sesją występuje przy kasie lub kontroli logowania użytkownika, powyższe pliki są nadpisywane w lokalnej puli lub Dowolny
password_created_at
atrybut jest tworzony w tabeli atrybutów klienta, a odpowiednia wartość przechowywana w tej tabeli.źródło
Moja wersja Magento to ver. 1.9.1.0.
Po zastosowaniu SUPEE-10570 i kompilacji zobaczyliśmy pustą stronę w / checkout / cart. Tylko dla wyjaśnienia: Z dezaktywowanym kompilatorem wszystko poszło dobrze, z aktywowanym kompilatorem widzieliśmy tylko pustą stronę koszyka po zalogowaniu bez żadnych wpisów w dzienniku (nawet po aktywowaniu wszystkich możliwych dzienników i trybu programisty).
Przyczyna:
funkcja getPasswordTimestamp wywoła się dwa razy po zalogowaniu i wejściu / kasie / koszyku.
wyłączono kompilator zarówno prace wywołania.
włącz kompilator tylko przy pierwszym wywołaniu, drugie wywołanie nie powiodło się.
czy ktoś może wyjaśnić i podać dobre rozwiązanie?
źródło
Problemy z 1.7.0.2 , które zauważyłem, są następujące:
Dodaj produkt do koszyka i przejdź do kasy
Kliknij „Zarejestruj się”
PROBLEM ROZPOCZYNA SIĘ TUTAJ
5. Automatycznie przekieruj do STRONY GŁÓWNEJ. Nie zobaczysz potwierdzenia numeru zamówienia. Ale w rzeczywistości zamówienie jest składane i tworzone jest konto klienta.
źródło
Spotkałem ten sam problem, Magento 1.9.3.8 dodał tę metodę do klasy Mage_Customer_Helper_Data
Jeśli przesłonisz tę klasę w folderze lokalnym (nie jest to najlepsza praktyka), możemy mieć błędy generowane przez tę klasę.
źródło
Ta poprawka zepsuła część menedżera hierarchii CMS dla użytkowników EE.
Wynika to z następującej linii łatki, która jest odpowiedzialna za ucieczkę od nazw sklepów / stron internetowych i naprawienie APPSEC-1873/1979/1980.
Powinien pokazywać selektor sklepu po lewej, ale zamiast tego pokazuje HTML po prawej. Jeśli naprawdę potrzebujesz tej funkcji, musisz sprawdzić połączenie bezpieczeństwa z funkcjonalnością, co nie jest świetne.
źródło
Taki sam dokładny błąd, co w przypadku Tylera w patchu Magento 1.9.2.4 PATCH_SUPEE-10570_CE_v1.9.2.4_v1-2018-02-28-04-53-53.sh
źródło
Jeśli masz jakieś narzędzie do wykrywania poprawek, prawdopodobnie musisz zmodyfikować wykrywanie,
SUPEE-9562
ponieważSUPEE-10570
modyfikuje ten sam plik:źródło
Łatka została cicho zmieniona przez Magento. Tutaj pokazano z łatką dla Magento 1.8.1.0-1.9.0.1. Przy pierwszym pobraniu mam plik
Kilka dni później dostałem następujący plik
Diff pokazuje, że poprzedni plik zawiera pliki z Magento Enterprise Edition, które zawierają niewłaściwą licencję „Umowa licencyjna użytkownika końcowego Magento Enterprise Edition”. Zostało to poprawione do „Open Software License (OSL 3.0)”.
źródło
Może pojawić się następujący błąd
Hunk #3 FAILED at 17
po liniiStało się to dla mnie w wersji Magento 1.10.0.2EE. Stało się tak, ponieważ nie zastosowano poprawki SUPEE-6285.
źródło