SUPEE-9767, модман и символические ссылки

16

Я бы хотел залатать магазин Magento с помощью SUPEE-9767. Документация SUPEE-9767 говорит мне , чтобы отключить Symlinks устанавливающего перед применением патча:

Перед применением исправления или обновлением до последней версии обязательно отключите параметр Symlinks ... Параметр, если он включен, переопределит параметр файла конфигурации, и для его изменения потребуется прямое изменение базы данных.

Но я использую modman для управления модулями, и, поскольку некоторые модули используют файлы шаблонов, настройка Symlinks включена в соответствии с предложением в README modman. Безопасно ли оставлять параметр Symlinks включенным как одну из публикаций в патче безопасности SUPEE-9767 - Возможные проблемы? предлагает (я не могу комментировать посты, так как я новый пользователь)?

Пользователи, использующие modman для управления модулями Magento 1.x, должны убедиться, что они не отключают символические ссылки, поскольку это отключит модули modman.

Если я оставлю параметр Symlinks включенным, разве магазин не будет подвержен APPSEC-1281: удаленное выполнение кода через символические ссылки , угрозу безопасности, которую должен исправить этот патч?

Существуют ли другие способы использования modman с файлами шаблонов после этого патча? (Мне известна опция «исправленная версия Mage / Core / Block / Template.php», о которой упоминает README модмана, но исправление файла ядра кажется опасным.)

ehannes
источник
1
Я использую Modman и Composer в своих проектах. Я не могу поверить, что в течение многих лет вариант Symlinks в Magento не считался бомбой. Вдруг это бомба! Это изменение без каких-либо уведомлений и объяснений создаст много проблем для многих людей. Печально о будущем Модмана и Композитора в Magento.
ADDISON74
1
Это довольно сложная задача. Если вы готовы сделать инвестиции, создание действительно эффективного процесса создания объединенного (без символических ссылок) артефакта.
Джозеф в SwiftOtter
Отличную статью об этом можно найти по адресу tomlankhorst.nl/…, где он также объясняет, как избавиться от предупреждения «Симлинки включены», представленного в Magento 1.9.3.4.
Эханнес

Ответы:

14

Вот некоторые разъяснения относительно этого изменения:

Сначала прочитайте это объяснение от Питера О'Каллагана, это даст вам хорошее понимание: https://peterocallaghan.co.uk/2017/06/appsec-1281-dangerous-symlinks/

Еще одно интересное чтение - это сообщение Макса Чедвика https://maxchadwick.xyz/blog/what-allow-symlinks-actually-does

Эта модификация на самом деле касается вызова загружаемого контента (например, изображений) с помощью шаблонных директив.

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

Обратите внимание, что они являются некоторыми средствами защиты от известного способа его использования в дополнение к самой настройке.

Таким образом, если вы понимаете риск, вы можете оставить символические ссылки включенными.

Если вам нужно включить их для новой установки, вы можете запустить:

UPDATE core_config_data SET value = 1 WHERE path = "dev/template/allow_symlink";
Рафаэль в цифровом пианизме
источник
Если я оставлю включенными символические ссылки, как бы я защитил магазин от «APPSEC-1281: Удаленное выполнение кода через символические ссылки»?
Эханнес
@ehannes, защитив доступ к своему бэкэнду, чтобы начать с эксплойта, который требует бэкэнд-доступа. Кроме того, загрузка изображений теперь имеет дополнительную проверку обратного вызова.
Рафаэль на цифровом
3
Получение доступа администратора означает, что у вас есть доступ ко всему бэкэнд-интерфейсу Magento. кого волнует эксплойт на этой стадии, найденный в скрипте загрузки изображения? этот злоумышленник может удалить все ваши продукты, может делать невообразимые вещи. обсуждение должно начинаться с того, «если этот пользователь получает права администратора, потому что настоящий администратор глуп, не во многом
защищая серверную часть
1
@ehannes пожалуйста , прочитайте это peterocallaghan.co.uk/2017/06/appsec-1281-dangerous-symlinks
Рафаэль на цифровых пианистов
2
Питер О'Каллаган пишет: «Поэтому, если кому-то удастся получить доступ к вашей панели администратора, он может выполнить злонамеренное включение для достижения RCE». Это, кажется, общий вывод в этой дискуссии. Как уже говорилось ранее, если злонамеренный пользователь имеет доступ к вашей панели администратора, есть и другие вещи, о которых нужно беспокоиться, кроме RCE. Если кому-то есть что добавить в обсуждение, пожалуйста, сделайте. Во всяком случае, я думаю, что вы многое прояснили @RaphaelatDigitalPianism, и я приму этот ответ.
Эханнес
6

Проблема не в символических ссылках, а в проблемах, которые достигают таких уровней, как ../../../../../media/tmp/hahaha.png. Если я ошибаюсь, пожалуйста, просветите меня. Исправление было названо «Разрешить символические ссылки», и включение этого параметра отключает проверку, которая была реализована с помощью realpath(). По моему мнению, исправление, которое является таким же безопасным, более производительным и совместимым с символическими ссылками, заключается в использовании strpos($path, '..')и / или проверке realpath()соответствия определенных рискованных каталогов, таких как mediaи var. Если реализовано таким образом, его не нужно будет настраивать, его всегда можно включить и при этом не разбить тысячи магазинов.

Независимо от этого, пользователь вашего веб-сервера не должен иметь доступа для записи файлов в каталогах исходного кода (как это делает Magento Connect ...), так что это еще один способ предотвратить запись вредоносного кода где-либо и выполнение в качестве шаблона блока.

Таким образом, эта атака на символические ссылки просто перенаправлена, и существует лучшее решение. На самом деле, я предоставил один более года назад, и даже есть ссылка на него в modman github README.

ColinM
источник
0

Если в дополнительном файле композитора вы задали magento-deploystrategy для копирования ваших файлов, они будут скопированы из папки поставщика, а не из символических ссылок.

    "extra":{
        "magento-root-dir":"./",
        "magento-deploystrategy":"copy",
        "magento-force": true
    }

Затем вы можете изменить ваш core_config_data, чтобы установить значение dev / template / allow_symlink равным 0

Ресурс для информации

WorkstationB
источник