Jak już wspomniano, załatane luki opisano szczegółowo na tej oficjalnej stronie (nowe dokumenty sprzedawcy): http://merch.docs.magento.com/ce/user_guide/Magento_Community_Edition_User_Guide.html#magento/patch-releases-2015.html
Podsumowanie
Ten pakiet obejmuje ochronę przed następującymi problemami związanymi z bezpieczeństwem:
- Wyciek informacji o klientach przez RSS i eskalację uprawnień
- Żądaj fałszerstwa w Magento Connect prowadzi do wykonania kodu
- Skrypty krzyżowe w liście życzeń
- Skrypty krzyżowe w koszyku
- Ujawnienie ścieżki sklepu
- Zbyt szerokie uprawnienia do plików dziennika
- Skrypty między witrynami w administracji
- Skrypty krzyżowe w RSS zamówień
Po załataniu kilku sklepów, oto co zebrałem:
Łatki tematyczne
Niektóre pliki motywów zostały załatane z dodaniem znaku ucieczki, aby zapobiec możliwym atakom XSS:
checkout/cart.phtml
checkout/cart/noItems.phtml
checkout/onepage/failure.phtml
rss/order/details.phtml
wishlist/email/rss.phtml
Jeśli Twój motyw (y) zawiera którykolwiek z tych szablonów lub dokonałeś modyfikacji bezpośrednio w base/default
(powodzenia, jesteś wkręcony), musisz je załatać ręcznie:
w szablonach płatności zamień wszystkie wystąpienia
$this->getContinueShoppingUrl()
z
Mage::helper('core')->quoteEscape($this->getContinueShoppingUrl())
w wishlist/email/rss.phtml
, zamień
$this->helper('wishlist')->getCustomerName()
z
Mage::helper('core')->escapeHtml($this->helper('wishlist')->getCustomerName())
W rss/order/details.phtml
, zamień
<?php echo $this->__('Customer Name: %s', $_order->getCustomerFirstname()?$_order->getCustomerName():$_order->getBillingAddress()->getName()) ?><br />
<?php echo $this->__('Purchased From: %s', $_order->getStore()->getGroup()->getName()) ?><br />
z
<?php $customerName = $_order->getCustomerFirstname() ? $_order->getCustomerName() : $_order->getBillingAddress()->getName(); ?>
<?php echo $this->__('Customer Name: %s', Mage::helper('core')->escapeHtml($customerName)) ?><br />
<?php echo $this->__('Purchased From: %s', Mage::helper('core')->escapeHtml($_order->getStore()->getGroup()->getName())) ?><br />
Uprawnienia
.htaccess
pliki zostały dodane do downloader/Maged
i downloader/lib
uniemożliwiają bezpośredni dostęp do plików źródłowych. Jeśli używasz nginx, musisz dodać te reguły, aby osiągnąć to samo ( dziękuję Benowi Lessani za ten):
location /downloader/Maged/ { deny all; }
location /downloader/lib/ { deny all; }
Ale i tak zalecam wykluczenie downloader
z wdrożeń systemu działającego na żywo, w tym przypadku nie musisz podejmować żadnych działań.
Uprawnienia administratora (ACL)
Jeśli używasz ograniczonych kont administracyjnych, niektóre menu rozszerzeń innych firm mogą już nie działać. Powodem jest to, że domyślna wartość zwracana Mage_Adminhtml_Controller_Action::_isAllowed()
została zmieniona z true
na Mage::getSingleton('admin/session')->isAllowed('admin')
. Rozszerzenia, które nie zastępują tej metody w swoich kontrolerach administracyjnych, ponieważ nie używają ACL, teraz potrzebują uprawnienia „WSZYSTKO” .
Jedynym rozwiązaniem jest załatanie rozszerzeń i dodanie tej metody do wszystkich kontrolerów administratora:
protected function _isAllowed()
{
return true;
}
Lub jeśli faktycznie mają zasób ACL zdefiniowany w etc/adminhtml.xml
:
protected function _isAllowed()
{
return Mage::getSingleton('admin/session')->isAllowed('ENTER RESOURCE IDENTIFIER HERE');
}
(widać, że łatka robi to samo Phoenix_Moneybookers
w starszych wersjach Magento, takich jak 1.7, w których to rozszerzenie zostało uwzględnione)
Aby uzyskać bardziej szczegółowe spojrzenie na ten problem i wyjaśnienie, jak zdefiniować brakujące zasoby ACL, zobacz: Błędy odmowy dostępu po zainstalowaniu SUPEE-6285
Możliwe błędy podczas stosowania poprawki
Wiadomość:
can't find file to patch at input line 899
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git app/design/frontend/default/modern/template/checkout/cart.phtml app/design/frontend/default/modern/template/checkout/cart.phtml
|index 982ad5a..2bf6b37 100644
|--- app/design/frontend/default/modern/template/checkout/cart.phtml
|+++ app/design/frontend/default/modern/template/checkout/cart.phtml
--------------------------
File to patch:
Skip this patch? [y]
Skipping patch.
1 out of 1 hunk ignored
Powód:default/modern
Temat został usunięty z instalacji
Rozwiązanie: Dodaj app/design/frontend/default/modern
ze świeżego pliku do pobrania Magento (powinna być w tej samej wersji co Twój sklep). Możesz także użyć tego lustra: https://github.com/firegento/magento . Następnie po pomyślnym zastosowaniu łatki możesz ponownie usunąć motyw.
Wiadomość
patching file downloader/Maged/.htaccess
can't find file to patch at input line 915
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git downloader/Maged/Controller.php downloader/Maged/Controller.php
|index aa9d705..32755d7 100644
|--- downloader/Maged/Controller.php
|+++ downloader/Maged/Controller.php
--------------------------
File to patch:
Skip this patch? [y]
Skipping patch.
5 out of 5 hunks ignored
can't find file to patch at input line 976
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git downloader/Maged/Model/Session.php downloader/Maged/Model/Session.php
|index 18020eb..7013c94 100644
|--- downloader/Maged/Model/Session.php
|+++ downloader/Maged/Model/Session.php
--------------------------
File to patch:
Skip this patch? [y]
Skipping patch.
2 out of 2 hunks ignored
patching file downloader/lib/.htaccess
can't find file to patch at input line 1020
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git downloader/template/connect/packages.phtml downloader/template/connect/packages.phtml
|index 9cca5a6..f42e74e 100644
|--- downloader/template/connect/packages.phtml
|+++ downloader/template/connect/packages.phtml
--------------------------
File to patch:
Skip this patch? [y]
Skipping patch.
3 out of 3 hunks ignored
can't find file to patch at input line 1049
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git downloader/template/connect/packages_prepare.phtml downloader/template/connect/packages_prepare.phtml
|index f74c3df..86aa51b 100644
|--- downloader/template/connect/packages_prepare.phtml
|+++ downloader/template/connect/packages_prepare.phtml
--------------------------
File to patch:
Skip this patch? [y]
Skipping patch.
1 out of 1 hunk ignored
can't find file to patch at input line 1061
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git downloader/template/login.phtml downloader/template/login.phtml
|index 6e4cd2c..dbbeda8 100644
|--- downloader/template/login.phtml
|+++ downloader/template/login.phtml
--------------------------
File to patch:
Skip this patch? [y]
Skipping patch.
1 out of 1 hunk ignored
can't find file to patch at input line 1073
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git downloader/template/settings.phtml downloader/template/settings.phtml
|index 13551ac..47ab411 100644
|--- downloader/template/settings.phtml
|+++ downloader/template/settings.phtml
--------------------------
File to patch:
Skip this patch? [y]
Skipping patch.
1 out of 1 hunk ignored
Powód:downloader
katalog został usunięty z instalacji
Rozwiązanie: Dodaj downloader
ze świeżego pliku do pobrania Magento (powinna być w tej samej wersji co Twój sklep). Możesz także użyć tego lustra: https://github.com/firegento/magento . Następnie po pomyślnym zastosowaniu łatki możesz ponownie usunąć katalog.
Wiadomość: Coś podobnego do
checking file app/design/frontend/base/default/template/checkout/cart.phtml
Hunk #1 FAILED at 97 (different line endings).
1 out of 1 hunk FAILED
checking file app/design/frontend/base/default/template/checkout/cart/noItems.phtml
Hunk #1 FAILED at 31 (different line endings).
1 out of 1 hunk FAILED
checking file app/design/frontend/base/default/template/checkout/onepage/failure.phtml
Hunk #1 FAILED at 29 (different line endings).
1 out of 1 hunk FAILED
checking file app/design/frontend/base/default/template/rss/order/details.phtml
Hunk #1 FAILED at 31 (different line endings).
1 out of 1 hunk FAILED
checking file app/design/frontend/base/default/template/wishlist/email/rss.phtml
Hunk #1 FAILED at 25 (different line endings).
1 out of 1 hunk FAILED
Powód: pliki są przechowywane w \r\n
(CRLF, podział linii Windows) lub \r
(CR, podział linii Mac) zamiast \n
(LF, podział linii Unix).
Rozwiązanie: Wystarczy przekonwertować podziały wierszy, edytor tekstu lub IDE powinno to umożliwić.