Новый патч supee-6788 как наносить патч

29

После нескольких недель ожидания патча сегодня (27.10.2015) он был выпущен: SUPEE-6788

Многие вещи были исправлены, а также рекомендуется проверить установленные модули на предмет возможных уязвимостей.

Я открываю этот пост, чтобы получить представление о том, как применить патч. Какие шаги для применения патча? Насколько я понимаю, это шаги:

  1. Исправьте модули с функциональностью администратора, которая не находится под URL администратора
  2. Исправьте модули, которые используют операторы SQL в качестве имен полей или escape-полей
  3. Белый список блоков или директив, которые используют переменные, такие как {{config path=”web/unsecure/base_url”}}и{{bloc type=rss/order_new}}
  4. Устранение потенциального эксплойта с типом файла пользовательской опции
  5. Применить патч

Это правильная процедура?

lloiacono
источник
1
Текущие перечисленные версии CE 1.7.0.0
Fiasco Labs
5
Патч меняется .htaccess.sampleтак же, как и .htaccess. Последний настраивается в большинстве магазинов, это приведет к сбою патча => Вам нужно временно заменить его оригинальным файлом из Magento, применить патч, восстановить собственный .htaccess и применить изменения, которые защищают доступ cron.phpвручную (не Конечно, я не использую производственную систему для этого процесса!)
Фабиан Шменглер,
1
как насчет тех, кто использует nginx?
Льояконо
4
Я голосую, чтобы закрыть этот вопрос как не по теме, потому что нет вопросов. Пожалуйста, переместите обсуждения в чат
7
2
В самом названии поста есть вопрос, также в последнем абзаце я более конкретен. Несмотря на это, такого рода посты, на мой взгляд, очень полезны для централизации комментариев и лучших практик при применении недавно выпущенного патча.
Льояконо

Ответы:

33

В общем, вы можете применить патч как все предыдущие. Взгляните на официальную документацию и проверьте этот пост SE . Но да, есть некоторые дополнительные моменты, которые вы должны проверить при применении этого патча. Byte / Hypernode имеет хороший пост об этом.

  1. Проверьте, есть ли у вашей темы кастом template/customer/form/register.phtmlили кастом template/persistent/customer/form/register.phtml. Если это так, убедитесь, что он включает в себя 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 после обновления, чтобы увидеть, все ли прошло хорошо.

Существует также технический пост в блоге Петра , в котором описаны критические изменения.

Саймон
источник
Небольшое примечание: скрипт CLI упоминает: «Убедитесь, что все хорошо, затем отключите режим совместимости с контроллером администратора». Я думаю, что они имеют в виду противоположное, чтобы включить его. Это правильно?
Майкл
1
@kaska Если все ваши расширения в порядке, вы должны отключить режим совместимости.
Саймон
в производственной среде вы не должны полностью удалить / dev?
Пай
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 / etc
MagenX
@MagenX Итак, вы говорите, что если вы не используете BCP для контроля версий или стандартного системного администрирования, то виноват ли это регулярное выражение?
Мелвин
1

Я только что применил патч к своему 1.10.1 EE, и это вызывает побочные эффекты на собственных экранах, потому что ядро ​​не совместимо с APPSEC-1063:

Пример:

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

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

Это нарушает сетки Customer> Attribute, поэтому вы должны исправить патч, используя прием, который они рекомендуют в pdf «SUPEE-6788-Technical% 20Details% 20.pdf» в разделе APPSEC-1063

Меняя несколько

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

(где $ field содержит сложные (CASE .. WHEN THEN ...) SQL-операторы)

в

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

И supee-6788-toolbox от rhoerr, и gaiterjones 'не обнаружили подобных проблем, я проверил все остальные -> addFieldToFilter ($, и, похоже, ни одна из них не вызывает проблему.

Другие затронутые файлы ядра 1.10: (найдено с помощью rhoerr supee-6788-toolbox)

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

Там может быть больше.

SMASHED
источник