Poprawka bezpieczeństwa Magento SUPEE-6482, Co jest załatana?

28

Dzisiaj 04.08.2015 została wydana nowa łatka bezpieczeństwa, niektórzy koledzy i ja sprawdzaliśmy łatkę i zawsze miło jest porozmawiać o tym, co się zmieniło, czy też ktoś wie, jakie są możliwe ataki, które mogą wpłynąć na niezakończony sklep? Co najgorszego może się zdarzyć?

Aktualizacja: Chciałem tylko dodać e-mail Magento wysłany dzisiaj, aby ukończyć post. Aktualizacja e-maila Magento

lloiacono
źródło
1
Jestem pewien, że w tych dniach nastąpi podsumowanie. Jeśli jednak już to sprawdziłeś i chcesz porozmawiać, śmiało! Podziel się swoimi przemyśleniami i ustaleniami!
mam08ixo
2
Sama łatka, nie. Pełna instalacja wersji 1.9.2.1 musiałaby zostać sprawdzona pod kątem tych zmian, wydaje się, że w tym momencie rozwiązuje tylko 4 problemy bezpieczeństwa
Fiasco Labs
2
Trzeba będzie wykonać pełną aktualizację lub backport 1.9.2.0 => CMS bloku i Widget buforowanie w magento-1921/app/code/core/Mage/Cms/Block/Block.phpimagento-1921/app/code/core/Mage/Cms/Block/Widget/Block.php
Fiasco Labs
2
merch.docs.magento.com/ce/user_guide/… - Właśnie się zastanawiałem, kiedy pojawi się następny patch po tym, jak wiele uwagi poświęcono nagłówkom w ostatnich dniach. I oto jest!
hakre
2
@hakre - Przeczytałbym treść łatki przed dołączeniem nagłówków, chyba że te nagłówki są w interfejsie API. Pełne pobranie zawiera kilka poprawek w kontrolerze http i szablonie plików cookie javascript, ale łatka 6482 nie.
Fiasco Labs

Odpowiedzi:

13

Rzeczywista poprawka bezpieczeństwa ( SUPEE-6482 ) wpływa tylko na dwa następujące pliki i jest poprawką API.

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

Pełna instalacja 1.9.2.1 to zupełnie inna sprawa. Różniłbym kod źródłowy między 1.9.2.0 a 1.9.2.1, aby dowiedzieć się o dwóch pozostałych poprawionych elementach.

Informacje o wersji dotyczą pełnego instalatora, należy sprawdzić poprawkę, aby zobaczyć, czy faktycznie zawiera ona wszystkie elementy wymienione w informacjach o wersji.

Konsekwencje uruchomienia niezałatanego serwera:

  1. Skrypty między witrynami przy użyciu nieważnych nagłówków => Zatrucie pamięci podręcznej
  2. Automatyczne ładowanie pliku Dołączenie do Magento SOAP API => Zdalne automatyczne ładowanie kodu
  3. XSS w Wyszukiwarce rejestru prezentów => Kradzież plików cookie i podszywanie się pod użytkownika
  4. Luka w zabezpieczeniach SSRF w pliku WSDL => Wyciek informacji z wewnętrznego serwera i zdalne włączenie pliku

UWAGA: Pliki załatane w archiwum pełnej instalacji, które nie są załatane łatką, hmm?

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()) ?>';
Fiasco Labs
źródło
5
Myślę, że brakujące pliki naprawiają najbardziej krytyczny problem „Skrypty między witrynami przy użyciu nieważnych nagłówków”. Wydaje się, że problem „XSS w Gift Registry Seaerch” został omyłkowo dodany do dokumentacji łaty dla wersji CE, ponieważ Gift Gift jest funkcją EE.
Aad Mathijssen,
1
Tak, doszedłem do wniosku, że wystarczająco ważne było zastosowanie brakujących zmian w mojej instalacji CE i nie czekanie, aż Magento to rozwiąże i wyśle ​​nam łatkę V2, kiedy się do niej zbliżą. Zatrucie pamięci podręcznej i niefiltrowane dane wejściowe użytkownika używane w komponentach cookie wydają się być biggie.
Fiasco Labs,
1
Magento zaktualizowało dokumentację: zarówno problemy „Cross-site Scripting using Unvalidated Headers”, jak i „XSS in Gift Registry Search” są oznaczone jako „Tylko dla Magento Enterprise Edition”. Tymczasem Magento CE 1.9.2.1 zawiera poprawki dotyczące problemu „Skrypty między witrynami przy użyciu nieważnych nagłówków” lub przynajmniej jego części.
Aad Mathijssen,
1
Heh, krótka zmiana w CE. CE nie ma Listy życzeń, ale zdecydowanie potrzebuje problemu „Unvalidated Headers”, aby przejść przez łatkę, a nie zmianę dokumentacji. No cóż ... więcej tego, czego się spodziewaliśmy.
Fiasco Labs,
3
Dla przypomnienia - zgodnie z naszymi testami - skrypty między witrynami przy użyciu nieważnych nagłówków NIE są podatnością na zagrożenia CE. Jeśli ktokolwiek może podać POC, że istnieje luka w zabezpieczeniach CE, przejdź do magento.com/security i zgłoś to.
benmarks
9

Mam szczegółową analizę zmian i jakich skutków ubocznych należy się spodziewać.

W wersji dla EE 1.13.1.0 zmieniono następujące pliki:

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
  • W Adapter/Soap.phpurlencoding jest dodawany do danych uwierzytelniających. Nie powinno to mieć negatywnego skutku ubocznego. Zapewnia to, że wynikowy wsdlUrljest prawidłowy. Bez tej zmiany można wpłynąć na adres URL
  • Product/Api/V2.php: Oto kilka sprawdzeń, czy przekazane dane są obiektem. Nie powinno się to zdarzyć w normalnych okolicznościach.
  • w Request/Http.phpi PageCache/Model/Processor.phpdodaje się czek podczas pobierania HTTP HOST. Wydaje się, że obejmuje to wspomniane zastrzyki z nagłówka. Kontrola ma zastosowanie tylko wtedy, gdy istnieje host ;lub ,HTTP, więc powinno to być bezkrytyczne w rzeczywistych systemach / nie powinno mieć negatywnych skutków ubocznych.
  • w cookie.phtmlucieczce jest dodawany. Więc to musi być przeniesione do twojego motywu, jeśli zastąpisz ten plik
  • podobne do giftregistry/search/form.phtml

Podsumowując, powiedziałbym, że zastosowanie poprawki nie powinno mieć żadnych negatywnych skutków ubocznych. Pamiętaj, aby przekazać zmiany do .phtmlplików.

Alex
źródło
1
Dzięki za potwierdzenie, wstrzyknięcie nagłówka i ucieczka komponentu cookie są łatwe do przeniesienia do CE.
Fiasco Labs,
1
Nie trzeba przenosić. Istnieją wersje łatek również dla CE w obszarze pobierania.
Alex,
5

Dziwne jest to, że łatka EE zawiera modyfikacje następujących plików:

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

Kiedy CE nie, dla równoważnej wersji.

Przypuszczam, że w tej SUPEE-6482wersji CE czegoś brakuje , a V2 może wkrótce zostać wydane.

Antoine Kociuba
źródło
Pomyślałem o tym samym!
rob3000,
2
Tak, dobrze zauważyłeś. To właśnie otrzymałem, różnicując archiwa instalacyjne 1.9.2.0 i 1.9.2.1. Z tego powodu mam w pełni poprawioną instalację CE, poszedłem dalej i ręcznie załatałem dwa wspomniane pliki. Plik cookie js musi również zostać załatany w niestandardowym szablonie, jeśli masz w nim ten plik. Prawdopodobnie pominęli kontroler żądań jako poprawkę, ponieważ musiałby załatać wcześniej załatany plik i nie mamy już miłości CE.
Fiasco Labs,
1
Jest jeszcze jeden powód, aby „czekać” kilka dni przed wdrożeniem w środowisku produkcyjnym (i wykorzystać te dni, aby lepiej sprawdzać przed uruchomieniem). Dzisiaj jeszcze jedno powiadomienie o aktualizacji w Magento Backend (tylko powiadomienie o luce bezpieczeństwa 2 zamiast 4). W każdym razie poczekam do poniedziałku przynajmniej na koncert.
DarkCowboy,
1
Magento zaktualizowało informację o wydaniu: merch.docs.magento.com/ce/user_guide/… Niektóre łatki są efektywnie tylko EE. Ale wciąż nie rozumiem, dlaczego te 2 pliki, oparte na rdzeniu, nie są objęte łatką CE, ponieważ są zintegrowane z CE 1.9.2.1 ...
Antoine Kociuba,
4

Poprawka wydania Magento SUPEE-6482 do naprawy poniższego wydania w edycji CE i EE

Dla Magento Community Edition:

  • Automatyczne ładowanie plików w API SOAP Magento
  • Luka w zabezpieczeniach SSRF w pliku WSDL

Dla Magento Enterprise Edition

  • Automatyczne ładowanie plików w API SOAP Magento
  • Luka w zabezpieczeniach SSRF w pliku WSDL
  • Skrypty między witrynami przy użyciu nieważnych nagłówków

XSS w wyszukiwaniu rejestru prezentów

Robienie zmian w klasie

  • Mage_Api_Model_Server_Adapter_Soap

  • Mage_Catalog_Model_Product_Api_V2

Zmiany w 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,

zmiana w 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);
         }

Zobacz więcej na: http://www.amitbera.com/magento-security-patch-supee-6482/

Amit Bera
źródło
1
Cześć Amit Bera (@ amit-bera), gdzie mogę dostać łatkę SUPEE-6482 w postaci osobnego zipu Magento 1.9.2.1?
Andhi Irawan,
2
@ Andhi, magento 1.9.2.1 zostało już dołączone do kodu poprawki w jego strukturze kodu, więc nie trzeba nakładać SUPEE-6482
Amit Bera
1
@ Amit Bera, jeśli nadal używasz Magento 1.9.1.0, czy zaktualizować do wersji 1.9.2.1? Mam na myśli, czy mogę zainstalować tylko łatkę SUPEE-6428?
Andhi Irawan,
3
Zauważ, że nieważnej poprawki nagłówka nie ma w łatkach CE, następujące pliki nie są dotykane => app/code/core/Mage/Core/Controller/Request/Http.phpi app/design/frontend/base/default/template/page/js/cookie.phtmlsą wśród brakujących. Może powinniśmy zmienić pytanie u góry i przeczytać: Poprawka bezpieczeństwa Magento SUPEE-6482, Co nie jest załatane ?
Fiasco Labs,
1
@ Amit Bera, przepraszam, został dodany przez Magento w Dodane 4 sierpnia 2015 w magentocommerce.com/download : Pobierz -> łatki Magento Community Edition -> SUPEE-6482
Andhi Irawan
4

Przeczytaj dokumentację Magento dotyczącą tego wydania, odpowiedź jest tam: http://merch.docs.magento.com/ce/user_guide/Magento_Community_Edition_User_Guide.html#magento/release-notes-ce-1.9.2.1.html

ChrisB123
źródło
5
Chociaż pouczające, rozważ skopiowanie odpowiedniej sekcji do tego wątku. Odpowiedź tylko na link nie jest najlepszą odpowiedzią, ponieważ linki mają zwyczaj znikania (szczególnie linki do dokumentacji Magento!)
philwinkle
1
@philwinkle - Heh, tak, wszyscy tam byliśmy. MagEbayVaporation (x_x) łączy wiele stron.
Fiasco Labs,
2

Ta łatka, podobnie jak inne najnowsze łaty, zawiera wiele poprawek dotyczących kopiowania, licencji i literówek. Wprowadza także kilka literówek z tego, co widziałem.

Wygląda na to, że część poprawek zabezpieczeń dotyczy dezynfekcji danych wejściowych użytkownika dla 4 różnych potencjalnych ataków.

Daniel Smith
źródło