Nowa aktualizacja zabezpieczeń Magento 1, rozwiązująca 25 problemów APPSEC
https://magento.com/security/patches/supee-10752
Na jakie typowe problemy należy zwrócić uwagę przy stosowaniu tej poprawki?
SUPEE-10752, Magento Commerce 1.14.3.9 i Open Source 1.9.3.9 zawierają wiele ulepszeń bezpieczeństwa, które pomagają zamknąć uwierzytelnione zdalne wykonywanie kodu administratora (RCE), fałszowanie żądań między witrynami (CSRF) i inne luki w zabezpieczeniach.
Informacje o wszystkich zmianach w wersjach 1.14.3.9 i 1.9.3.9 są dostępne w uwagach do wydania Magento Commerce i Magento Open Source.
Poprawki i aktualizacje są dostępne dla następujących wersji Magento:
Magento Commerce 1.9.0.0-1.14.3.9: SUPEE-10752 lub uaktualnienie do Magento Commerce 1.14.3.9.
Magento Open Source 1.5.0.0-1.9.3.9: SUPEE-10752 lub aktualizacja do Magento Open Source 1.9.3.9.
źródło
Odpowiedzi:
Jak wspomniano w oficjalnych dokumentach Magento :
Konflikty podczas instalacji poprawki SUPEE-10752 są najczęściej spowodowane zainstalowaniem wersji 1 poprzedniej łatki ( SUPEE-10570v1 ).
Pamiętaj, aby usunąć SUPEE-10570v1 i zainstalować SUPEE-10570v2 przed instalacją nowego SUPEE-10752.
źródło
Poniższe pliki są zmieniane / tworzone po zastosowaniu poprawki
Do EE Edition dodaje się poniższe pliki inne niż CE
Ktoś nadpisuje plik onepage.php, zaktualizuj plik.
Dodano weryfikację klucza. Sprawdź, czy formularz koszyka ma klucz formularza
cron.php: uchwyt wyjątku w pliku cron.php
GD2: zwraca prawdziwy typ MIME.
Jeśli używasz nginx zamiast Apache, upewnij się, że zaktualizowałeś konfigurację, aby powielić tę zmianę.
Metody wysyłki nowo dodane / zaktualizowane pliki to:
Pliki Escapehtml:
Pliki interfejsu użytkownika do pobrania: każdy, kto korzysta z produktu do pobrania, zaktualizuj pliki w plikach motywu.
Sprawdź kod
Zamienić
Sprawdź kod
Zamienić
Sprawdź kod
Zamienić
Sprawdź kod
Zamienić
Zamienić
Zamienić
Sprawdź kod
Zamienić
Sprawdź kod
Zamienić
Inne pliki Escapehtml:
źródło
Modyfikacja przeciążonej
filter
metody wZend_Filter_PregReplace
jest naiwna i zakłada, że$this->_matchPattern
zawsze jest to ciąg znaków. Ta właściwość jest następnie dostarczana jako pierwszy argument dopreg_replace
. W rzeczywistości tablica jest również całkowicie poprawnym argumentem. Fakt ten jest wykorzystywany przez wiele podstawowychZend_Filter
klas (takich jakZend_Filter_Word_SeparatorToCamelCase
). Tak więc każde rozszerzenie / gałąź kodu, która używa tego filtra lub jednego z jego pochodnych, z argumentem tablicowym_matchPattern
, zacznie rzucaćWarning: substr() expects parameter 1 to be a string, array given
.Prostym przykładem tego, co prawdopodobnie powinien zrobić, byłoby coś w stylu:
Chociaż nie przeprowadziłem jeszcze dokładnych testów tego.
EDYCJA: Warto zauważyć, że chociaż powyższe proponowane rozwiązanie powinno zapobiegać błędom, wdrożenie jest technicznie nadal nieco naiwne i podatne na fałszywe alarmy. Zakłada się, że ogranicznik wyrażenia regularnego oddzielający wzorzec od modyfikatorów jest taki sam, jak ten na początku łańcucha. Technicznie nie musi tak być, ponieważ PHP obsługuje różne ograniczniki w stylu nawiasów. Dlatego prawidłowe dane wejściowe
{hello}is
określą, że modyfikatory sąhello}is
(a nie rzeczywistymi modyfikatoramiis
), a tym samym zgłoszą wyjątek, nawet jeśli wzorzec faktycznie nie zawierae
modyfikatora.źródło
1.7.0.2 Problem z wersją: po zainstalowaniu łatki i przejściu do kasy na jednej stronie (ogólne kasy Magento), otrzymaj ten błąd
Błąd analizy: błąd składni, nieoczekiwany
Podczas cofania poprawki błąd znika.
Zagłębiając się w to pytanie, zauważyłem, że łatka dodała następujący wiersz do pliku onepage.php.
ROZWIĄZANIE: Dzięki @FabianSchmengler
AKTUALIZACJA DO PHP w wersji 5.4 i nowszych!
źródło
Znana kwestia :-
Jeśli Twój niestandardowy kod lub rozszerzenie używa
Zend/Filter/PregReplace.ph
p wraz z modyfikatorem e, zwróci teraz błąd z powodu możliwych problemów RCE.Ta poprawka jest poniżej bezpieczeństwa.
+++ app/code/core/Mage/Admin/Model/User.php
i wtedy
class Mage_Admin_Model_User
app/code/core/Mage/Adminhtml/Block/Catalog/Product/Composite/Fieldset/Options.php
app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Options/Option.php app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Options/Option.php
app/code/core/Mage/Catalog/Model/Product.php
+++ app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column/Filter/Datetime.php
app/design/frontend/base/default/template/downloadable/catalog/product/links.phtml
app/design/frontend/base/default/template/downloadable/checkout/cart/item/default.phtml
app/design/frontend/base/default/template/downloadable/checkout/onepage/review/item.phtml
app/design/frontend/base/default/template/downloadable/sales/order/items/renderer/downloadable.phtml
app/design/frontend/default/iphone/template/downloadable/checkout/onepage/review/item.phtml
app/design/frontend/rwd/default/template/downloadable/checkout/cart/item/default.phtml
app/design/frontend/rwd/default/template/downloadable/checkout/onepage/review/item.phtml
app/design/frontend/rwd/default/template/downloadable/sales/order/items/renderer/downloadable.phtml
app/code/core/Mage/Adminhtml/Model/LayoutUpdate/Validator.php
Mage_Adminhtml_Model_LayoutUpdate_Validator
Mage_Adminhtml_Model_LayoutUpdate_Validator
app/code/core/Mage/Catalog/Model/Resource/Category/Tree.php
app/code/core/Mage/Adminhtml/controllers/Catalog/CategoryController
app/code/core/Mage/Adminhtml/controllers/Cms/WysiwygController.php
lib/Varien/Image/Adapter/Gd2.php
app/code/core/Mage/Checkout/Model/Api/Resource/Customer.php
app/code/core/Mage/Checkout/Model/Type/Onepage.php
app/code/core/Mage/Core/Model/Session/Abstract/Varien.php
app/code/core/Mage/Customer/Helper/Data.php
app/code/core/Mage/Customer/Model/Resource/Customer.php
app/code/core/Mage/Customer/controllers/AccountController.php
Mage_Customer_AccountController
``
app/code/core/Mage/Log/Model/Visitor.php
app/code/core/Mage/Usa/Helper/Data.php
DODANO pliki dla UPS
Dodano ustawienie dla tej nowej funkcji
app/code/core/Mage/Usa/etc/system.xml
843 linia
886
app/design/adminhtml/default/default/template/system/shipping/ups.phtml
1> 1) Walidacja produktu w pakiecie
app/design/adminhtml/default/default/template/bundle/product/edit/bundle/option.phtml
źródło
Wygląda na to, że częścią poprawki jest htmlEscaping wszystkich „getLinksTitle ()”. Ale zapomnieli o następujących plikach (jest to oparte na 1.8.1).
źródło
Łatka nie działa na waniliowym Magento CE 1.8.0.0
Aktualizacja: Dodano rozwiązanie poniżej.
Problem:
Zastosowane poprzednie łaty:
Rozwiązanie
Naprawiono przez edycję pliku łatki. Łatka zastąpiona
downloadable.phtml
przez tę z łatki, ponieważv1.7.0.2
w oryginalnym pliku łatek są to linie 1854–1862.Wynika to głównie z wcięcia w pliku. Jak zmiany
downloadable.phtml
wV1.7.0.2
wprowadzono więcej wcięć.Rozwiązanie 2
Miałem podobny problem, ale udało mi się naprawić, ponownie zapisując oryginalny plik w edytorze, który wymusił zakończenie linii na LF w stylu uniksowym, a nie na CRLF w stylu Windows lub na Mac CR
źródło
W odniesieniu do Matta Antleya, być może nie uwzględnili z tego powodu SUPEE-10570v2
O ile wiem, błąd kasy nie był bardzo częsty, więc postanowili zostać przy SUPEE-10570, który chroni przed dwoma problemami bezpieczeństwa niskiego ryzyka ?!
źródło
SUPEE-10570v2
, będą musieli go ponownie zastosować.SUPEE-10752
i podskoczyłem trochę z pistoletu. Jeszcze raz dziękuję za komentarze.Łatka nie działa na waniliowym Magento CE 1.6.0.0
Aktualizacja: Dodano rozwiązanie poniżej.
Problemy:
Zastosowane poprzednie łaty:
Rozwiązany
Rozwiązałem ten problem, zmieniając plik łatki. Zastąpiłem porcje, które dały problemy, odpowiednimi z łatki do wersji 1.5.1.0. W oryginalnym pliku łatki są to linie 167-177 i 663-670.
źródło
W EE v1.14.2.4 po zastosowaniu SUPEE-10752 musiałem również zastosować następującą łatkę, aby naprawić problem polegający na tym, że kasa przekierowuje na stronę główną zamiast strony sukcesu:
Plik: invalid_session_fix-2018-03-14-05-10-19.patch
Powyższa poprawka znajduje się w https://magento.com/tech-resources/download pod SUPEE-10570 > invalid_session_fix.patch (0 MB)
źródło
Po tej łatce napotkałem problem. Nie mogę ustawić „darmowej metody” dla „UPS Type” „United Parcel Service XML”. Magento zgłasza błąd po wybraniu dowolnej metody w menu rozwijanym „Metoda bezpłatna”. Błąd: „ Field” Ups Free Method ”ma niepoprawną wartość. ”
Czy ktoś napotkał ten sam problem i ma rozwiązanie?
Z góry dziękuję!
źródło
W wersji 1.6 łatka ups.phtml jest uszkodzona. Odwołuje się do $ przechowywaneOriginShipment, $ przechowywaneFreeShipment, które mają literówkę w 1.6 ($ stroredOriginShipment i $ stroredFreeShipment). Ponadto odwołuje się do $ przechowywaneUpsType, który w ogóle nie istnieje w wersji 1.6.
źródło
Napotkaliśmy problem w wersjach 1.9.1.0 i 1.9.2.4 (nie testowałem na innych). Nie pojawia się we wszystkich naszych projektach, ale powtórzył się w kilku z nich. Uważamy, że może to wpływać na projekty, które miały kiedyś zainstalowany SUPEE-10570v1.
Po zastosowaniu poprawki, jeśli użytkownik się zaloguje, zobaczy stronę swojego konta w porządku. Jeśli jednak spróbują wrócić do dowolnej innej strony w witrynie, strona przestanie odpowiadać i zobaczy albo pusty ekran lub 502 Bad Gateway. Wynika to z tego, że PHP przechodzi w nieskończoną pętlę i albo segfaultuje albo zostaje zatrzymane przez ustawienia .ini.
Udało mi się wygrzebać, że problem jest nieskończona rekurencja w wierszu, który ładuje się
$customer
w\app\code\core\Mage\Customer\Helper\Data.php
,getPasswordTimestamp()
.Patrząc na ślad stosu nieskończonej rekurencji, ciągle zapętla się w to w kółko. Jakoś wydaje się, że
->load()
ostatecznie wywołujegetPasswordTimestamp()
metodę.Obejście przedstawione w /magento//a/235984/67252 działa dobrze, ale chciałbym wiedzieć, co się dzieje.
źródło
Po zastosowaniu poprawki SUPEE 10752, Zarejestruj się, a kasa przeniesie stronę sukcesu na stronę główną. Jakieś sugestie?
źródło
Po zastosowaniu SUPEE-10752 i kompilacji zobaczyliśmy pustą stronę w / checkout / *
wersja: 1.9.1.0
Warunki wyzwalania: zastosowanie SUPEE-10752 + włącz kompilator + zaloguj się jako klient, a następnie odwiedź / kasy / *
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).
źródło