Как уже упоминалось, исправленные уязвимости подробно описаны на этой официальной странице (новые документы для продавцов): http://merch.docs.magento.com/ce/user_guide/Magento_Community_Edition_User_Guide.html#magento/patch-releases-2015.html.
Резюме
Этот комплект включает защиту от следующих проблем безопасности:
- Утечка информации о клиентах через RSS и повышение привилегий
- Запрос подделки в Magento Connect приводит к выполнению кода
- Межсайтовый скриптинг в хотелках
- Межсайтовый скриптинг в корзине
- Раскрытие пути магазина
- Разрешения на файлы журнала слишком широкие
- Межсайтовый скриптинг в Admin
- Межсайтовый скриптинг в заказах RSS
После исправления нескольких магазинов вот что я собрал:
Тематические патчи
Некоторые файлы тем были исправлены с добавлением экранирования для предотвращения возможных атак XSS:
checkout/cart.phtml
checkout/cart/noItems.phtml
checkout/onepage/failure.phtml
rss/order/details.phtml
wishlist/email/rss.phtml
Если ваша (-ые) тема (-ы) содержат какой-либо из этих шаблонов, или если вы внесли изменения непосредственно в base/default
(удачи, вы облажались), то вам необходимо исправить их вручную:
в шаблонах оформления заказа замените все
$this->getContinueShoppingUrl()
с
Mage::helper('core')->quoteEscape($this->getContinueShoppingUrl())
в wishlist/email/rss.phtml
, заменить
$this->helper('wishlist')->getCustomerName()
с
Mage::helper('core')->escapeHtml($this->helper('wishlist')->getCustomerName())
В rss/order/details.phtml
, заменить
<?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 />
с
<?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 />
права доступа
.htaccess
файлы были добавлены downloader/Maged
и downloader/lib
запретить прямой доступ к исходным файлам. Если вы используете nginx, вам нужно добавить эти правила для достижения того же самого ( спасибо Бен Лессани за это):
location /downloader/Maged/ { deny all; }
location /downloader/lib/ { deny all; }
Но я downloader
все равно рекомендую исключить из развертываний действующую систему, в этом случае вам не нужно предпринимать никаких действий.
Права администратора (ACL)
Если вы используете ограниченные учетные записи администратора, некоторые меню сторонних расширений могут больше не работать для них. Причина в том, что возвращаемое значение по умолчанию Mage_Adminhtml_Controller_Action::_isAllowed()
было изменено с true
на Mage::getSingleton('admin/session')->isAllowed('admin')
. Расширения, которые не переопределяют этот метод в своих административных контроллерах, поскольку они не используют ACL, теперь нуждаются в привилегии «ALL» .
Единственное решение - это исправить патчи и добавить этот метод ко всем их контроллерам администратора:
protected function _isAllowed()
{
return true;
}
Или если у них действительно есть ресурс ACL, определенный в etc/adminhtml.xml
:
protected function _isAllowed()
{
return Mage::getSingleton('admin/session')->isAllowed('ENTER RESOURCE IDENTIFIER HERE');
}
(вы можете видеть, что патч делает то же самое для Phoenix_Moneybookers
более старых версий Magento, таких как 1.7, где это расширение было включено)
Более подробное описание этой проблемы и объяснение того, как определить отсутствующие ресурсы ACL, см. В разделе Ошибки, связанные с отказом в доступе после установки SUPEE-6285.
Возможные ошибки при применении патча
Сообщение:
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
Причина:default/modern
тема была удалена из установки
Решение: добавьте app/design/frontend/default/modern
из новой загрузки Magento (должна быть та же версия, что и ваш магазин). Вы также можете использовать это зеркало: https://github.com/firegento/magento . После успешного применения патча вы можете удалить тему снова.
Сообщение
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
Причина:downloader
каталог был удален из установки
Решение: добавьте downloader
из новой загрузки Magento (должна быть та же версия, что и ваш магазин). Вы также можете использовать это зеркало: https://github.com/firegento/magento . После успешного применения патча вы можете снова удалить каталог.
Сообщение: нечто похожее на
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
Причина: файлы сохраняются с \r\n
(CRLF, разрыв строки Windows) или \r
(CR, разрыв строки Mac) вместо \n
(LF, разрыв строки Unix).
Решение: просто преобразуйте разрывы строк, ваш текстовый редактор или IDE должны быть способны на это.