Патч безпеки Magento SUPEE-6482, що таке виправлення?


28

Сьогодні 04.08.2015 був випущений новий патч безпеки, ми з колегами перевіряли патч, і завжди приємно обговорити те, що змінилося, також хтось знає, які можливі атаки можуть вплинути на неперевершений магазин? Що найгірше, що може статися?

Оновлення: я просто хотів додати електронний лист, надісланий сьогодні, щоб завершити публікацію. Оновлення електронної пошти Magento


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

2
Сам пластир, немає. Повна установка для 1.9.2.1 повинна була б бути вивчена на ці зміни, але, здається, це стосується лише 4 питань безпеки
Fiasco Labs

2
Вам доведеться виконати повне оновлення або підтримувати резервну копію 1.9.2.0 => Кешування блоків та віджетів CMS у magento-1921/app/code/core/Mage/Cms/Block/Block.phpтаmagento-1921/app/code/core/Mage/Cms/Block/Widget/Block.php
Fiasco Labs

2
merch.docs.magento.com/ce/user_guide/… - Я просто задумався, коли наступний патч настане після того, як в останні дні було зосереджено велику увагу на заголовках. І ось воно!
хакре

2
@hakre - Я прочитав вміст виправлень, перш ніж включати заголовки, якщо тільки ці заголовки фактично не є в API. Повне завантаження має кілька патчів у контролері http та шаблоні файлів cookie javascript, але патч 6482 цього не робить.
Лабораторії Фіаско

Відповіді:


13

Фактичний патч безпеки ( SUPEE-6482 ) впливає лише на два наступні файли і є патчем API.

app/code/core/Mage/Api/Model/Server/Adapter/Soap.php
app/code/core/Mage/Catalog/Model/Product/Api/V2.php

Повна установка 1.9.2.1 - це зовсім інша справа. Я б відрізняв вихідний код між 1.9.2.0 та 1.9.2.1, щоб визначити інші два елементи, які були виправлені.

Примітки до випуску призначені для повного інсталятора, ви повинні перевірити виправлення, щоб перевірити, чи він насправді включає всі елементи, відмічені в нотатках до випуску.

Наслідки запуску непатчерного сервера:

  1. Міжсайтовий сценарій з використанням недійсних заголовків => Отруєння кешем
  2. Автозавантаження включеного файлу в Magento SOAP API => Автозавантаження віддаленого коду
  3. XSS у пошуку реєстру подарунків => крадіжка файлів cookie та себе за себе
  4. Уразливість SSRF у файлі WSDL => Внутрішня витік інформації сервера та включення віддаленого файлу

ПРИМІТКА. Файли, виправлені в архіві повного встановлення, які не виправлені з патчем, так?

diff -r magento-1920/app/code/core/Mage/Core/Controller/Request/Http.php magento-1921/app/code/core/Mage/Core/Controller/Request/Http.php
300a301
>         $host = $_SERVER['HTTP_HOST'];
302,303c303,304
<             $host = explode(':', $_SERVER['HTTP_HOST']);
<             return $host[0];
---
>             $hostParts = explode(':', $_SERVER['HTTP_HOST']);
>             $host =  $hostParts[0];
305c306,313
<         return $_SERVER['HTTP_HOST'];
---
> 
>         if (strpos($host, ',') !== false || strpos($host, ';') !== false) {
>             $response = new Zend_Controller_Response_Http();
>             $response->setHttpResponseCode(400)->sendHeaders();
>             exit();
>         }
> 
>         return $host;

diff -r magento-1920/app/design/frontend/base/default/template/page/js/cookie.phtml magento-1921/app/design/frontend/base/default/template/page/js/cookie.phtml
37,38c37,38
< Mage.Cookies.path     = '<?php echo $this->getPath()?>';
< Mage.Cookies.domain   = '<?php echo $this->getDomain()?>';
---
> Mage.Cookies.path     = '<?php echo Mage::helper('core')->jsQuoteEscape($this->getPath()) ?>';
> Mage.Cookies.domain   = '<?php echo Mage::helper('core')->jsQuoteEscape($this->getDomain()) ?>';

5
Я думаю, що відсутні файли виправляють найважливішу проблему "Міжсайтовий сценарій із використанням недійсних заголовків". Випуск "XSS у Seaerch реєстру подарунків", схоже, помилково додано до документації на патч для версії CE, оскільки реєстр подарунків є лише функцією EE.
Аад Матхійсен

1
Так, я подумав, що це досить важливо, щоб застосувати відсутні зміни в моїй установці CE все одно, а не чекати, коли Magento розбере це і надішле нам патч V2, коли вони обійдуть його. Отруєння кешем та нефільтроване введення користувача, що використовується в компонентах файлів cookie, схоже, є великим.
Лабораторії Фіаско

1
Magento оновив документацію: і проблеми "Міжсайтовий сценарій із використанням недійсних заголовків", і "XSS в пошуку реєстру подарунків" позначені як "Тільки для Magento Enterprise Edition". Тим часом Magento CE 1.9.2.1 містить виправлення випуску "Сценарії між сайтом, використовуючи недійсні заголовки", або принаймні частину його.
Aad Mathijssen

1
Heh, CE коротка зміна дії. CE не має списку бажань, але, безумовно, потрібен випуск "Недійсні заголовки", щоб вийти через патч, а не зміна документації. О, ну ... більше того, чого ми очікували.
Лабораторії Фіаско

3
Для запису - згідно з нашими тестами - крос-скрипт-сценарій із використанням недійсних заголовків НЕ є вразливим для СЕ. Якщо хтось може надати POC, що існує вразливість CE, перейдіть на magento.com/security та повідомте про це.
орієнтири

9

Я детально розглядаю зміни та які побічні ефекти слід очікувати.

У версії для EE 1.13.1.0 змінилися наступні файли:

2015-08-05 07:14:25 UTC | SUPEE-6482_EE_1.13.1.0 | EE_1.13.1.0 | v2 | 7e38036f94f250514fcc11d066a43c9bdb6a3723 | Tue Jul 28 14:29:35 2015 +0300 | v1.13.1.0..HEAD
patching file app/code/core/Enterprise/PageCache/Model/Processor.php
patching file app/code/core/Mage/Api/Model/Server/Adapter/Soap.php
patching file app/code/core/Mage/Catalog/Model/Product/Api/V2.php
patching file app/code/core/Mage/Core/Controller/Request/Http.php
Hunk #1 succeeded at 294 (offset 7 lines).
patching file app/design/frontend/base/default/template/page/js/cookie.phtml
patching file app/design/frontend/enterprise/default/template/giftregistry/search/form.phtml
  • У Adapter/Soap.php, до даних аутентифікації додається urlencoding. Це не повинно мати негативних побічних ефектів. Це гарантує, що отримане wsdlUrlє дійсним. Без цієї зміни можна вплинути на URL-адресу
  • Product/Api/V2.php: Ось кілька перевірок, чи передані дані є об'єктом. Це не повинно відбуватися за звичайних обставин.
  • в Request/Http.phpі PageCache/Model/Processor.phpдодається чек при отриманні HTTP HOST. Здається, це охоплює згадані ін'єкції заголовків. Перевірка застосовується лише за наявності ;або ,в HTTP-хості, тому це повинно бути некритичним у реальних системах життя / не мати негативних побічних ефектів.
  • у cookie.phtmlвтечу додається. Отже, це потрібно перенести на вашу тему, якщо ви перезапишете цей файл
  • схожий на giftregistry/search/form.phtml

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


1
Дякуємо за підтвердження, що введення заголовка та компонент файлів cookie легко підтримувати CE.
Фіаско Лабораторії

1
Не потрібно портувати. Існують також версії патчів для CE в області завантаження.
Олексій

5

Дивна річ у тому, що патч EE містить модифікації наступних файлів:

app/code/core/Mage/Core/Controller/Request/Http.php
app/design/frontend/base/default/template/page/js/cookie.phtml

Якщо це не так, для еквівалентної версії.

Я припускаю, що у цій SUPEE-6482версії CE щось не вистачає , і V2 може бути випущений незабаром.


Я думав те саме!
rob3000

2
Так, ви помітили правильно. Ось що я отримав, розібравши архіви встановлення 1.9.2.0 та 1.9.2.1. У мене є повністю виправлена ​​установка CE завдяки цьому, я пішов вперед і вручну промацував два згадані файли. Файл файлів cookie js потрібно також зафіксувати у вашому користувальницькому шаблоні, якщо у вас є цей файл. Вони, ймовірно, пропустили контролер запиту як патч, оскільки йому доведеться виправити попередньо виправлений файл, і у нас немає любові CE.
Лабораторії Фіаско

1
Ще одна причина "чекати" кілька днів, перш ніж розгорнутись на виробничому середовищі (і використовувати ці дні, щоб зробити кращі перевірки, перш ніж виходити наживо). Сьогодні ще одне повідомлення про оновлення у Magento Backend (лише повідомлення про 2 замість 4 вразливості безпеки). У всякому разі, я зачекаю до понеділка, коли я живу, принаймні.
DarkCowboy

1
Magento оновив свою примітку до випуску: merch.docs.magento.com/ce/user_guide/… Деякі виправлення є лише EE. Але я все ще не розумію, чому ці 2 файли, основані на ядрах, не стосуються патчу CE, оскільки вони інтегровані в CE 1.9.2.1 ...
Антуан Коцюба

4

Патч випуску Magento SUPEE-6482 для виправлення наступного випуску у виданні CE & EE

Для Magento Community Edition:

  • Автозавантаження файлу включення в Magento SOAP API
  • Уразливість SSRF у файлі WSDL

Для Magento Enterprise Edition

  • Автозавантаження файлу включення в Magento SOAP API
  • Уразливість SSRF у файлі WSDL
  • Міжсайтовий сценарій з використанням недійсних заголовків

XSS у пошуку реєстру подарунків

Робити зміни на уроці

  • Mage_Api_Model_Server_Adapter_Soap

  • Mage_Catalog_Model_Product_Api_V2

Зміни на Mage_Api_Model_Server_Adapter_Soap

             : $urlModel->getUrl('*/*/*');

         if ( $withAuth ) {
-            $phpAuthUser = $this->getController()->getRequest()->getServer('PHP_AUTH_USER', false);
-            $phpAuthPw = $this->getController()->getRequest()->getServer('PHP_AUTH_PW', false);
-            $scheme = $this->getController()->getRequest()->getScheme();
+            $phpAuthUser = rawurlencode($this->getController()->getRequest()->getServer('PHP_AUTH_USER', false));
+            $phpAuthPw = rawurlencode($this->getController()->getRequest()->getServer('PHP_AUTH_PW', false));
+            $scheme = rawurlencode($this->getController()->getRequest()->getScheme());

             if ($phpAuthUser && $phpAuthPw) {
                 $wsdlUrl = sprintf("%s://%s:%s@%s", $scheme, $phpAuthUser, $phpAuthPw,

зміна в Mage_Catalog_Model_Product_Api_V2

     public function create($type, $set, $sku, $productData, $store = null)
     {
-        if (!$type || !$set || !$sku) {
+        if (!$type || !$set || !$sku || !is_object($productData)) {
             $this->_fault('data_invalid');
         }

@@ -243,6 +243,9 @@ class Mage_Catalog_Model_Product_Api_V2 extends Mage_Catalog_Model_Product_Api
      */
     protected function _prepareDataForSave ($product, $productData)
     {
+        if (!is_object($productData)) {
+            $this->_fault('data_invalid');
+        }
         if (property_exists($productData, 'website_ids') && is_array($productData->website_ids)) {
             $product->setWebsiteIds($productData->website_ids);
         }

Більше: http://www.amitbera.com/magento-security-patch-supee-6482/


1
Привіт Amit Bera (@ amit-bera), де я можу взяти патч SUPEE-6482 у вигляді окремого блискавки Magento 1.9.2.1?
Andhi Irawan

2
@ Andhi, magento 1.9.2.1 вже включений патч-код в його структуру коду, тому вам не потрібно застосовувати SUPEE-6482
Amit Bera

1
@ Amit Bera, Якщо все ще використовується Magento 1.9.1.0, чи слід оновити до 1.9.2.1? Я можу сказати, чи можна встановити лише патч SUPEE-6428?
Andhi Irawan

3
Зауважте, що недійсний патч заголовка відсутній у патчах CE, наступні файли не торкаються => app/code/core/Mage/Core/Controller/Request/Http.phpта app/design/frontend/base/default/template/page/js/cookie.phtmlє одними з відсутніх. Можливо, нам слід змінити питання вгорі, щоб прочитати: Патч безпеки Magento SUPEE-6482, що не виправлено?
Лабораторії Фіаско

1
@ Amit Bera, вибачте, додав Magento в Додано 4 серпня 2015 року в magentocommerce.com/download : Завантажити -> Magento Community Edition Patches -> SUPEE-6482
Andhi Irawan

4

Прочитайте документацію Magento щодо цього випуску, відповідь є: http://merch.docs.magento.com/ce/user_guide/Magento_Community_Edition_User_Guide.html#magento/release-notes-ce-1.9.2.1.html


5
Хоча інформативними є можливість скопіювати відповідний розділ у цей потік. Відповідь лише на посилання - не найкраща відповідь, оскільки посилання мають звичку зникати (особливо посилання на документацію Magento!)
philwinkle

1
@philwinkle - Так, так, ми всі були там. MagEbayVaporation (x_x) посилається вгамоване.
Лабораторії Фіаско

2

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

Здається, фактична частина виправлення безпеки стосується санітарії введення користувача для 4-х різних потенційних атак.

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