Magento güvenlik yaması SUPEE-6482, Yama nedir?


28

Bugün 04.08.2015 yayınlanan yeni bir güvenlik düzeltme eki vardı, bazı meslektaşlar ve ben düzeltme ekini kontrol ettik ve neyin değiştiği hakkında bir tartışma yapmak güzeldi, aynı zamanda birileri, dükkanın etkileyebileceği ve zarar görmeyebilecek olası saldırıları neler olduğunu bilen var mı? Bunun olabileceği en kötü şey nedir?

Güncelleme: Ben sadece gönderiyi tamamlamak için bugün gönderilen e-posta magento eklemek istedim. Magento E-posta Güncellemesi


1
Bugünlerde bir paketlenme olacağına eminim. Ancak, daha önce kontrol ettiyseniz ve bir tartışma yapmak istiyorsanız, devam edin! Düşüncelerinizi ve bulgularınızı paylaşın!
mam08ixo

2
Yamanın kendisi, hayır. 1.9.2.1 için yapılan tam kurulumun bu değişiklikler için incelenmesi gerekiyor, bu noktada sadece 4 güvenlik sorununu ele alıyor gibi görünüyor
Fiasco Labs

2
Tam bir yükseltme yapmanız veya backport yapmanız gerekecek 1.9.2.0 => CMS Engelleme ve Widget'ı önbelleğe alma magento-1921/app/code/core/Mage/Cms/Block/Block.phpvemagento-1921/app/code/core/Mage/Cms/Block/Widget/Block.php
Fiasco Labs

2
merch.docs.magento.com/ce/user_guide/… - Bir sonraki yamanın ne zaman geleceğini merak ettim, son günlerde başlıklara çok fazla odaklanıldığını gördüm. Ve işte orada!
hakre

2
@hakre - Bu başlıklar aslında API’de olmadıkça, başlıkları eklemeden önce yama içeriğini okurum. Tam indirme, http denetleyicisi ve javascript çerez şablonunda bazı yamalar içeriyor, ancak 6482 yaması yok.
Fiasco Labs,

Yanıtlar:


13

Gerçek güvenlik düzeltme eki ( SUPEE-6482 ) yalnızca aşağıdaki iki dosyayı etkiler ve bir API düzeltme ekidir.

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

1.9.2.1 kurulumunun tamamı tamamen farklı bir konudur. Yama eklenmiş diğer iki öğeyi bulmak için kaynak kodunu 1.9.2.0 ile 1.9.2.1 arasında değiştirirdim.

Sürüm notları tam yükleyici içindir, sürüm notlarında belirtilen tüm öğeleri içerip içermediğini görmek için yamayı kontrol etmeniz gerekir.

Yamasız bir sunucu çalıştırmanın etkileri:

  1. Doğrulanmamış Başlıkları Kullanarak Siteler Arası Komut Dosyası Çalıştırma => Önbellek Zehirlenmesi
  2. Magento SOAP API'sine Otomatik Yüklenen Dosya Ekleme => Uzaktan kod otomatik yükleme
  3. Hediye Kayıt Arama'da XSS => Çerez hırsızlığı ve kullanıcı kimliğine bürünme
  4. WSDL Dosyasındaki SSRF Güvenlik Açığı => Dahili sunucu bilgi sızıntısı ve uzak dosya dahil etme

NOT: Tam yükleme arşivinde yamalı olan yamalar olmayan dosyalar, 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()) ?>';

5
Eksik dosyaların en kritik "Doğrulanmamış Başlıkları Kullanarak Siteler Arası Komut Dosyası Çalıştırma" sorununu çözdüğünü düşünüyorum. "Hediye Kayıt Defterinde XSS" sorunu, Hediye Kayıt Defteri yalnızca bir EE özelliği olduğundan, CE sürümünün yama belgelerine yanlışlıkla eklenmiş gibi görünüyor.
Aad Mathijssen,

1
Evet, yine de CE kurulumuma eksik değişiklikleri uygulamanın ve Magento'nun bunu çözmesini beklerken bize döndüklerinde bir V2 yaması göndermesini beklemenin yeterince önemli olmadığını düşündüm. Çerez bileşenlerinde kullanılan önbellek zehirlenmesi ve filtresiz kullanıcı girişi bir biggie gibi görünüyor.
Fiasco Labs,

1
Magento belgeleri güncelledi: "Doğrulanmamış Başlıkları Kullanarak Siteler Arası Komut Dosyası Çalıştırma" ve "Hediye Kayıt Defteri Arama'da XSS" sorunları "Yalnızca Magento Enterprise Edition İçin" olarak işaretlendi. Ancak bu arada, Magento CE 1.9.2.1 "Doğrulanmamış Başlıkları Kullanarak Siteler Arası Komut Dosyası Yazma" sorunu veya en azından bir kısmı için düzeltmeler içeriyor.
Aad Mathijssen

1
Heh, CE kısa eylemde değişiyor. CE'nin Dilek Listesinde yok, ancak dokümantasyon değişikliği değil, kesinlikle "Onaylanmamış Başlıklar" sorununa ihtiyacı var. Oh, pekala ... beklediğimizden daha fazlası.
Fiasco Labs,

3
Kayıt için - testlerimize göre - Doğrulanmamış Başlıkları Kullanan Siteler Arası Komut Dosyası Yazma bir CE güvenlik açığı değildir. Herhangi biri bir POC’ya CE güvenlik açığı olduğunu belirtebilirse , lütfen magento.com/security adresine gidin ve bildirin .
Benmarks

9

Değişikliklere ve hangi yan etkilerin bekleneceğine bakmaktan nefret ediyorum.

EE 1.13.1.0 sürümünde aşağıdaki dosyalar değiştirildi:

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
  • İçinde Adapter/Soap.php, kimlik doğrulama verilerine urlencoding eklenir. Bunun olumsuz bir yan etkisi olmamalıdır. Sonuçların wsdlUrlgeçerli olmasını sağlar. Bu değişiklik olmadan, biri URL’yi etkileyebilir
  • Product/Api/V2.php: Burada aktarılan verinin bir nesne olup olmadığı kontroller. Bu normal şartlar altında olmamalıdır.
  • içinde Request/Http.phpve PageCache/Model/Processor.phpHTTP HOST alırken onay eklenir. Bu, belirtilen başlık enjeksiyonlarını kapsamaktadır. Bu kontrol yalnızca HTTP ana bilgisayarında ;veya varsa, uygulanır ,, bu nedenle bu, gerçek yaşam sistemlerinde kritik olmamalıdır / olumsuz yan etkisi olmamalıdır.
  • içinde cookie.phtmlkaçması ilave edilir. Yani bu dosyanın üzerine yazarsanız, temanıza iletilmesi gerekir.
  • için benzer giftregistry/search/form.phtml

Özetlemek gerekirse, yamanın uygulanmasının herhangi bir olumsuz yan etkisinin olmaması gerektiğini söyleyebilirim. Değişiklikleri .phtmldosyalarınıza aktarmayı unutmayın.


1
Onay için teşekkürler, kaçan başlık başlığı ve çerez bileşeninin CE'ye geri gönderilmesi kolaydır.
Fiasco Labs,

1
Limana gerek yok. İndirme alanında CE için de yama sürümleri var.
Alex,

5

İşin garibi, EE yamasının aşağıdaki dosyalarda değişiklikler içermesi:

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

CE ise, eşdeğer bir versiyon için değil.

SUPEE-6482CE sürümünde eksik olan bir şey olduğunu tahmin ediyorum ve yakında bir V2 piyasaya sürülebilir.


Ben de aynı şeyi düşündüm!
rob3000

2
Evet, doğru farkettiniz. 1.9.2.0 ve 1.9.2.1 kurulum arşivlerini bölerek elde ettim. Bundan dolayı tamamen yamalı bir CE kurulumum var, devam ettim ve bahsi geçen iki dosyayı elle yadım. Js çerez dosyasının, eğer o dosyaya sahipseniz özel şablonunuza eklenmesi gerekir. Muhtemelen istek denetleyicisini bir yama olarak atlamışlardı, çünkü daha önce yamalı bir dosyayı yamalamak zorunda kalıyorlardı ve CE aşkı olmadı.
Fiasco Labs

1
Üretim ortamına yayılmadan birkaç gün önce "beklemek" için bir neden daha (ve bu günleri canlı yayınlanmadan önce daha iyi kontroller yapmak için kullanın). Bugün, Magento Backend'de bir güncelleme bildirimi daha var (yalnızca 4 güvenlik açığı yerine 2 hakkındaki bildirim). Her neyse, en azından pazartesi gününe kadar yaşamak için bekleyeceğim.
DarkCowboy

1
Magento sürüm notlarını güncelledi: merch.docs.magento.com/ce/user_guide/… Bazı yamalar sadece etkili bir şekilde EE. Fakat neden bu 2 dosyanın çekirdek tabanlı, CE yamasıyla ilgilenmediğini hala anlamadım, CE 1.9.2.1'e entegre edildiler ...
Antoine

4

CE & EE basımında aşağıdaki sorunu gidermek için Magento sürüm yaması SUPEE-6482

Magento Topluluğu Sürümü için:

  • Magento SOAP API'sine Otomatik Yüklenen Dosya İçeriği
  • WSDL Dosyasındaki SSRF Güvenlik Açığı

Magento Enterprise Edition için

  • Magento SOAP API'sine Otomatik Yüklenen Dosya İçeriği
  • WSDL Dosyasındaki SSRF Güvenlik Açığı
  • Doğrulanmamış Başlıkları Kullanan Siteler Arası Komut Dosyası Oluşturma

Hediye Sicili Aramasında XSS

Sınıfta değişiklik yapmak

  • Mage_Api_Model_Server_Adapter_Soap

  • Mage_Catalog_Model_Product_Api_V2

Mage_Api_Model_Server_Adapter_Soap'taki Değişiklikler

             : $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'de değişiklik

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

Daha fazla bilgi için: http://www.amitbera.com/magento-security-patch-supee-6482/


1
Merhaba Amit Bera (@ amit-bera), SUPEE-6482 yamasını Magento 1.9.2.1 ayrı bir zip formunda nereden bulabilirim?
Andhi Irawan

2
@ Andhi, magento 1.9.2.1 zaten kod yapısına yama kodu eklenmiş, bu yüzden SUPEE-6482 uygulamanıza gerek yok
Amit Bera

1
@ Amit Bera, Hala Magento 1.9.1.0 kullanıyorsanız, 1.9.2.1 sürümüne yükseltme yapılıyor mu? Yani sadece SUPEE-6428 yamasını kurabilir miyim?
Andhi Irawan

3
Doğrulanmamış başlık yamasının CE yamaları içerisinde olmadığını, aşağıdaki dosyalara dokunulmadığını => app/code/core/Mage/Core/Controller/Request/Http.phpve app/design/frontend/base/default/template/page/js/cookie.phtmleksiklerin arasında olduklarını unutmayın. Belki de soruyu en üste okumak için değiştirmeliyiz: Magento güvenlik yaması SUPEE-6482, Ne yamalı değil ?
Fiasco Labs

1
@ Amit Bera, özür dilerim, Magento tarafından 4 Ağustos 2015 tarihinde Eklendi, magentocommerce.com/download tarihinde indirildi : İndir -> Magento Topluluk Sürümü Yamaları -> SUPEE-6482
Andhi Irawan

4

5
Bilgilendirici olsa da, ilgili bölümü bu konuya kopyalamayı düşünün. Yalnızca bağlantıya verilen bir cevap, bağlantıların kaybolma alışkanlığı olması nedeniyle en iyi cevap değildir (özellikle Magento dokümantasyon bağlantıları!)
philwinkle

1
@ philwinkle - Heh, evet hepimiz oradaydık. MagEbayVaporation (x_x) bağlantıları bolca var.
Fiasco Labs,

2

Bu yama, son zamanlarda görülen diğer yamalar gibi, çok sayıda kopya, lisans ve yazım hatası düzeltmesi içeriyor. Ayrıca gördüğümden birkaç yazım hatası da getiriyor.

Gerçek güvenlik düzeltme eki parçası, 4 farklı potansiyel saldırı için kullanıcı girişini sterilize ediyor gibi görünüyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.