Являются ли Symlinks на шаблонах проблемой безопасности, и если да, то почему?

35

Magento рекомендует не использовать шаблоны через символические ссылки:

Advanced > Developer > Template Settings > Allow Symlinks

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

До сегодняшнего дня я не вижу здесь никаких рисков.

  • Какой риск?
Фабиан Блехшмидт
источник
8
Я могу только представить, что это риск для общих хостов, который не должен использоваться для электронной коммерции.
отметки
3
@benmarks. Почему бы тебе не поставить это как ответ?
Мариус
2
Очень хороший вопрос @Fabi!
user487772
3
Я знал, что другие предложат более полные ответы. Я был ПРАВ :-D
отметки
3
@benmarks Сайт нуждается в более высоком ответе на вопрос в любом случае ;-)
user487772

Ответы:

40

Симлинки не обязательно плохие.

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

Но: вы можете запускать файлы вне корневого каталога документа (иногда это именно то, что вы хотите с ними делать, верно?). Проблема может возникнуть, если вы не находитесь в среде suEXEC и у вас есть пользователь apacheили www-dataпользователь на общем хостинге, который отвечает за обслуживание файлов из разных учетных записей. Пользователю вашей системы не разрешен доступ к файлам другого клиента, но в apache/www-dataбольшинстве случаев он будет иметь права на чтение всех общих учетных записей. Это может быть сценарий, когда один пользователь может получить доступ к файлам другого пользователя на общем хосте. Не с вашим собственным пользователем, но с помощью доступа к файлу через браузер с apache/www-dataпользователем. Подводя итог: В этом сценарии вы сможете получить доступ к файлам других пользователей => плохо.

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

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

Анна Фёлькл
источник
5
Отличное объяснение - это правильный ответ, по сути, «используйте на свой страх и риск»
philwinkle
2
Вероятно, стоит упомянуть (хотя всегда есть баланс с ошибками, связанными с безопасностью в среде «неготовности к обновлению») - Magento настоятельно не поощрял символические ссылки, связанные с эксплойтом, в котором файлы шаблонов и макетов вне app/designпапки, в сочетании с другими незначительными эксплойтами, может использоваться пользователем с правами администратора для повышения привилегий и других действий сервера.
Алан Сторм
1
В Apache httpd, если вы хотите поддерживать символические ссылки, учтите, что этот SymLinksIfOwnerMatchпараметр используется вместо FollowSymlinks.
Хакре
15

да, именно поэтому веб-серверы обычно также имеют конфигурацию «не переходить по символическим ссылкам» или по крайней мере «следуйте только по символическим ссылкам цели с тем же пользователем», потому что веб-сервер / php обычно работает с большим количеством прав, чем у вас должен быть доступ.

И поскольку веб-серверы обычно стараются избегать таких вещей, как видимый / etc / shadow, это делает шаблоны magento еще более опасными, так как шаблоны анализируются с помощью include (), поэтому у вас могут быть очень сильные утечки безопасности, если у вас нет полного контроля над файлами.

Вы можете утверждать, что есть и другие проблемы, но кто действительно знает каждый потенциальный сценарий атаки, и в большинстве случаев это комбинация различных менее проблемных дыр в безопасности, которые приводят к большим разрывам.

Кроме того, некоторое время назад было исправление безопасности, касающееся медиа-каталога и символических ссылок, поэтому вам следует поискать возможные сценарии атак.

Flyingmana
источник
1
Если кто-то может создать символические ссылки на вашем сервере, у вас уже есть большие проблемы, чем это. Я имею в виду - см. Комментарий Бена ниже. Кто бы мог разместить Magento на виртуальном хостинге? Кто бы мог разместить что-нибудь на общем хостинге в наше время и почему? :)
Sven
3
просто потому, что есть люди, которые делают это. Вы не можете ожидать, что другие будут действовать разумно. Всегда будут люди, которые делают это, и всегда будут люди, которые делают ошибки в отношении общей конфигурации сервера.
Flyingmana
14

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

benmarks
источник
1
К сожалению, он используется довольно часто.
Петр Каминский
2
В соответствии со стандартами PCI Security Council технически публичное облако является мультитенантным, поэтому даже это считается «риском».
Philwinkle
4

Патч Magento SUPEE-9767 включает в себя APPSEC-1281: Удаленное выполнение кода через символические ссылки, поэтому да, символические ссылки в шаблонах представляют собой проблему безопасности.

Тип:
Удаленное выполнение кода (RCE)

CVSSv3 Серьезность:
8,8 (высокая)

Известные атаки:
да. Злоумышленники отключают защиту конфигурации после получения доступа администратора и загружают вредоносный код.

Описание:
использование параметра AllowSymlinks в настройках конфигурации может разрешить загрузку изображения, содержащего вредоносный код. Хотя этот параметр по умолчанию отключен, злоумышленник, имеющий доступ к настройкам конфигурации хранилища, может включить его и выполнить код удаленно.

Продукт (ы),
на которые влияют : Magento CE до 1.9.3.3 и Magento EE до 1.14.3.3

Исправлено:
CE 1.9.3.3, EE 1.14.3.3, SUPEE-9767

Репортер:
Вилко Нинхаус

ehannes
источник
0

Не рекомендую разрешать. Я столкнулся с ошибками загрузки js, когда включены символические ссылки.
Много;

Ошибка типа: $ .widget не является функцией

Я должен попробовать 4-5 обновить для успешно загруженных страниц.
После закрытия, возможно, не развернутые ресурсы загружаются медленно в первый раз, но ошибки js исчезли.

PS: После отключения символической ссылки, вы должны удалять развернутую копию файлов после каждого изменения для static.php и переписывать ее для вас.

rbostan
источник
1
Извините, я не понимаю - нужно сделать 4-5 обновлений, прежде чем это сработает? Какое это имеет отношение к символическим ссылкам?
Фабиан Блехшмидт
Перед отключением символических ссылок :) Извините за мой английский.
rbostan
Мы говорим о magento2? Тогда я понимаю, что я не понимаю - пока нет понятия о 2.
Фабиан Блехшмидт