Patch Keamanan SUPEE-10266 - Kemungkinan masalah?


36

Patch keamanan baru keluar untuk Magento 1, mengatasi 13 masalah APPSEC

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

Masalah umum apa yang harus Anda perhatikan saat menerapkan tambalan ini?

SUPEE-10266, Magento Commerce 1.14.3.6 dan Open Source 1.9.3.6 berisi beberapa peningkatan keamanan yang membantu menutup pemalsuan permintaan lintas situs (CSRF), kebocoran data yang tidak sah, dan kerentanan eksekusi kode jarak jauh pengguna Admin yang diautentikasi. Rilis ini juga mencakup perbaikan untuk masalah reload gambar dan pembayaran menggunakan checkout satu langkah.


Menghadapi masalah ketika melamar ke 1.9.3.2 - magento.stackexchange.com/questions/193451/…
Shrenik

Jawaban:


13

Beberapa informasi penting dibagikan di sini. Sebagian besar file dari Magento backend. Daftar file:

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

Yang penting perlu periksa tiga file ini.

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 / code / core / Mage / Checkout / controllers / CartController.php kondisi tambahan periksa id pelanggan :

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 / Sales / Model / Resource / Order / Item / Collection.php menambahkan metode tambahan addFilterByCustomerId dalam koleksi.

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

app / code / core / Mage / Core / Model / File / Validator / Image.php

jika 'general / reprocess_images / active' false maka abaikan pemrosesan gambar. CATATAN: Jika Anda mematikan pemrosesan ulang gambar, maka proses unggah gambar Anda dapat menyebabkan risiko keamanan

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) {

Semoga bermanfaat. kupikir


Bisakah Anda menentukan seberapa tepatnya kita harus memeriksa CartController.php dan Collection.php masalah yang mungkin terjadi. Di mana tepatnya mencari kemungkinan gangguan di situs web?
Ikon

Saya telah memperbarui situs tambalan keamanan 3, ketiga situs tersebut menimpa dua file ini. Periksa dan perbarui kedua file ini dengan hati-hati. Tidak ada Gitches terjadi di semua 3 situs
Rama Chandran M

10

EE 1.14.2.4

Mengetik pada baris 726 patch: autocomplete="new-pawwsord" ( app/design/adminhtml/default/default/template/backup/dialogs.phtml)

Patch tampaknya melewatkan 2 file frontend:

Ditambal:

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

Tidak ditambal:

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


Juga jangan lupa untuk memeriksa override lokal ... Saya harus secara manual menambal override codepool lokal app\design\adminhtml\default\default\template\sales\order\view\info.phtml


Lihat quasiobject jawaban 's untuk masalah checkout onepage. Tiket dukungan perusahaan dibuat, menunggu tanggapan dari Magento. Jika Anda tidak ingin menunggu tambalan yang diperbarui, perbaikan potensial adalah dengan mengubah statment "lain" app\design\frontend\enterprise\default\template\giftcardaccount\onepage\payment\scripts.phtmluntuk memasukkan elemen form_key seperti:
if (($('p_method_' + methodName) && $('p_method_' + methodName).checked) || elements[i].name == 'form_key') { ...


CE 1.9.2.4

Mengetik pada baris 694 patch: autocomplete="new-pawwsord" ( app/design/adminhtml/default/default/template/backup/dialogs.phtml)

Ekstensi TrueOrderEdit perlu ditambal ... ubah echo $_groupNameke echo $this->escapeHtml($_groupName)dalam file berikut:

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


Akhirnya, file templat inti ini mungkin juga harus ditambal dengan pembaruan $ _groupName yang sama:

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


Semua Versi 1.X

Jika Anda telah menghapus /downloaderfolder (atau /downloader/template) dari basis kode Anda, maka Anda mungkin harus mengedit file patch .sh secara manual dan menghapus bagian terakhir, dimulai dengandiff --git downloader/template/login.phtml downloader/template/login.phtml

Mengenai kesalahan Kunci Rahasia Tidak Valid , silakan lihat jawaban saya di sini: Magento 1.9 Kunci Rahasia Tidak Valid. Harap segarkan halaman


Saya juga menemukan kesalahan ketik untuk patch 1.7.0.2. autocomplete = "new-pawwsord". Apakah ini mempengaruhi operasi kode? Jika demikian, mungkin versi2 tambalan di jalan?
Ikon

Terutama kesalahan ketik dalam kode yang bertanggung jawab untuk trik FireFox. "Ini adalah bidang tersembunyi boneka untuk mengelabui firefox dari pengisian kata sandi secara otomatis" ... sepertinya tidak ada yang penting sama sekali.
Ikon

@kmdsax Saya mendapat tambalan dari dukungan untuk memperbaiki masalah ini. Memperbarui jawaban saya dengan detail.
quasiobject

bisakah Anda membantu saya untuk memecahkan kesalahan saya magento.stackexchange.com/q/204446/57334
zus

9

Kami di MageHost.pro menemukan masalah dalam tambalan untuk Magento 1.9.1.1, berkas tambalanPATCH_SUPEE-10266_CE_1.9.1.1_v1-2017-09-15-04-59-56.sh

Kesalahan:

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

Saya memperbaikinya dengan mengganti baris 454-472 dengan 454-471 dari PATCH_SUPEE-10266_CE_1.9.1.0_v1-2017-09-13-06-34-33.sh

Kode lama, baris 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.'));

Kode baru, baris 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) {

Sudahkah Anda melihat ke versi lain? Jika ya, apakah ada masalah yang sama?
Ikon

1
@Icon Kami menguji 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. Semua versi telah menginstal semua tambalan sebelumnya. Satu-satunya dengan kesalahan patch adalah ce-1.9.1.1.
Jeroen Vermeulen - MageHost

6

Hanya 1 kunci formulir yang tampaknya telah ditambahkan dalam tambalan ini.

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

Jadi, jika Anda mengalami kesulitan menghapus widget dari panel admin pastikan url penghapusan Anda dihasilkan oleh blok, dan Anda tidak memiliki penggantian blok ini.


bagaimana saya bisa mengatasi magento.stackexchange.com/q/204446/57334 ini ?
zus

5

Tidak mungkin untuk checkout di EE 1.11+

Dalam app/design/frontend/enterprise/default/template/giftcardaccount/onepage/payment/scripts.phtmlkode validasi kunci formulir telah dihapus dan memecah seluruh checkout, info lebih lanjut di sini: https://magento.stackexchange.com/a/193442/2380

Solusi untuk saat ini (sebagai V2 untuk EE 1.11+ akan dirilis untuk mengatasi masalah itu): kembalikan file template untuk keduanya enterprise/defaultdan rwd/entreprisetema.

Perbedaan antara tambalan dan versi

EDIT: 1.9.3.6 dirilis sehingga info ini tidak lagi relevan

Salah satu masalah utama yang telah diangkat untuk saat ini adalah 1.9.3.5 hilang 3 tambalan keamanan dari tambalan. Jadi saya sangat menyarankan untuk hanya menambal dan belum memperbarui ke 1.9.3.5


Apakah Anda memiliki informasi lebih lanjut tentang ini, seperti contoh file yang belum ditambal di 1.9.3.5?
Luke Rodgers

Apakah ini masih berlangsung untuk CE / Open Source? Untuk EE / Commerce tidak tersedia unduhan 1.14.3.5, hanya 1.14.3.6.
7ochem

Pada halaman pengunduhan CE / Open Source juga hanya ada 1.9.3.6 (sejak 14 September katanya) dan tidak ada 1.9.3.5 lagi
7ochem

4
1.9.3.6 dirilis kemarin, info ini tidak lagi relevan.
Ryan Hoerr

5

Masih berusaha menentukan apakah ini unik untuk toko kami, karena templat khusus. Namun, itu rusak dengan tambalan yang diterapkan dan tidak rusak ketika kami kembali. Saya ingin memposting kalau-kalau orang lain dapat melaporkan hal yang sama.

Di EE 1.14.2.0, kami tidak dapat maju melewati langkah Informasi Pembayaran checkout dengan tambalan diterapkan. Kami saat ini hingga SUPEE-9767 v2 sebelum menerapkan tambalan baru.

Masalah kami tampaknya berasal dari mereka menghapus || elements[i].name == 'form_key'dari:

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

Itu dihapus dari enablePaymentMethodsloop. Itu tampaknya membiarkan input form_key tersembunyi formulir dinonaktifkan dan karenanya tidak diteruskan ke controller ketika dikirimkan.

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

Kemudian, $this->_validateFormKey()gagal dan controller tidak mengembalikan apa pun.


Pembaruan 1 (2017-09-18) : Saya menyerahkan tiket ke dukungan Magento pada hari Jumat dan diberi tahu bahwa "[belum] dilaporkan oleh pedagang mana pun". Alih-alih mengirim cadangan, saya mencoba menduplikasi pada instalasi bersih 1.14.2.4 dan 1.14.3.4 dengan tambalan yang berlaku. Saya dapat menggandakan dan merespons tiket. Menunggu respons baru.

Catatan: Sistem> Konfigurasi> Admin> Keamanan> Aktifkan Validasi Kunci Formulir Saat Checkout harus "Ya". Jika "Tidak", Anda tidak akan melihat masalah.


Pembaruan 2 (2017-09-18) : Melihat bahwa saya tidak dapat menduplikasi masalah dengan 1.14.3.6, tetapi ketika saya memeriksa file templat di atas, || elements[i].name == 'form_key'masih ada. Sepertinya tambalan seharusnya tidak menghapusnya. Mengirim informasi ini ke dukungan Magento juga.


Pembaruan 3 (2017-09-20): Saya baru saja mendapatkan tambalan untuk memperbaiki masalah untuk 1.14.0.0-1.14.3.4, yang hanya mengembalikan form_keybaris ke templat. Minta dukungan untuk SUPEE-10348.


Masalah yang sama di sini pada 1.14.2.4
kmdsax

Terima kasih @kmdsax. Saya juga mengirimkan tiket dan menunggu untuk mendapatkan konfirmasi dari dukungan.
quasiobject

Sudahkah Anda mencoba mereplikasi kesalahan yang sama pada versi 1.9.2.4 CE?
Ikon

1
@ Icon saya belum. Saya bekerja untuk satu pedagang dan kami adalah EE. Namun, saya tidak berpikir itu akan terpengaruh karena ini adalah blok skrip kartu hadiah EE. Itu seharusnya tidak ada di CE.
quasiobject

4

Ketika Anda pergi ke Magento Connect, dan setelah ketika Anda mengklik "Kembali ke Admin" di sudut kanan atas halaman. Setelah kembali ke dasbor admin, Anda mendapatkan pesan kesalahan

pesan kesalahan merah : "Kunci Rahasia Tidak Valid. Harap segarkan halaman."

Setelah Anda me-refresh halaman, itu hilang.


Diperbarui: 15 September 2017

Jika Anda masuk ke admin Magento, katakanlah Dasbor. Tanpa keluar dari panel Dashboard Anda pergi dan membuka jendela browser lain di browser yang sama dan pergi ke example.com/admin, itu akan masuk otomatis dan menampilkan pesan yang persis sama

pesan kesalahan merah : "Kunci Rahasia Tidak Valid. Harap segarkan halaman."

Sejauh ini satu-satunya masalah yang saya temukan. Saya bahkan tidak yakin apakah ini masalah yang solid karena pesannya hilang setelah refresh.


Mungkin ini berasal dari penutupan Magento Connect: magento.com/blog/magento-news/…
Kevin Krieger

1
@KalvinKlien Saya juga di 1.7.0.2. Saya melihat pesan ini setiap kali saya bolak-balik antara admin dan Magneto Connect (/ pengunduh). Saya hanya mencoba mencari tahu apakah orang lain juga melihatnya .. Sepertinya bukan masalah besar.
Ikon

3
Saya melihat ini di 1.9.2.1 juga. Seseorang telah mengajukan laporan bug di pelacak bug Magento .
Michael Thessel

1
Ini kesalahan dalam Mage_Adminhtml_Controller_Action :: preDispatch (): if ($_keyErrorMsg != '') { Mage::getSingleton('adminhtml/session')->addError($_keyErrorMsg); };seharusnyaif (!$_isValidFormKey){ Mage::getSingleton('adminhtml/session')->addError($_keyErrorMsg); };
Laura

1
hmmmm, ini adalah solusi parsial sejauh ini. Saya masih melihat kesalahan dari waktu ke waktu, tidak yakin apakah ada pengontrol lain yang memiliki masalah ini
Kalvin Klien

4

Saya bertanya Dukungan Magento tentang masalah berikut

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

Mereka menjawab saya pagi ini dan merilis patch baru PATCH_SUPEE-10348 .

Magento baru saja menyelesaikan masalah dengan melakukan pengembalian dalam file ini.

Indeks: aplikasi / desain / antarmuka / perusahaan / default / template / giftcardaccount / onepage / pembayaran / scripts.phtml
================================================== =================
--- aplikasi / desain / antarmuka / perusahaan / default / template / giftcardaccount / onepage / pembayaran / scripts.phtml
+++ aplikasi / desain / antarmuka / perusahaan / default / template / giftcardaccount / onepage / pembayaran / scripts.phtml
@@ -35,6 +35,7 @@
             if (elemen [i] .name == 'pembayaran [metode]'
                 || elements [i] .name == 'payment [use_customer_balance]'
                 || elements [i] .name == 'payment [use_reward_points]'
+ || elements [i] .name == 'form_key'
             ) {
                 methodName = elemen [i] .value;
                 if ((gratis && methodName == 'gratis') || (! gratis && methodName! = 'gratis')) {

1
Dapat mengonfirmasi bahwa tambalan ini tersedia di portal mitra.
Luke Rodgers

Terima kasih untuk informasi. Saya lupa memberikan informasi itu
cghisi

3

Saya mengalami masalah dengan templat email, CSS khusus, dan modman. Jika Anda misalnya memiliki tema berdasarkan rwd/default, memiliki kebiasaan skin/frontend/package/theme/css/email-inline.cssdan file skin Anda dimasukkan melalui modman melalui symlink, CSS tidak akan ditambahkan ke templat email setelah menerapkan SUPEE-10266. Masalahnya adalah bahwa dalam Mage_Core_Model_Email_Template_Abstract::_getCssFileContent, beberapa pemeriksaan telah diperkenalkan .:

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

Saya menyelesaikannya dengan hack kotor dengan app/code/local/Mage/Core/Model/Email/Template/Abstract.phpoverride untuk saat ini. Saya harus melemahkan cek, sehingga dimungkinkan untuk memuat file CSS dari direktori modman:

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

Ini tidak akan memeriksa apakah path menyertakan direktori skin lengkap lagi, tetapi hanya akan memeriksa apakah path berisi string /skindan jika tidak termasuk .., yang seharusnya mencegah serangan traversal direktori.


1
Menghapus jawaban saya karena jawaban Anda lebih lengkap. Retas yang saya gunakan adalah untuk memeriksa if (strpos($filename, '..') === false) { $positionSkinDirectory = 1; }baris setelah $positionSkinDirectoryawalnya diatur. Ini seharusnya membantu menghindari direktori traversal.
Peter O'Callaghan

Saya ingin mencatat, bahwa melemahnya dalam hal ini berarti, membuatnya rentan lagi, dan menggunakan solusi ini adalah risiko keamanan langsung
Flyingmana

@ PeterO'Callaghan ide bagus! Saya baru saja menambahkan cek Anda ke kode jawaban saya.
Simon

@Flyingmana ini harus menurunkan risiko secara dramatis.
Simon

2

Berikut adalah daftar lengkap tambalan yang dipengaruhi oleh autocomplete="new-pawwsord"kesalahan ketik:

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

Di Magento 1.8.1 saya mengalami masalah dengan file-file berikut:

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

Saya berakhir dengan mengunduh versi Magento terbaru yang TIDAK mengandung tambalan. Dalam hal ini Magento 1.9.3.4 .

Mengganti file 'rusak' dengan file dari unduhan memperbaiki masalahnya. Saya berhasil menerapkan tambalan.

Tapi hati-hati: Saya sarankan untuk mengembalikan 3 file setelah menambal lagi dan mengedit file secara manual.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.