Güvenlik Düzeltme Eki SUPEE-10266 - Olası sorunlar?


36

Magento 1 için 13 APPSEC sorununu ele alan yeni bir güvenlik yaması çıktı

https://magento.com/security/patches/supee-10266

Bu yamayı uygularken nelere dikkat etmeniz gerekiyor?

SUPEE-10266, Magento Commerce 1.14.3.6 ve Açık Kaynak 1.9.3.6, siteler arası sahteciliğin sahteciliği (CSRF), yetkisiz veri sızıntısı ve kimliği doğrulanmış Admin kullanıcısı uzaktan kod yürütme güvenlik açıklarını kapatmaya yardımcı olan birden fazla güvenlik geliştirmesi içerir. Bu sürümlerde ayrıca, resim yeniden yükleme ile ilgili sorunlar ve tek adımlı ödeme yöntemini kullanan ödemeler de bulunur.


Yanıtlar:


13

Önemli bilgilerin bir kısmı, burada paylaşmaktadır. Magento'nun arka uçlarındaki dosyaların çoğu. Dosya listeler:

app/code/core/Mage/Admin/Model/Session.php
app/code/core/Mage/Adminhtml/Block/Notification/Grid/Renderer/Notice.php
app/code/core/Mage/Adminhtml/Block/Widget/Form/Container.php
app/code/core/Mage/Adminhtml/Controller/Action.php
app/code/core/Mage/Adminhtml/Model/LayoutUpdate/Validator.php
app/code/core/Mage/Adminhtml/controllers/CustomerController.php
app/code/core/Mage/Adminhtml/controllers/Newsletter/TemplateController.php
app/code/core/Mage/Checkout/controllers/CartController.php
app/code/core/Mage/Core/Model/Email/Template/Abstract.php
app/code/core/Mage/Core/Model/File/Validator/Image.php
app/code/core/Mage/Core/Model/Session/Abstract/Varien.php
app/code/core/Mage/Core/etc/config.xml
app/code/core/Mage/Rss/Helper/Data.php
app/code/core/Mage/Sales/Model/Resource/Order/Item/Collection.php
app/code/core/Zend/Serializer/Adapter/PhpCode.php
app/design/adminhtml/default/default/template/backup/dialogs.phtml
app/design/adminhtml/default/default/template/catalog/product/edit/options/type/file.phtml
app/design/adminhtml/default/default/template/customer/tab/view.phtml
app/design/adminhtml/default/default/template/login.phtml
app/design/adminhtml/default/default/template/notification/toolbar.phtml
app/design/adminhtml/default/default/template/oauth/authorize/form/login.phtml
app/design/adminhtml/default/default/template/resetforgottenpassword.phtml
app/design/adminhtml/default/default/template/sales/order/view/history.phtml
app/design/adminhtml/default/default/template/sales/order/view/info.phtml
app/design/install/default/default/template/install/create_admin.phtml
app/locale/en_US/Mage_Adminhtml.csv
downloader/template/login.phtml

Önemli olan bu üç dosyayı kontrol etmek.

app/code/core/Mage/Checkout/controllers/CartController.php
app/code/core/Mage/Sales/Model/Resource/Order/Item/Collection.php
app/code/core/Mage/Core/Model/File/Validator/Image.php

App / kod / çekirdek / Mage / Ödeme / kontrolörleri / CartController.php ek koşul kontrol müşteri kimliği :

diff --git app/code/core/Mage/Checkout/controllers/CartController.php app/code/core/Mage/Checkout/controllers/CartController.php
index 7c9f28f..bee6034 100644
--- app/code/core/Mage/Checkout/controllers/CartController.php
+++ app/code/core/Mage/Checkout/controllers/CartController.php
@@ -284,14 +284,16 @@ class Mage_Checkout_CartController extends Mage_Core_Controller_Front_Action
     public function addgroupAction()
     {
         $orderItemIds = $this->getRequest()->getParam('order_items', array());
+        $customerId   = $this->_getCustomerSession()->getCustomerId();

-        if (!is_array($orderItemIds) || !$this->_validateFormKey()) {
+        if (!is_array($orderItemIds) || !$this->_validateFormKey() || !$customerId) {
             $this->_goBack();
             return;
         }

         $itemsCollection = Mage::getModel('sales/order_item')
             ->getCollection()
+            ->addFilterByCustomerId($customerId)
             ->addIdFilter($orderItemIds)
             ->load();
         /* @var $itemsCollection Mage_Sales_Model_Mysql4_Order_Item_Collection */
@@ -709,4 +711,14 @@ class Mage_Checkout_CartController extends Mage_Core_Controller_Front_Action
         $this->getResponse()->setHeader('Content-type', 'application/json');
         $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
     }
+
+    /**
+     * Get customer session model
+     *
+     * @return Mage_Customer_Model_Session
+     */
+    protected function _getCustomerSession()
+    {
+        return Mage::getSingleton('customer/session');
+    }
 }

app / code / core / Mage / Satış / Model / Kaynak / Sipariş / Öğe / Collection.php eklendi Koleksiyonda ilave yöntem addFilterByCustomerId .

diff --git app/code/core/Mage/Sales/Model/Resource/Order/Item/Collection.php app/code/core/Mage/Sales/Model/Resource/Order/Item/Collection.php
index ee83ad48..c02afdf 100644
--- app/code/core/Mage/Sales/Model/Resource/Order/Item/Collection.php
+++ app/code/core/Mage/Sales/Model/Resource/Order/Item/Collection.php
@@ -152,4 +152,20 @@ class Mage_Sales_Model_Resource_Order_Item_Collection extends Mage_Sales_Model_R
         $this->getSelect()->where($resultCondition);
         return $this;
     }
+
+    /**
+     * Filter by customerId
+     *
+     * @param int|array $customerId
+     * @return Mage_Sales_Model_Resource_Order_Item_Collection
+     */
+    public function addFilterByCustomerId($customerId)
+    {
+        $this->getSelect()->joinInner(
+            array('order' => $this->getTable('sales/order')),
+            'main_table.order_id = order.entity_id', array())
+            ->where('order.customer_id IN(?)', $customerId);
+
+        return $this;
+    }
 }

Uygulama / kod / çekirdek / Mage / çekirdek / Model / Dosya / Doğrulayıcı / image.php

Eğer 'general / reprocess_images / active' false ise, görüntü yeniden işlemeyi atlayın. NOT: Yeniden işleme görüntülerini kapatırsanız, görüntü yükleme işleminiz güvenlik risklerine neden olabilir

diff --git app/code/core/Mage/Core/Model/File/Validator/Image.php app/code/core/Mage/Core/Model/File/Validator/Image.php
index 9d57202..6a939c3 100644
--- app/code/core/Mage/Core/Model/File/Validator/Image.php
+++ app/code/core/Mage/Core/Model/File/Validator/Image.php
@@ -91,6 +91,13 @@ class Mage_Core_Model_File_Validator_Image
         list($imageWidth, $imageHeight, $fileType) = getimagesize($filePath);
         if ($fileType) {
             if ($this->isImageType($fileType)) {
+                /**
+                 * if 'general/reprocess_images/active' false then skip image reprocessing.
+                 * NOTE: If you turn off images reprocessing, then your upload images process may cause security risks.
+                 */
+                if (!Mage::getStoreConfigFlag('general/reprocess_images/active')) {
+                    return null;
+                }
                 //replace tmp image with re-sampled copy to exclude images with malicious data
                 $image = imagecreatefromstring(file_get_contents($filePath));
                 if ($image !== false) {

Umarım yardımcı olur. bence


Lütfen CartController.php ve Collection.php için olası sorunları nasıl tam olarak kontrol etmemiz gerektiğini belirtebilir misiniz? Web sitesinde olası aksaklıkları tam olarak nerede arayabilirim?
Simge,

Güvenlik düzeltme eki 3 sitelerini güncelleştirdim, üç sitenin tümü bu iki dosyayı geçersiz kılar. Bu iki dosyayı dikkatlice kontrol edip güncelleyin. Her 3 alanda da hiçbir Gitch yoktur
Rama Chandran M

10

EE 1.14.2.4

Düzeltme ekinin 726 satırındaki yazım hatası: autocomplete="new-pawwsord" ( app/design/adminhtml/default/default/template/backup/dialogs.phtml)

Yama 2 ön uç dosyasını kaçırıyor gibi görünüyor:

yamalı:

app\design\adminhtml\default\default\template\oauth\authorize\form\login-simple.phtml

Yamalı değil:

app\design\frontend\base\default\template\oauth\authorize\form\login-simple.phtml app\design\frontend\rwd\default\template\oauth\authorize\form\login-simple.phtml


Ayrıca, yerel geçersiz kılmaları kontrol etmeyi de unutmayın ... Yerel bir codepool geçersiz kılma işlemini el ile düzeltmek zorunda kaldım. app\design\adminhtml\default\default\template\sales\order\view\info.phtml


Bkz quasiobject bir onepage çıkış sorunu için cevabını. Magento'dan yanıt bekleyen kurumsal destek bileti oluşturuldu. Güncellenmiş bir düzeltme ekini beklemek istemiyorsanız, olası bir düzeltme, "else" app\design\frontend\enterprise\default\template\giftcardaccount\onepage\payment\scripts.phtmldurumundaki form_key öğesini şu şekilde içerecek şekilde değiştirmektir:
if (($('p_method_' + methodName) && $('p_method_' + methodName).checked) || elements[i].name == 'form_key') { ...


CE 1.9.2.4

Yamadaki 694 satırındaki yazım hatası: autocomplete="new-pawwsord" ( app/design/adminhtml/default/default/template/backup/dialogs.phtml)

TrueOrderEdit uzatma yamalı gerekiyor ... değişikliği echo $_groupNameiçin echo $this->escapeHtml($_groupName)aşağıdaki dosyalardaki:

app\design\adminhtml\default\default\template\orderedit\sales\order\view\edit.phtml app\design\adminhtml\default\default\template\orderedit\sales\order\view\history.phtml app\design\adminhtml\default\default\template\orderedit\sales\order\view\info.phtml


Son olarak, bu çekirdek şablon dosyası muhtemelen aynı $ _groupName güncellemeyle de düzeltilmelidir:

app\design\adminhtml\default\default\template\sales\order\view\edit.phtml


Tüm 1.X Sürümleri

/downloaderKlasörü (veya /downloader/template) kod tabanınızdan silmişseniz, .sh düzeltme ekini el ile düzenlemeniz ve son bölümden başlayarak kaldırmanız gerekebilir.diff --git downloader/template/login.phtml downloader/template/login.phtml

İlgili Geçersiz Gizli Anahtar : hatası, burada benim cevap bakınız Magento 1.9 Geçersiz Gizli Anahtarı. Lütfen sayfayı yenile


Ayrıca 1.7.0.2 yaması için yazım hatası buldum. Otomatik tamamlama = "Yeni-pawwsord". Her durumda kod çalışmasını etkiler mi? Öyleyse, belki yama 2 sürümü yolda?
Simge

Yazım hatası, yazım kurallarına göre FireFox hilesinden sorumludur. “Bu, firefox'u şifreyi otomatik doldurmaktan kandırmak için sahte bir alan.” ... hiç önemli bir şeye benzemiyor.
İkon

@ kmdsax Sorunu çözmek için destek ekibinden bir yama aldım. Cevabımı detaylarla güncellendi.
quasiobject

pls benim hatayı çözmek için bana yardımcı olabilir misiniz magento.stackexchange.com/q/204446/57334
zus

9

Bizler MageHost.pro Magento 1.9.1.1, yama dosyası için yama bir sorun farkPATCH_SUPEE-10266_CE_1.9.1.1_v1-2017-09-15-04-59-56.sh

Hata:

checking file app/code/core/Mage/Core/Model/File/Validator/Image.php
Hunk #1 FAILED at 90.
1 out of 1 hunk FAILED

Ben 454-472 satırları değiştirerek PATCH_SUPEE-10266_CE_1.9.1.0_v1-2017-09-13-06-34-33.sh

Eski kod, satır 454-472:

diff --git app/code/core/Mage/Core/Model/File/Validator/Image.php app/code/core/Mage/Core/Model/File/Validator/Image.php
index 7f7b9d0..8a28da2 100644
--- app/code/core/Mage/Core/Model/File/Validator/Image.php
+++ app/code/core/Mage/Core/Model/File/Validator/Image.php
@@ -90,7 +90,13 @@ class Mage_Core_Model_File_Validator_Image
         $fileInfo = getimagesize($filePath);
         if (is_array($fileInfo) and isset($fileInfo[2])) {
             if ($this->isImageType($fileInfo[2])) {
-                return null;
+                /**
+                 * if 'general/reprocess_images/active' false then skip image reprocessing.
+                 * NOTE: If you turn off images reprocessing, then your upload images process may cause security risks.
+                 */
+                if (!Mage::getStoreConfigFlag('general/reprocess_images/active')) {
+                    return null;
+                }
             }
         }
         throw Mage::exception('Mage_Core', Mage::helper('core')->__('Invalid MIME type.'));

Yeni kod, satır 454-471:

diff --git app/code/core/Mage/Core/Model/File/Validator/Image.php app/code/core/Mage/Core/Model/File/Validator/Image.php
index 8618bca..d3aba19 100644
--- app/code/core/Mage/Core/Model/File/Validator/Image.php
+++ app/code/core/Mage/Core/Model/File/Validator/Image.php
@@ -90,6 +90,13 @@ class Mage_Core_Model_File_Validator_Image
         list($imageWidth, $imageHeight, $fileType) = getimagesize($filePath);
         if ($fileType) {
             if ($this->isImageType($fileType)) {
+                /**
+                 * if 'general/reprocess_images/active' false then skip image reprocessing.
+                 * NOTE: If you turn off images reprocessing, then your upload images process may cause security risks.
+                 */
+                if (!Mage::getStoreConfigFlag('general/reprocess_images/active')) {
+                    return null;
+                }
                 //replace tmp image with re-sampled copy to exclude images with malicious data
                 $image = imagecreatefromstring(file_get_contents($filePath));
                 if ($image !== false) {

Başka versiyonlara baktın mı? Eğer evet ise, aynı problem mevcut mu?
İkon

1
@Icon Biz test ettik ce-1.6.0.0 ce-1.6.1.0 ce-1.6.2.0 ce-1.7.0.0 ce-1.7.0.1 ce-1.7.0.2 ce-1.8.0.0 ce-1.8.1.0 ce-1.9.0.0 ce -1.9.0.1 ce-1.9.1.0 ce-1.9.1.1 ce-1.9.2.0 ce-1.9.2.1 ce-1.9.2.2 ce-1.9.2.3 ce-1.9.2.4 ce-1.9.3.0 ce-1.9.3.1 ce -1.9.3.2 ce-1.9.3.3 ce-1.9.3.4. Tüm sürümler önceki tüm yamaları kurmuştu. Yama hatası olan tek kişi ce-1.9.1.1 idi.
Jeroen Vermeulen - MageHost 17:17

6

Bu düzeltme ekine yalnızca 1 form anahtarı eklenmiş gibi görünüyor.

diff --git app/code/core/Mage/Adminhtml/Block/Widget/Form/Container.php app/code/core/Mage/Adminhtml/Block/Widget/Form/Container.php
index 8756f3f..1c5cf37 100644
--- app/code/core/Mage/Adminhtml/Block/Widget/Form/Container.php
+++ app/code/core/Mage/Adminhtml/Block/Widget/Form/Container.php
@@ -96,7 +96,10 @@ class Mage_Adminhtml_Block_Widget_Form_Container extends Mage_Adminhtml_Block_Wi

     public function getDeleteUrl()
     {
-        return $this->getUrl('*/*/delete', array($this->_objectId => $this->getRequest()->getParam($this->_objectId)));
+        return $this->getUrl('*/*/delete', array(
+            $this->_objectId => $this->getRequest()->getParam($this->_objectId),
+            Mage_Core_Model_Url::FORM_KEY => $this->getFormKey()
+        ));
     }

Bu nedenle, yönetici panelinden bir widget'ı silme konusunda herhangi bir zorluk yaşarsanız, silme url’nizin blok tarafından oluşturulduğundan ve bu bloktan geçersiz kıldığınızdan emin olun.


Bu magento.stackexchange.com/q/204446/57334 nasıl çözebilirim ?
zus

5

EE 1.11+’de ödeme yapmak imkansız

In app/design/frontend/enterprise/default/template/giftcardaccount/onepage/payment/scripts.phtmlForm tuşunun doğrulama kodu kaldırıldı ve burada tüm ödeme, daha fazla bilgi kırar: https://magento.stackexchange.com/a/193442/2380

Geçici çözüm şimdilik (EE için V2 1.11+ konunun o adrese çıkacak): her ikisi için şablon dosyasını geri alma enterprise/defaultve rwd/entreprisetemalar.

Yama ve sürüm arasındaki farklar

EDIT: 1.9.3.6 yayımlandı, bu nedenle bu bilgi artık alakalı değil

Şimdilik gündeme gelen ana sorunlardan biri 1.9.3.5’in yamadan 3 güvenlik yaması eksik olmasıdır. Bu nedenle, sadece yamayı tavsiye ediyorum ve henüz 1.9.3.5’e güncelleme yapmamayı tavsiye ediyorum.


1.9.3.5'teki yamalı dosyanın bir örneği gibi bu konuda daha fazla bilginiz var mı?
Luke Rodgers

Bu hala CE / Açık Kaynak için devam ediyor mu? EE / Ticaret için, 1.14.3.5 indirilemez, sadece 1.14.3.6.
07:

CE / Açık Kaynak indirme sayfasında artık Ayrıca sadece (diyor Sep 14 beri) 1.9.3.6 ve hiçbir 1.9.3.5 orada
7ochem

4
1.9.3.6 dün yayımlandı, bu bilgi artık alakalı değil.
Ryan Hoerr

5

Yine de bu, özel şablonlar nedeniyle mağazamıza özgü olup olmadığını belirlemeye çalışıyor. Ancak, düzeltme eki uygulanmış ve geri döndüğümüzde kırılmamış olarak kırılmıştır. Başkalarının da aynı şeyi bildirmesi durumunda yazı göndermek istedim.

EE 1.14.2.0'da, uygulanan düzeltme eki ile ödeme işleminde Ödeme Bilgileri adımını geçemedik. Yeni yamayı uygulamadan önce SUPEE-9767 sürüm 2'ye kadar günceliz.

Bizim meselemiz onlardan || elements[i].name == 'form_key'uzaklaşmaktan kaynaklanıyor gibi görünüyor :

app/design/frontend/enterprise/default/template/giftcardaccount/onepage/payment/scripts.phtml

Döngüden kaldırıldı enablePaymentMethods. Bu, formun gizli form_key girişini devre dışı bırakıyor ve bu nedenle gönderildiğinde denetleyiciye geçmiyor gibi görünüyor.

<input name="form_key" type="hidden" value="X" disabled="">

Ardından, $this->_validateFormKey()başarısız olur ve denetleyici hiçbir şey döndürmez.


Güncelleme 1 (2017-09-18) : Cuma günü Magento desteğine bir bilet verdim ve "henüz herhangi bir tüccar tarafından rapor edilmedi" söylendi. Yedekleme göndermek yerine, uygulanan yamaları uygulayarak temiz bir 1.14.2.4 ve 1.14.3.4 kurulumunda kopyalamaya çalıştım. Biletimi kopyalayıp cevapladım. Yeni bir cevap bekliyorum.

Not: Sistem> Yapılandırma> Yönetici> Güvenlik> Form Anahtar Doğrulamasını Etkinleştir Ödeme Sırasında Checkout "Evet" olmalıdır. "Hayır" ise, sorunu görmezsiniz.


Güncelleme 2 (2017/09/18) : Ben olabilir fark değil 1.14.3.6 konuyu yinelenen ancak yukarıda şablon dosyasını işaretlendiğinde, || elements[i].name == 'form_key'hala var. Görünüşe göre yamalar çıkarmamış olmalıydı. Bu bilgiyi Magento desteğine de gönderdim.


Güncelleme 3 (2017-09-20): Sadece 1.14.0.0–1.14.3.4 olan sorunu düzeltmek için bir düzeltme eki aldım, bu da form_keyçizgiyi şablona geri yükler . SUPEE-10348 için destek isteyin.


Aynı konu burada 1.14.2.4
kmdsax

@ Kmdsax teşekkür ederiz. Ayrıca bir bilet gönderdim ve destek almak için onay bekliyorum.
quasiobject

1.9.2.4 CE sürümünde aynı hatayı çoğaltmayı denediniz mi?
İkon

1
@Icon yapmadım. Tek bir tüccar için çalışıyorum ve biz EE. Ancak, bir EE hediye kartı komut dosyası bloğu olduğundan, bunun etkileneceğini sanmıyorum. Bu CE'de olmamalıdır.
quasiobject

4

Magento Connect'e gittiğinizde ve sonra sayfanın sağ üst köşesindeki "Yöneticiye Dön" ü tıkladığınızda. Yönetici kontrol paneline geri döndüğünüzde bir hata mesajı alıyorsunuz

kırmızı hata mesajı: "Geçersiz Gizli Anahtar. Lütfen sayfayı yenileyin."

Sayfayı yeniledikten sonra, gider.


Güncelleme: Eylül 15, 2017

Eğer Magento admin’e giriş yaparsanız, Dashboard diyelim. Gösterge Tablosu panelinden çıkış yapmadan aynı tarayıcıda başka bir tarayıcı penceresi açıp example.com/admin adresine gidersiniz, otomatik giriş yapar ve tam olarak aynı mesajı gösterir

kırmızı hata mesajı: "Geçersiz Gizli Anahtar. Lütfen sayfayı yenileyin."

Şimdiye kadar bulduğum tek konu bu. Mesaj yenilemeden sonra gider gibi sağlam bir sorun olup olmadığından bile emin değilim.


Belki de bu Magento Connect'i kapatmaktan geliyor: magento.com/blog/magento-news/…
Kevin Krieger

1
@KalvinKlien Ayrıca 1.7.0.2 'de de varım. Bu mesajı admin ve Magneto Connect (/ downloader) arasında gidip geldiğimde görüyorum. Sadece başkalarının da görüp görmediğini öğrenmeye çalışıyorum .. Büyük bir sorun gibi görünmüyor.
Simge

3
Bunu 1.9.2.1'de de görüyorum. Birileri zaten Magento hata izleyicisine bir hata raporu gönderdi .
Michael Thessel,

1
Mage_Adminhtml_Controller_Action :: preDispatch () 'daki bir hata: if ($_keyErrorMsg != '') { Mage::getSingleton('adminhtml/session')->addError($_keyErrorMsg); };olmalıdırif (!$_isValidFormKey){ Mage::getSingleton('adminhtml/session')->addError($_keyErrorMsg); };
Laura

1
hmmmm, bu şu ana kadar kısmi bir çözüm. Hala zaman zaman bu hatayı görüyorum, bu sorunu yaşayan başka bir denetleyici olup olmadığından emin değilim
Kalvin Klien

4

Magento Desteği'ne şu sorunu sordum

app/design/frontend/enterprise/default/template/giftcardaccount/onepage/payment/scripts.phtml

Bu sabah bana cevap verdiler ve yeni bir PATCH_SUPEE-10348 yaması yayınladılar .

Magento, bu dosyaya geri dönerek sorunu çözdü.

Dizin: app / tasarım / frontend / enterprise / default / template / giftcardaccount / onepage / payment / scripts.phtml
================================================== =================
--- app / tasarım / frontend / kurumsal / varsayılan / şablon / giftcardaccount / onepage / ödeme / scripts.phtml
+++ uygulama / tasarım / frontend / enterprise / default / template / giftcardaccount / onepage / payment / scripts.phtml
@@ -35,6 +35,7 @@
             if (elements [i] .name == 'ödeme [yöntem]'
                 || elements [i] .name == 'ödeme [use_customer_balance]'
                 || elements [i] .name == 'ödeme [use_reward_points]'
+ || elemanlar [i] .name == 'form_key'
             ) {
                 methodName = elements [i] .value;
                 if ((free && methodName == 'free') || (! free && methodName! = 'free')) {

1
Bu yamanın ortak portalında bulunduğunu onaylayabilir.
Luke Rodgers

Bilgi için teşekkürler. Bu bilgiyi vermeyi unuttum
cghisi

3

E-posta şablonları, özel CSS ve modman ile ilgili bir sorunla karşılaştım. Örneğin, bir temaya sahipseniz rwd/default, bir özelliğe sahipseniz skin/frontend/package/theme/css/email-inline.cssve cilt dosyalarınız bir sembolik bağlantı aracılığıyla modman aracılığıyla eklenmişse, SUPEE-10266'yı uyguladıktan sonra CSS posta şablonuna eklenmeyecektir. Mesele şu ki Mage_Core_Model_Email_Template_Abstract::_getCssFileContent, bazı kontroller getirildi:

                 '_theme' => $theme,
             )
         );
+        $filePath = realpath($filePath);
+        $positionSkinDirectory = strpos($filePath, Mage::getBaseDir('skin'));
+        $validator = new Zend_Validate_File_Extension('css');

-        if (is_readable($filePath)) {
+        if ($validator->isValid($filePath) && $positionSkinDirectory !== false && is_readable($filePath)) {
             return (string) file_get_contents($filePath);
         }

Şimdilik app/code/local/Mage/Core/Model/Email/Template/Abstract.phpgeçersiz kılma ile kirli bir kesmek ile çözdü . CSS dosyasını modman dizininden yüklemek mümkün olduğu için çekimi zayıflatmak zorunda kaldım:

$filePath = realpath($filePath);
$baseDirectory = Mage::getBaseDir();
$fullSkinDirectory = Mage::getBaseDir('skin');
$relativeSkinDirectory = substr($fullSkinDirectory, strlen($baseDirectory));
$positionSkinDirectory = strpos($filePath, $relativeSkinDirectory);
$validator = new Zend_Validate_File_Extension('css');
$noDirectoryTraversal = strpos($filename, '..') === false;

if ($validator->isValid($filePath) && $positionSkinDirectory !== false && $noDirectoryTraversal
    && is_readable($filePath)) {
    return (string) file_get_contents($filePath);
}

Bu yol bir daha komple cilt dizini içeriyorsa kontrol etmeyeceği, fakat yolu dize içeriyorsa, yalnızca kontrol edecek /skinve onu içermiyorsa .., müdür kastetmek saldırıları önlemek gereken.


1
Cevabım sizinki gibi tamamlandı. Kullandığım hack , başlangıçta ayarlandıktan if (strpos($filename, '..') === false) { $positionSkinDirectory = 1; }sonra satırın kontrol edilmesiydi $positionSkinDirectory. Bu, dizin geçişini önlemeye yardımcı olur.
Peter O'Callaghan

Bu durumda zayıflamanın, onu tekrar savunmasız bırakmak anlamına geldiğini ve bu çözümü kullanmanın doğrudan bir güvenlik riski olduğunu
belirtmek isterim

@ PeterO'Callaghan iyi fikir! Ben sadece onay kodumu benim kontrol eklendi.
Simon

@ Flyingmana bu riski önemli ölçüde azaltmalıdır.
Simon

2

autocomplete="new-pawwsord"Yazım hatası tarafından etkilenen düzeltme eklerinin tam listesi :

CE 1.7.0.0-1.7.0.2      PATCH_SUPEE-10266_CE_1.7.0.2_v1-2017-09-13-06-27-12.sh:664
CE 1.8.0.0-1.8.1.0      PATCH_SUPEE-10266_CE_1.8.1.0_v1-2017-09-13-06-28-08.sh:665
CE 1.9.0.0-1.9.0.1      PATCH_SUPEE-10266_CE_1.9.0.1_v1-2017-09-13-06-31-01.sh:665
CE 1.9.1.0              PATCH_SUPEE-10266_CE_1.9.1.0_v1-2017-09-13-06-34-33.sh:733
CE 1.9.1.1              PATCH_SUPEE-10266_CE_1.9.1.1_v1-2017-09-15-04-59-56.sh:734
CE 1.9.2.0-1.9.2.4      PATCH_SUPEE-10266_CE_1.9.2.4_v1-2017-09-13-06-37-37.sh:694
CE 1.9.3.0-1.9.3.2      PATCH_SUPEE-10266_CE_1.9.3.2_v1-2017-09-13-06-38-58.sh:694
CE 1.9.3.3-1.9.3.4      PATCH_SUPEE-10266_CE_1.9.3.4_v1-2017-09-13-06-39-58.sh:694
EE 1.12.0.0             PATCH_SUPEE-10266_EE_1.12.0.0_v1-2017-09-13-08-09-14.sh:696
EE 1.12.0.1-1.12.0.2    PATCH_SUPEE-10266_EE_1.12.0.2_v1-2017-09-13-08-06-57.sh:696
EE 1.13.0.0-1.13.1.0    PATCH_SUPEE-10266_EE_1.13.1.0_v1-2017-09-13-08-04-05.sh:696
EE 1.14.0.0-1.14.0.1    PATCH_SUPEE-10266_EE_1.14.0.1_v1-2017-09-13-08-01-04.sh:696
EE 1.14.1.0             PATCH_SUPEE-10266_EE_1.14.1.0_v1-2017-09-13-07-57-59.sh:764
EE 1.14.2.0             PATCH_SUPEE-10266_EE_1.14.2.0_v1-2017-09-13-07-07-14.sh:764
EE 1.14.2.1-1.14.2.4    PATCH_SUPEE-10266_EE_1.14.2.4_v1-2017-09-13-06-57-21.sh:726
EE 1.14.3.0-1.14.3.2    PATCH_SUPEE-10266_EE_1.14.3.2_v1-2017-09-13-06-53-35.sh:716
EE 1.14.3.3-1.14.3.4    PATCH_SUPEE-10266_EE_1.14.3.3_v1-2017-09-13-06-51-06.sh:716

0

Magento 1.8.1'de aşağıdaki dosyalar ile ilgili sorunlara girdim:

app/code/core/Mage/Core/Model/File/Validator/Image.php
app/code/core/Mage/Core/etc/config.xml
app/locale/en_US/Mage_Adminhtml.csv

Yamayı içermeyen en son Magento versiyonunu indirdim. Bu durumda Magento 1.9.3.4 .

'Bozuk' dosyaları indirilen dosyadan değiştirmek sorunu çözdü. Düzeltme ekini başarıyla uygulayabildim.

Ancak dikkatli olun: Yamaları tekrar ekledikten sonra 3 dosyayı geri almanızı ve dosyaları elle düzenlemenizi öneririm.

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.