Nowa łatka supee-6788 jak stosować łatkę

29

Po tygodniach oczekiwania na aktualizację dzisiaj (27.10.2015) została wydana: SUPEE-6788

Wiele rzeczy zostało załatanych, a także zachęca się do przeglądu zainstalowanych modułów pod kątem możliwych luk.

Otwieram ten post, aby uzyskać wgląd w to, jak zastosować łatkę. Jakie są kroki, aby zastosować łatkę? W moim rozumieniu są to następujące kroki:

  1. Napraw moduły za pomocą funkcji administratora, które nie znajdują się pod administracyjnym adresem URL
  2. Napraw moduły, które używają instrukcji SQL jako nazw pól lub pól zmiany znaczenia
  3. Bloki białej listy lub dyrektywy korzystające ze zmiennych takich jak {{config path=”web/unsecure/base_url”}}i{{bloc type=rss/order_new}}
  4. Rozwiązanie problemu potencjalnego wykorzystania dzięki niestandardowemu typowi pliku opcji (nie mam pojęcia, jak to zrobić)
  5. Zastosuj łatkę

Czy to jest poprawna procedura?

lloiacono
źródło
1
Obecnie wymienione wersje CE od 1.7.0.0 do 1.9.2.0
Fiasco Labs
5
Łatka zmienia .htaccess.sample, jak również .htaccess. Ten ostatni jest dostosowany w większości sklepów, spowoduje to, że łatka się nie powiedzie => Musisz tymczasowo zastąpić go oryginalnym plikiem z Magento, zastosować łatkę, przywrócić własny .htaccess i zastosować zmianę, która chroni dostęp do cron.phpręcznie (nie t oczywiście użyć systemu produkcyjnego!)
Fabian Schmengler
1
co z tymi, którzy używają nginx?
lloiacono
4
Głosuję za zamknięciem tego pytania jako nie na temat, ponieważ nie ma pytania. Proszę przenieść dyskusje na czat
7ochem
2
W samym tytule wpisu znajduje się pytanie, a także w ostatnim akapicie jestem bardziej szczegółowy. Niezależnie od tego, tego rodzaju posty są moim zdaniem bardzo przydatne do scentralizowania komentarzy i najlepszych praktyk podczas stosowania nowo wydanej łatki.
lloiacono

Odpowiedzi:

33

Ogólnie rzecz biorąc, możesz zastosować łatkę tak jak wszystkie poprzednie. Przejrzyj oficjalną dokumentację i sprawdź ten post SE . Ale tak, jest kilka dodatkowych punktów, które powinieneś sprawdzić, stosując tę ​​łatkę. Byte / Hypernode ma fajny post na ten temat.

  1. Sprawdź, czy Twój motyw ma niestandardowy template/customer/form/register.phtmllub niestandardowy template/persistent/customer/form/register.phtml. W takim przypadku upewnij się, że zawiera on form_key.
  2. Sprawdź, czy Twój motyw ma niestandardowy layout/customer.xml. W takim przypadku upewnij się, że wprowadziłeś niezbędne zmiany z łatki ( customer_account_resetpasswordzostała zmieniona na customer_account_changeforgotten).
  3. Czy używasz niestandardowych zmiennych na stronach CMS, blokach statycznych lub szablonach e-mail? Następnie upewnij się, że umieściłeś je na białej liście. Zobacz to pytanie SE, aby dowiedzieć się, jak dodać do białej listy zmienne / bloki.
  4. Czy korzystasz z cron.phpHTTP? Upewnij się, że lepiej użyć cron.sh. Jeśli nie jest to możliwe, przynajmniej upewnij się, że wywołujesz cron.php przez CLI PHP. Jeśli z jakiegoś powodu nie możesz skonfigurować prawdziwego kronika i musisz go uruchomić przez HTTP, zobacz to pytanie SE
  5. Upewnij się, że wszystkie rozszerzenia korzystają z „nowego” routingu administracyjnego. Możesz użyć tej wtyczki n98-magerun do sprawdzenia. Możesz także użyć tego skryptu CLI . Możesz także zapoznać się z tym powiązanym pytaniem dotyczącym SE .
    1. Gdy wszystkie rozszerzenia używają właściwego routingu administratora, pamiętaj o wyłączeniu opcji „Włącz tryb zgodności routingu administracyjnego” w obszarze System - Konfiguracja - Administrator - Bezpieczeństwo.
  6. Jeśli używasz M2ePro, zaktualizuj go do najnowszej wersji, ponieważ starsze wersje nie działają z nową poprawką.

Podczas aktualizacji upewnij się, że plik został usunięty dev/tests/functional/.htaccess. Nie jest już obecny w Magento 1.9.2.2. Utrzymanie go oznacza, że ​​nadal jesteś podatny na zagrożenia.

W każdym razie po aktualizacji sprawdź swoją stronę w MageReport, aby sprawdzić, czy wszystko poszło dobrze.

Jest też post na blogu technicznym autorstwa Piotra , który opisuje najważniejsze zmiany.

Szymon, Szymek
źródło
Tylko mała uwaga, skrypt CLI wspomina: „Sprawdź, czy wszystko jest w porządku, a następnie wyłącz tryb zgodności kontrolera administracyjnego”. Myślę, że mają na myśli coś przeciwnego, aby to umożliwić. Czy to prawda?
Michael
1
@kaska Jeśli wszystkie rozszerzenia są w porządku, musisz wyłączyć tryb zgodności.
Simon
w środowisku produkcyjnym nie powinieneś całkowicie usuwać / programować?
paj
1
@paj teoretycznie tak. Ale w wersji 1.9.2.2 jest chroniony za pomocą .htaccess, więc powinno być w porządku, aby go zachować. Upewnij się, że postępujesz zgodnie z moją poradą .htaccess powyżej.
Simon
Dziękujemy za kompletność, powinny one umożliwić następnym razem napisanie skróconych informacji o wydaniu! Super pomocny!
asherrard
3

W przypadku Nginx upewnij się, że zablokowałeś dostęp do cron.php i folderu dev. Używamy tego bloku:

location ~ ^/(app|includes|media/downloadable|pkginfo|report/config.xml|var|magmi|cron.php|dev)/? { deny all; }
Adam L.
źródło
twoje wyrażenie regularne nie będzie działać, ponieważ sprawdzasz tylko katalog,. więc "report / config.xml, cron.php" nie pasują, a na końcu masz symbol pionowej kreski lub potoku .. kopiować-wkleić? również nie mieszaj wyrażenia regularnego razem z / app /, jeśli coś zgubisz, zostanie zhakowany.
MagenX
Zła praca kopiowania i wklejania, przepraszam. Dodano w? na końcu, więc ukośnik końcowy jest opcjonalny. Testowałem to teraz i działa tak, jak powinno.
Adam L.,
także ten regex jest wrażliwy, masz ^ /, upewnij się, że nie kopiujesz plików źródłowych do górnego folderu, takich jak / old /, / upgrade / etc
MagenX
@MagenX Więc mówisz, że jeśli nie używasz kontroli wersji lub standardowego BCP administracyjnego systemu, to wyrażenie regularne jest winne?
Melvyn
1

Właśnie zastosowałem łatkę na moim 1.10.1 EE, co powoduje skutki uboczne na ekranach natywnych, ponieważ rdzeń nie jest zgodny z APPSEC-1063:

Przykład:

W app/code/core/Mage/Customer/Model/Entity/Attribute/Collection.php

Można znaleźć 2 addFieldToFilterpołączenia niezgodne z APPSEC-1063.

Łamie to Klienta> Siatki atrybutów, więc musisz łatać łatkę, korzystając ze sztuczki zalecanej w pdf „SUPEE-6788-Technical% 20Details% 20.pdf” w sekcji APPSEC-1063

Zmieniam kilka

    $this->addFieldToFilter($field, 0);

(gdzie pole $ zawiera złożone (PRZYPADEK ... GDY NASTĘPNIE ...) instrukcje sql)

w

    $resultCondition = $this->_getConditionSql($field, 0);
    $this->_select->where($resultCondition);

Zarówno supee-6788-zestaw narzędzi rhoerr, jak i gaiterjones 'nie wykryły tego rodzaju problemów, sprawdziłem wszystkie pozostałe -> addFieldToFilter ($ i wydaje się, że żaden nie powoduje problemu.

Inne uszkodzone pliki podstawowe 1.10: (znalezione przez supee-6788-toolbox rhoerr)

app/code/core/Mage/Bundle/Model/Mysql4/Option/Collection.php 

Może być więcej.

ROZDRABNIANY
źródło