SUPEE-9767, модем і символьні посилання


16

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

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

Але я використовую modman для управління модулями, і оскільки деякі модулі використовують файли шаблонів, параметр Symlinks вмикається відповідно до пропозиції в README модмана. Чи безпечно залишати налаштування посилань увімкненим як одне з дописів у патчі безпеки SUPEE-9767 - можливі проблеми? пропонує (Я ще не можу коментувати публікації, оскільки я новий користувач)?

Користувачі, що використовують модуль для управління модулями Magento 1.x, повинні гарантувати, що вони не відключають символьні посилання, оскільки це відключить модулі модулів.

Якщо я залишлю параметр Symlinks увімкненим, чи не буде магазин піддаватися APPSEC-1281: Віддалене виконання коду через посилання , загроза безпеці, яку цей виправлення має вирішити?

Чи є інші способи використання модмана з файлами шаблонів після цього виправлення? (Я знаю варіант "виправленої версії Mage / Core / Block / Template.php", про який згадує README модуля, але виправлення основного файлу здається небезпечним.)


1
Я використовую Модмана та Композитора у своїх проектах. Я не можу повірити, протягом багатьох років варіант Symlinks в Магенто не вважався бомбою. Раптом це бомба! Ця зміна без будь-яких сповіщень та пояснень створить багатьом неприємності. Сумно з приводу майбутнього Модмана та композитора в Магенто.
ADDISON74

1
Це дуже складна задача. Якщо ви готові інвестувати, створити процес збирання, який генерує об'єднаний (без символьних посилань) артефакт - це дуже приємний шлях.
Джозеф у SwiftOtter

Чудову статтю про це можна знайти на веб- сайті tomlankhorst.nl/…, де він також пояснює, як позбутися " Посилання символів увімкнено" - попередження, введене в Magento 1.9.3.4.
ehannes

Відповіді:


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

@ehannes, захищаючи доступ до вашого бекенда для початку, оскільки експлуатація вимагає доступу до бекенда. Крім того, завантаження зображення тепер має додаткову перевірку зворотного дзвінка.
Рафаель у Digital Pianism

3
отримання доступу адміністратора означає, що у вас є доступ до всього інтерфейсу Magento Backkend. кому піклується про подвиг на цьому етапі, знайдений у сценарії завантаження зображення? що злісний користувач може видалити всі ваші продукти, може робити немислимі речі. дискусія повинна починатися з "якщо цей користувач отримує права адміністратора, тому що справжній адміністратор нерозумно багато не захищає бекенд"
ADDISON74


2
Peter O'Callaghan пише: "Тому, якщо комусь вдасться отримати доступ до вашої панелі адміністратора, він може виконати зловмисне включення для досягнення RCE". Це, мабуть, є загальним висновком у цій дискусії. Як було сказано раніше, якщо зловмисний користувач має доступ до вашої панелі адміністратора, можна турбуватися про інші речі, ніж RCE. Якщо хтось має щось додати до дискусії, будь ласка, зробіть це. Так чи інакше, я думаю, що ви зробили все набагато зрозуміліше @RaphaelatDigitalPianism, і я прийму цю відповідь.
ehannes

6

Проблема не є посиланнями, проблема - це шляхи, що досягають таких рівнів, як ../../../../../media/tmp/hahaha.png. Якщо я помиляюся з цього приводу, просвіти мене. "Виправлення" було названо "Дозволити символьні посилання", і це дозволить відключити перевірку, яка була реалізована за допомогою realpath(). На мою думку, виправлення, яке настільки ж захищене, ефективніше і все ще сумісне із символьними посиланнями, - це використання strpos($path, '..')та / або перевірка realpath()відповідності певних ризикових каталогів, як mediaі var. Якщо його реалізувати подібним чином, його не потрібно було налаштовувати, він завжди може бути ввімкнутий і все-таки не зламати тисячі магазинів.

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

Отже, ця атака на символьні посилання просто неправильно направлена ​​і існує краща помилка. Насправді я запропонував його більше року тому, і навіть є посилання на нього в модманському github README.


0

Якщо в додатковому файлі композитора ви встановите magento -loystrategy для копіювання ваших файлів, скопіюйте їх із папки постачальника, а не з посилань.

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

Потім ви можете змінити ваші core_config_data, щоб встановити значення dev / template / enable_symlink на 0

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


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