Новий патч supee-6788 як застосувати патч


29

Після тижнів очікування патча сьогодні (27.10.2015) його випустили: SUPEE-6788

Багато речей було зафіксовано, а також рекомендується переглянути встановлені модулі на предмет можливої ​​вразливості.

Я відкриваю цю публікацію, щоб отримати деяку інформацію про те, як застосувати патч. Які кроки застосувати патч? Наскільки я розумію, це такі кроки:

  1. Виправити модулі з функцією адміністратора, яка не знаходиться під URL-адресою адміністратора
  2. Виправити модулі, які використовують оператори SQL як імена полів або поля втечі
  3. Блоки або директиви білого списку, в яких використовуються змінні типу {{config path=”web/unsecure/base_url”}}і{{bloc type=rss/order_new}}
  4. Адресація потенційного експлуатації за допомогою типу файлу користувацьких опцій (не маю уявлення, як це зробити)
  5. Нанесіть пластир

Це правильна процедура?


1
Поточні перелічені версії CE 1.7.0.0 до 1.9.2.0
Labs Fiasco

5
Патч змінює .htaccess.sample, а також .htaccess. Остання налаштована в більшості магазинів, це призведе до виходу з ладу патча => Вам потрібно тимчасово замінити його вихідним файлом від Magento, застосувати патч, відновити свій власний .htaccess і застосувати зміну, яка захищає доступ cron.phpвручну (don ' t використовувати систему виробництва для цього процесу, звичайно!)
Фабіан Шменглер

1
що з тими, хто використовує nginx?
lloiacono

4
Я голосую, щоб закрити це питання поза темою, тому що питання немає. Перемістіть дискусії до чату
7

2
Є питання до самої назви посади, також в останньому абзаці я більш конкретний. Незалежно від цього, цей вид публікацій є дуже корисним на мій погляд, щоб централізувати коментарі та найкращі практики при застосуванні щойно випущеного виправлення.
lloiacono

Відповіді:


33

Взагалі ви можете застосувати виправлення, як і всі попередні. Перегляньте офіційну документацію та перевірте цю посаду SE . Але так, є кілька додаткових моментів, які слід перевірити, застосовуючи цей патч. Байт / Гіпернод має гарний пост про це.

  1. Перевірте, чи є ваша тема власною template/customer/form/register.phtmlчи власною template/persistent/customer/form/register.phtml. Якщо це так, переконайтеся, що він містить a form_key.
  2. Перевірте, чи є у вашої теми спеціальна layout/customer.xml. Якщо це так, обов'язково застосуйте необхідні зміни з патча ( customer_account_resetpasswordбуло змінено на customer_account_changeforgotten).
  3. Чи використовуєте ви нестандартні змінні на сторінках CMS, статичних блоках або шаблонах електронної пошти? Потім переконайтеся, що ви їх додаєте в білий список. Дивіться це запитання щодо SE, щоб дізнатися, як додати список змінних / блоків.
  4. Ви запускаєте cron.phpчерез HTTP? Переконайтеся, що вам краще користуватися cron.sh. Якщо це неможливо, принаймні переконайтеся, що ви телефонуєте cron.php через CLI PHP. Якщо з певних причин ви не можете налаштувати справжню cronjob і вам потрібно запустити її через HTTP, перегляньте це питання SE
  5. Переконайтесь, що всі ваші розширення використовують "нову" маршрутизацію адміністратора. Ви можете використовувати цей плагін n98-magerun для перевірки. Ви також можете використовувати цей сценарій CLI . Ви також можете ознайомитись із цим пов'язаним питанням SE .
    1. Коли всі ваші розширення використовують належну маршрутизацію адміністратора, переконайтесь, що вимкнено "Увімкнути режим сумісності маршрутизатора з адміністратором" у розділі Система - Конфігурація - Адміністратор - Безпека.
  6. Якщо ви використовуєте M2ePro, оновіть його до останньої версії, оскільки старі версії не працюють з новим патчем.

Під час оновлення переконайтесь, що ви видалили файл dev/tests/functional/.htaccess. Він більше не присутній у Magento 1.9.2.2. Тримаючи це означає, що ви все ще вразливі.

У будь-якому випадку перевірте свою сторінку за допомогою MageReport після оновлення, щоб побачити, чи все добре пішло.

Існує також технічна публікація блогу Piotr , в якій описані критичні зміни.


Лише невелика примітка, сценарій CLI зазначає "Перевірити все добре, а потім відключити режим сумісності адміністратора-контролера". Я думаю, що вони означають навпаки, щоб це зробити можливим. Це так?
Майкл

1
@kaska Якщо всі ваші розширення добре, вам потрібно відключити режим сумісності.
Саймон

у виробничих умовах не слід повністю видаляти / розробляти?
paj

1
@paj теоретично так. Але з версією 1.9.2.2 він захищений .htaccess, тому його слід нормально зберігати. Просто переконайтесь, що дотримуйтесь моїх рекомендацій .htaccess вище.
Саймон

Дякую за повноту, вони повинні дозволити вам написати наступні номери випущених версій наступного разу! Супер корисно!
asherrard


3

Для Nginx переконайтесь, що ви заблокували доступ до cron.php та папки dev. Ми використовуємо цей блок:

location ~ ^/(app|includes|media/downloadable|pkginfo|report/config.xml|var|magmi|cron.php|dev)/? { deny all; }

ваш регекс не працюватиме, тому що ви перевіряєте лише каталог. тому "report / config.xml, cron.php" не збігаються, і у вас є символ вертикальної смуги або труби в кінці .. copy-paste? також не псуйте регулярний вираз разом з / app /, якщо ви щось не помітите, він буде зламаний.
MagenX

Неправильне копіювання та вставлення завдання, вибачте. Додано в? наприкінці, тому косою косою рисою необов’язково. Тестували його лише зараз, і він працює як слід.
Адам Л.

також цей регулярний вираз вразливий, у вас ^ /, переконайтеся, що ви не копіюєте вихідні файли у верхню папку, наприклад / old /, / upgrade / тощо
MagenX

@MagenX Отже, ви говорите, що якщо ви не використовуєте контроль версій або стандартне адміністрування системи BCP, в цьому винний винен?
Мельвін

1

Я щойно застосував патч на моїй 1.10.1 EE, і це спричиняє побічні ефекти на рідних екранах, оскільки ядро ​​не відповідає APPSEC-1063:

Приклад:

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

Ви можете знайти 2 addFieldToFilterдзвінки, не сумісні з APPSEC-1063.

Це зламає сітки клієнта> атрибути, тому вам доведеться виправити патч, використовуючи фокус, який вони рекомендують, у pdf "SUPEE-6788-Technical% 20Details% 20.pdf" у розділі APPSEC-1063

Зміна кількох

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

(де поле $ містить складні (CASE .. КОЛИ ...) sql заяви)

в

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

Обидва rhoerr-пакети інструментів 6788 та інструменти і гайтерйони не виявили подібного роду проблеми, я перевірив усі інші -> addFieldToFilter ($ і, здається, ніхто не викликає проблеми.

Інші пошкоджені основні файли 1,10: (знайдено в rhoerr's supee-6788-toolbox)

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

Може бути і більше.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.