Чи є символьні посилання на шаблони із проблемою безпеки, і якщо так, то чому?


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 (), тому у вас можливі дуже сильні витоки безпеки, якщо ви не маєте повного контролю над своїми файлами.

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

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


1
Якщо хтось інший може створити посилання на вашому сервері, у вас вже виникають проблеми. Я маю на увазі - дивіться коментар Бена нижче. Хто коли-небудь прийматиме Magento на спільному хостингу? Хто б хотів що-небудь приймати що-небудь на спільному хостингу в наші дні і чому? :)
Свен,

3
просто тому, що є люди, які це роблять. Ви не можете сподіватися, що інші діятимуть розумно. Завжди знайдуться люди, які роблять це, і завжди знайдуться люди, які роблять помилки щодо загальної конфігурації сервера.
Flyingmana

14

Я можу лише уявити, що це ризик для спільних хостів, які в першу чергу не слід використовувати для електронної комерції.


1
На жаль, він використовується досить багато.
Пьотр Камінський

2
Відповідно до стандартів Ради безпеки PCI технічно публічна хмара є багатоорендовою, тому навіть це вважається "ризиком".
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

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


0

Не рекомендую дозволяти. Під час увімкнення символьних посилань я стикався з помилками завантаження js.
Багато;

TypeError: $ .widget не є функцією

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

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


1
Вибачте, я не розумію - вам доведеться зробити 4-5 оновлень, перш ніж це спрацює? Що це стосується символьних посилань?
Фабіан Блешшмідт

Перед відключенням посилань :) Вибачте за мою англійську мову.
rbostan

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