Як уже згадувалося, виправлені вразливості докладно описані на цій офіційній сторінці (нові документи продавця): http://merch.docs.magento.com/ce/user_guide/Magento_Community_Edition_User_Guide.html#magento/patch-releases-2015.html
Підсумок
Цей пакет включає захист від таких проблем, пов’язаних із безпекою:
- Витік інформації про клієнтів за допомогою RSS та привілейованих ескалацій
- Запит на підробку в Magento Connect приводить до виконання коду
- Міжсайтовий сценарій у списку бажань
- Міжсайтовий сценарій у кошику
- Розкриття інформації про шлях
- Дозволи для файлів журналу занадто широкі
- Міжсайтовий сценарій в адміністраторі
- Міжсайтовий сценарій в 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, вам потрібно додати ці правила, щоб досягти того ж (thx до Бен Лессані для цього):
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, тепер потребують привілею "ВСІ" .
Єдине рішення - виправити розширення та додати цей метод до всіх їхніх адміністраторів:
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 повинні бути спроможними до цього.