Исправление безопасности 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/… - Мне просто интересно, когда выйдет следующий патч после того, как в последние дни было так много внимания уделено заголовкам. И вот оно!
hakre

2
@hakre - я бы прочитал содержимое патча, прежде чем включать заголовки, если только эти заголовки не находятся в API. Полная загрузка содержит некоторые исправления в контроллере http и шаблоне cookie javascript, но исправление 6482 - нет.
Fiasco Labs

Ответы:


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 в Gift Registry Seaerch», по-видимому, ошибочно добавлена ​​в документацию патча для версии CE, так как Gift Gift - это функция только для EE.
Аад Матейссен

1
Да, я подумал, что было достаточно важно применить пропущенные изменения к моей установке CE в любом случае и не ждать, пока Magento выяснит это и отправит нам патч V2, когда они дойдут до него. Отравление кэша и нефильтрованный пользовательский ввод, используемый в компонентах cookie, выглядит как важная персона.
Fiasco Labs

1
Magento обновила документацию: проблемы «Межсайтовый скриптинг с использованием непроверенных заголовков» и «XSS в поиске в реестре подарков» помечены как «Только для Magento Enterprise Edition». Но в то же время Magento CE 1.9.2.1 содержит исправления для проблемы «Межсайтовый скриптинг с использованием непроверенных заголовков» или, по крайней мере, ее часть.
Аад Матейссен

1
Хех, CE коротко изменился в действии. У CE нет Списка желаний, но ему определенно нужна проблема «Unvalidated Headers» для устранения патча, а не изменения документации. О, хорошо ... больше того, что мы привыкли ожидать.
Fiasco Labs

3
Для записи - согласно нашим тестам - межсайтовый скриптинг с использованием непроверенных заголовков НЕ является уязвимостью CE. Если кто-либо может предоставить 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.
Fiasco Labs

1
Нет необходимости портировать. В зоне загрузки также есть версии патчей для CE.
Алекс

5

Странно то, что патч EE содержит модификации следующих файлов:

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

Когда CE нет, для эквивалентной версии.

Я полагаю, что в этой SUPEE-6482версии CE чего-то не хватает , и скоро может быть выпущен V2.


Я думал то же самое!
rob3000

2
Да, вы правильно заметили. Это то, что я получил, прочитав установочные архивы 1.9.2.0 и 1.9.2.1. Из-за этого у меня есть полностью пропатченная установка CE, я вручную пропатчил два упомянутых файла. Файл cookie js должен быть исправлен в вашем пользовательском шаблоне, если у вас есть этот файл в нем. Вероятно, они пропустили контроллер запросов, поскольку патч для него должен был бы пропатчить ранее пропатченный файл, и у нас не было любви к CE.
Fiasco Labs

1
Еще одна причина «подождать» несколько дней, прежде чем приступить к развертыванию в производственной среде (и использовать эти дни, чтобы лучше выполнять проверки перед запуском в эксплуатацию). Сегодня еще одно уведомление об обновлении в Magento Backend (только уведомление об уязвимости 2 вместо 4). Во всяком случае, я буду ждать до понедельника, по крайней мере, чтобы жить.
DarkCowboy

1
Magento обновил свои заметки о выпуске: merch.docs.magento.com/ce/user_guide/… Некоторые исправления являются эффективными только для EE. Но я до сих пор не понимаю, почему эти 2 файла, основанные на ядре, не относятся к
патчу

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), где взять патч 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, Что не исправлено?
Fiasco Labs

1
@ Amit Bera, извините, был добавлен Magento на Добавлено 4 августа 2015 г. в magentocommerce.com/download : Скачать -> Патчи для Magento Community Edition -> 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) ссылки в изобилии.
Fiasco Labs

2

Этот патч, как и другие последние патчи, содержит множество исправлений копирования, лицензий и опечаток. Это также вводит несколько опечаток из того, что я видел.

Фактическая часть исправления безопасности, по-видимому, предназначена для очистки входных данных пользователя для 4 различных потенциальных атак.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.